Quantum 
							
						 
					 
					
						
						
							
						
						334bfeecea 
					 
					
						
						
							
							[client] egl: correctly handle mixing imgui and non-imgui overlays  
						
						... 
						
						
						
						This allows the full frame to be damaged when both types are visible. 
						
						
					 
					
						2021-07-23 15:53:59 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						947eac52f6 
					 
					
						
						
							
							[client] renderers: treat -1 as full damage and 0 as no overlay  
						
						... 
						
						
						
						This makes everything consistent. 
						
						
					 
					
						2021-07-22 18:57:34 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						515f08d2da 
					 
					
						
						
							
							[client] egl: transform overlay damage coordinates  
						
						... 
						
						
						
						EGL uses bottom-up y-coordinate while we use top-down. 
						
						
					 
					
						2021-07-22 18:32:18 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						58ab77d237 
					 
					
						
						
							
							[client] egl: avoid overflowing damage buffer  
						
						... 
						
						
						
						We allocate 10 rectangles for overlay damage as agreed on Discord. 
						
						
					 
					
						2021-07-22 18:32:18 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						fdbdf6f167 
					 
					
						
						
							
							[client] app: implement new overlay rendering framework  
						
						... 
						
						
						
						This change set implements a framework for overlays to be registered
that make use of ImGui. See `overlay/fps` for a simple implementation
example. 
						
						
					 
					
						2021-07-22 17:27:30 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						27e3be3778 
					 
					
						
						
							
							[client] egl: free desktop damage after rendering  
						
						
						
						
					 
					
						2021-07-22 13:12:07 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						08293c8721 
					 
					
						
						
							
							[egl] damage: only update the damage vbo if there was a new frame  
						
						
						
						
					 
					
						2021-07-21 17:29:46 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						6389a06903 
					 
					
						
						
							
							[client] main: let the renderer know if it's rendering a whole new frame  
						
						... 
						
						
						
						While the renderer can internally track this it would be better to
simply provide this information to the renderer directly so it can make
better decisions on how best to update the screen. 
						
						
					 
					
						2021-07-21 17:26:48 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						1a88996c47 
					 
					
						
						
							
							[client] opengl: don't include <GL/glx.h>  
						
						... 
						
						
						
						The OpenGL renderer backend should not depend on any particular
implementation of OpenGL, as it's used by both X11 and Wayland. 
						
						
					 
					
						2021-07-21 12:33:01 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						563ad18f4e 
					 
					
						
						
							
							[client] egl: improve cursor damage logic  
						
						... 
						
						
						
						1. Use atomics and return exact cursor positions from egl_cursor_render
   to avoid race conditions between cursor render and update.
2. Instead of messing with lastCursorValid in various overlays, simply use
   the hasOverlay/hadOverlay logic for cursor damage. This simplifies the
   logic greatly.
As a result, I believe all cursor-related artifacts are fixed.
Note to reviewer: as atomic_init and atomic_store are implemented as macros,
it is currently not possible to pass structs as compound literals due to the
comma being interpreted as an argument separator by the preprocessor. 
						
						
					 
					
						2021-07-20 11:29:13 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						b8effaf42c 
					 
					
						
						
							
							[client] egl: use glGetError and codes for errors in gl* functions  
						
						... 
						
						
						
						We used to use DEBUG_EGL_ERROR for gl* functions, which just yields
EGL_SUCCESS even when there are errors. 
						
						
					 
					
						2021-07-19 19:36:46 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						7c872d2d9e 
					 
					
						
						
							
							[client] egl: properly use OpenGL ES  
						
						... 
						
						
						
						Instead of using the desktop <GL/gl.h>, we properly use the OpenGL ES 3.x
headers. Also, we now use GL_EXT_buffer_storage for MAP_PERSISTENT_BIT_EXT
and MAP_COHERENT_BIT_EXT as the core versions are only available in desktop
OpenGL 4.4. Similarly, we need GL_EXT_texture_format_BGRA8888 for GL_BGRA_EXT
as GL_BGRA is desktop-only. 
						
						
					 
					
						2021-07-18 20:44:32 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						ab31040d5f 
					 
					
						
						
							
							[client] all: use imgui for FPS/UPS display  
						
						
						
						
					 
					
						2021-07-18 20:43:17 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						42d8f31eba 
					 
					
						
						
							
							[client] imgui: use ES 3.0 and remove glew dependency  
						
						... 
						
						
						
						If we specifically tell ImGui's OpenGL 3.x backend to target OpenGL ES 3.0,
then no extension loader is necessary. 
						
						
					 
					
						2021-07-18 18:50:12 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						c6a6230a56 
					 
					
						
						
							
							[client] egl: revert "only copy damaged areas when using dmabuf"  
						
						... 
						
						
						
						This reverts commit a14de25661 
						
						
					 
					
						2021-07-18 18:48:35 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						a14de25661 
					 
					
						
						
							
							[client] egl: only copy damaged areas when using dmabuf  
						
						... 
						
						
						
						This speeds up the copy significantly when the frame only has small
amount of damage. 
						
						
					 
					
						2021-07-18 17:41:29 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						a4bf3c8088 
					 
					
						
						
							
							[client] egl: use debug context and make it configurable  
						
						... 
						
						
						
						The boolean option egl:debug is used to control whether we want debug
output or not. This defaults to true to aid in debugging. 
						
						
					 
					
						2021-07-18 15:55:50 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						6472c28473 
					 
					
						
						
							
							[client] egl: upload damage vertices with glBufferSubData  
						
						... 
						
						
						
						This avoids the issues surrounding glMapBuffer and glMapBufferRange in
OpenGL ES. 
						
						
					 
					
						2021-07-18 15:55:27 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						f49f2af6cd 
					 
					
						
						
							
							[client] egl: implement error reporting callback  
						
						... 
						
						
						
						This reports useful information from OpenGL on supported platforms. 
						
						
					 
					
						2021-07-18 13:54:16 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						061b9ba6c2 
					 
					
						
						
							
							[client] egl: use vertex array objects in model.c  
						
						... 
						
						
						
						This eliminates the need to bind the buffers and set up the vertices on
every frame. 
						
						
					 
					
						2021-07-18 11:58:47 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						d4f8426ae4 
					 
					
						
						
							
							[client] egl: correctly clean up vertex buffer objects  
						
						... 
						
						
						
						The code used to use hasBuffer, which was never set to true, so buffer
objects were always leaked instead. 
						
						
					 
					
						2021-07-18 11:58:47 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						2b3f31700b 
					 
					
						
						
							
							[client] egl: implement frame damage display  
						
						
						
						
					 
					
						2021-07-18 10:41:50 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						00eb26a34f 
					 
					
						
						
							
							[client] egl: do not use damage when overlays are visible  
						
						... 
						
						
						
						This allows the overlays to show up correctly. 
						
						
					 
					
						2021-07-18 10:41:50 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						442ab318fd 
					 
					
						
						
							
							[client] egl: use desktop frame damage information  
						
						
						
						
					 
					
						2021-07-18 10:41:50 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						eb357fa58a 
					 
					
						
						
							
							[client] egl: use glCopyTexSubImage2D to copy when using DMA  
						
						... 
						
						
						
						This removes the need for the driver to allocate texture storage and deleting
the previous allocation on every frame update. 
						
						
					 
					
						2021-07-18 10:34:21 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						f08163fd72 
					 
					
						
						
							
							[client] imgui: added imgui to the client and OpenGL/EGL renderers  
						
						
						
						
					 
					
						2021-07-17 21:09:51 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						7b95cc72ed 
					 
					
						
						
							
							[client] opengl: do not render a sync pending texture  
						
						
						
						
					 
					
						2021-07-02 21:48:31 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						d24b031fc5 
					 
					
						
						
							
							[client] opengl: cosmetics  
						
						
						
						
					 
					
						2021-07-02 20:10:25 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						55d185ef9c 
					 
					
						
						
							
							[client] opengl: no need to re-bind the already bound texture  
						
						
						
						
					 
					
						2021-07-02 19:51:22 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						9cbc255448 
					 
					
						
						
							
							[client] opengl: do not prematurely delete overlay textures  
						
						... 
						
						
						
						Overlay textures exist for the lifetime of the renderer and as such
should not be deleted when the resolution changes. 
						
						
					 
					
						2021-07-02 19:50:31 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						212cc32097 
					 
					
						
						
							
							[client] opengl: deconfigure is idempotent  
						
						
						
						
					 
					
						2021-07-02 19:50:15 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						f07e4839b1 
					 
					
						
						
							
							[client] egl: fix dmabuf support  
						
						
						
						
					 
					
						2021-06-08 20:51:09 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						964403b4f8 
					 
					
						
						
							
							[client] egl: tex is now an array, so check it properly for assignment  
						
						
						
						
					 
					
						2021-06-08 20:45:37 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						20d20f5c8a 
					 
					
						
						
							
							[client] egl: fix incorrect texture usage  
						
						... 
						
						
						
						The existing code would overwrite the texture's data even if the texture
is currently being used to render to screen. This changeset generates a
texture for each buffer preventing this invalid usage. 
						
						
					 
					
						2021-06-08 20:41:22 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						24d0aa0c18 
					 
					
						
						
							
							[all] normalize copyright on all source files  
						
						
						
						
					 
					
						2021-06-06 11:53:05 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						e70cfd84fb 
					 
					
						
						
							
							[client] egl: use eglSwapBuffersWithDamageKHR for cursor-only updates  
						
						... 
						
						
						
						Instead of damaging the entire surface when rendering a cursor move,
we can use the EGL_KHR_swap_buffers_with_damage extension to only
damage the part of the window covered by the cursor. This should
reduce the cursor movement latency on Wayland. 
						
						
					 
					
						2021-05-19 18:56:36 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						f9a9953071 
					 
					
						
						
							
							[client] egl: use new util_hasGLExt helper to check extensions  
						
						... 
						
						
						
						We previously used strstr, which can be prone to false positives when
the name of one extension is a substring of another extension.
This commit creates the helper function util_hasGLExt, which asserts
that the substring found in extension list is bounded by either spaces
or the beginning/end of the string. 
						
						
					 
					
						2021-05-19 15:58:54 +10:00 
						 
				 
			
				
					
						
							
							
								eater 
							
						 
					 
					
						
						
							
						
						62725bcb9d 
					 
					
						
						
							
							[client] egl: show error for glMapBufferRange instead of glBindbuffer  
						
						
						
						
					 
					
						2021-05-04 10:30:03 +10:00 
						 
				 
			
				
					
						
							
							
								vroad 
							
						 
					 
					
						
						
							
						
						5d5eb47598 
					 
					
						
						
							
							[client] egl: do not leak fence when using DMABUF  
						
						
						
						
					 
					
						2021-04-25 14:32:17 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						84e14edfe7 
					 
					
						
						
							
							[client] opengl: remove dependency on SDL  
						
						
						
						
					 
					
						2021-02-26 09:44:34 +11:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						8771103abb 
					 
					
						
						
							
							[client] all: fix more maybe-uninitialized when -O3 is in use  
						
						... 
						
						
						
						Closes  #475  
					
						2021-02-23 20:25:30 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						30b5287c38 
					 
					
						
						
							
							[client] egl: add option to set initial scale algorithm  
						
						... 
						
						
						
						The option is egl:scale. The scale algorithm number is displayed on the
alert to make it easier to specify the number for the option. 
						
						
					 
					
						2021-02-22 17:25:06 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						0512c88ea8 
					 
					
						
						
							
							[client] egl: make scale algorithms toggleable  
						
						... 
						
						
						
						The $escape+S keybinding now cycles through the available scale algorithms.
This allows the user to switch between algorithms if the automatic detection
turns out to be problematic.
The algorithms are renumbered so that 0 can be LG_SCALE_AUTO. 
						
						
					 
					
						2021-02-22 17:25:06 +11:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						28024de314 
					 
					
						
						
							
							[client] egl: fix gcc false maybe-uninitialized positives  
						
						
						
						
					 
					
						2021-02-22 01:38:26 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						63ec2dc01b 
					 
					
						
						
							
							[client] egl: destroy cached EGLImages when changing format  
						
						... 
						
						
						
						Reusing cached EGLImages while the frame format has changed will result
in visual artifacts. We should instead destroy the EGLImages and let
them be recreated. 
						
						
					 
					
						2021-02-21 19:07:46 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						48be58378c 
					 
					
						
						
							
							[client] opengl: scale UI elements on high DPI displays  
						
						... 
						
						
						
						This is done by simply scaling up the rendered text bitmap. 
						
						
					 
					
						2021-02-21 19:06:53 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						fd50426dda 
					 
					
						
						
							
							[client] egl: scale UI elements on high DPI displays  
						
						... 
						
						
						
						This is done by actually rendering the text at high DPI. 
						
						
					 
					
						2021-02-21 19:06:53 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						89bdaec95a 
					 
					
						
						
							
							[client] opengl: support scaled UI for high DPI displays  
						
						
						
						
					 
					
						2021-02-21 19:06:53 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						3ec73e2444 
					 
					
						
						
							
							[client] egl: support scaled UI for high DPI displays  
						
						
						
						
					 
					
						2021-02-21 19:06:53 +11:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						b35e19fc27 
					 
					
						
						
							
							[client] renderer: add interface for high DPI rendering  
						
						
						
						
					 
					
						2021-02-21 19:06:53 +11:00