This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
gpu.TickWork() may lock the texture_cache and buffer_cache mutexes, which are owned by the thread prior to invoking TickWork().
Defer invoking gpu.TickWork() until the scope ends, where the owned mutexes are released.
* gl_graphics_pipeline: Improve shader builder synchronization
Make use of GLsync objects to ensure better synchronization between shader builder threads and the main context
* gl_graphics_pipeline: Make built_fence access threadsafe
* gl_graphics_pipeline: Use GLsync objects only when building in parallel
* gl_graphics_pipeline: Replace GetSync calls with non-blocking waits
The spec states that a ClientWait on a Fence object ensures the changes propagate to the calling context
Per the spec, bufSize is the number of integers that will be written, in this case, 1.
Also, the length argument is optional if the information of the number of elements written is not needed.
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.
The vulkan ImageView held a reference to its source image for rescale status checking. This pointer is sometimes invalidated when the texture cache slot_images container is resized.
To avoid an invalid pointer dereference, the ImageView now holds a reference to the container itself.
The image view itself can be queried to see if it is being rescaled or not, removing the need to pass the upscale/down shift factors from the texture cache.