| Age | Commit message (Collapse) | Author |
|
SSBOs and other resources are limited per pipeline on Intel and AMD.
Heuristically reserve resources per stage having in mind the reported
OpenGL limits.
|
|
glBindTextureUnit doesn't support null textures. Skip binding these.
|
|
Intel's proprietary driver enters in a corrupt state when compute
shaders are executed. For now, disable these.
|
|
The current shared memory size seems to be smaller than what the game
actually uses. This makes Nvidia's driver consistently blow up; in the
case of FE3H it made it explode on Qt's SwapBuffers while SDL2 worked
just fine. For now keep this hack since it's still progress over the
previous hardcoded shared memory size.
|
|
|
|
Stage and compute shaders were using a different binding counter.
Normalize these.
|
|
|
|
|
|
|
|
Images were not being bound to draw invocations because these would
require a cache invalidation.
|
|
Local memory size in compute shaders was stubbed with an arbitary size.
This commit specializes local memory size from guest GPU parameters.
|
|
Shared memory was being declared with an undefined size. Specialize from
guest GPU parameters the compute shader's shared memory size.
|
|
Drop the usage of ARB_compute_variable_group_size and specialize compute
shaders instead. This permits compute to run on AMD and Intel
proprietary drivers.
|
|
Instead of specializing shaders to separate texture buffers from 1D
textures, use the locker to deduce them while they are being decoded.
|
|
texture_cache: Use a flat table instead of switch for texture format lookups
|
|
gl_rasterizer: Emulate viewport flipping with ARB_clip_control
|
|
Abstracted ComponentType was not being used in a meaningful way.
This commit drops its usage.
There is one place where it was being used to test compatibility between
two cached surfaces, but this one is implied in the pixel format.
Removing the component type test doesn't change the behaviour.
|
|
shader: Implement FSWZADD and reimplement SHFL
|
|
video_core: Treat implicit conversions as errors
|
|
gl_shader_cache: Fix locker constructors
|
|
|
|
GLSLDecompiler: Correct Texture Gather Offset.
|
|
Properly pass engine when a shader is being constructed from memory.
|
|
Silence GLSL compilation warnings.
|
|
|
|
|
|
|
|
This commit corrects the argument ordering in textureGatherOffset.
|
|
|
|
|
|
|
|
Emulates negative y viewports with ARB_clip_control. This allows us to
more easily emulated pipelines with tessellation and/or geometry shader
stages. It also avoids corrupting games with transform feedbacks and
negative viewports (gl_Position.y was being modified).
|
|
gl_rasterizer: Upload constant buffers with glNamedBufferSubData
|
|
shader/node: Unpack bindless texture encoding
|
|
Global memory is still using the stream buffer when it shouldn't. As a
temporary fix re-enable the stream buffer on compute.
|
|
Nvidia's OpenGL driver maps gl(Named)BufferSubData with some requirements
to a fast. This path has an extra memcpy but updates the buffer without
orphaning or waiting for previous calls. It can be seen as a better
model for "push constants" that can upload a whole UBO instead of 256
bytes.
This path has some requirements established here:
http://on-demand.gputechconf.com/gtc/2014/presentations/S4379-opengl-44-scene-rendering-techniques.pdf#page=24
Instead of using the stream buffer, this commits moves constant buffers
uploads to calls of glNamedBufferSubData and from my testing it brings a
performance improvement. This is disabled when the vendor is not Nvidia
since it brings performance regressions.
|
|
gl_state: Miscellaneous clean up
|
|
rasterizer_accelerated: Add intermediary for GPU rasterizers
|
|
Co-Authored-By: Mat M. <mathew1800@gmail.com>
|
|
This requires removing constness from some methods, but for consistency
it's removed in all methods.
|
|
OpenGL has defaults values we can trust. Remove these.
|
|
|
|
|
|
|
|
|
|
Bindless textures were using u64 to pack the buffer and offset from
where they come from. Drop this in favor of separated entries in the
struct.
Remove the usage of std::set in favor of std::list (it's not std::vector
to avoid reference invalidations) for samplers and images.
|
|
maxwell_3d: Remove unused entries
|
|
|
|
This commit implements the E5B9G9R9 Texture format into the general
system and OpenGL backend.
|
|
Add an intermediary class that implements common functions across GPU
accelerated rasterizers. This avoids code repetition on different
backends.
|