summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_device.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2020-03-16renderer_opengl: Detect Nvidia Nsight as a debugging toolReinUsesLisp1-5/+0
Use getenv to detect Nsight.
2020-03-14gl_device: Add option to check GL_EXT_debug_tool.bunnei1-0/+5
2019-11-25gl_device: Deduce indexing bug from device instead of heuristicReinUsesLisp1-1/+0
The heuristic to detect AMD's driver was not working properly since it also included Intel. Instead of using heuristics to detect it, compare the GL_VENDOR string.
2019-11-23gl_rasterizer: Disable compute shaders on IntelReinUsesLisp1-0/+5
Intel's proprietary driver enters in a corrupt state when compute shaders are executed. For now, disable these.
2019-11-23gl_shader_cache: Remove dynamic BaseBinding specializationReinUsesLisp1-1/+20
2019-11-08gl_shader_decompiler: Add safe fallbacks when ARB_shader_ballot is not availableReinUsesLisp1-0/+5
2019-11-02gl_rasterizer: Upload constant buffers with glNamedBufferSubDataReinUsesLisp1-0/+5
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.
2019-09-21shader/image: Implement SULD and remove irrelevant codeReinUsesLisp1-0/+5
* Implement SULD as float. * Remove conditional declaration of GL_ARB_shader_viewport_layer_array.
2019-09-04gl_device: Disable precise in fragment shaders on bugged driversReinUsesLisp1-0/+6
2019-08-21shader_ir: Implement VOTEReinUsesLisp1-0/+5
Implement VOTE using Nvidia's intrinsics. Documentation about these can be found here https://developer.nvidia.com/reading-between-threads-shader-intrinsics Instead of using portable ARB instructions I opted to use Nvidia intrinsics because these are the closest we have to how Tegra X1 hardware renders. To stub VOTE on non-Nvidia drivers (including nouveau) this commit simulates a GPU with a warp size of one, returning what is meaningful for the instruction being emulated: * anyThreadNV(value) -> value * allThreadsNV(value) -> value * allThreadsEqualNV(value) -> true ballotARB, also known as "uint64_t(activeThreadsNV())", emits VOTE.ANY Rd, PT, PT; on nouveau's compiler. This doesn't match exactly to Nvidia's code VOTE.ALL Rd, PT, PT; Which is emulated with activeThreadsNV() by this commit. In theory this shouldn't really matter since .ANY, .ALL and .EQ affect the predicates (set to PT on those cases) and not the registers.
2019-07-08gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shadersReinUsesLisp1-0/+5
This commit implements gl_ViewportIndex and gl_Layer in vertex and geometry shaders. In the case it's used in a vertex shader, it requires ARB_shader_viewport_layer_array. This extension is available on AMD and Nvidia devices (mesa and proprietary drivers), but not available on Intel on any platform. At the moment of writing this description I don't know if this is a hardware limitation or a driver limitation. In the case that ARB_shader_viewport_layer_array is not available, writes to these registers on a vertex shader are ignored, with the appropriate logging.
2019-07-06gl_device: Query SSBO alignmentReinUsesLisp1-0/+5
2019-06-21texture_cache: eliminate accelerated depth->color/color->depth copies due to driver instability.Fernando Sahmkow1-5/+0
2019-06-21texture_cache: Implement Buffer Copy and detect Turing GPUs Image CopiesFernando Sahmkow1-0/+5
2019-05-24gl_device: Add test to detect broken component indexingReinUsesLisp1-0/+6
Component indexing on AMD's proprietary driver is broken. This commit adds a test to detect when we are on a driver that can't successfully manage component indexing. It dispatches a dummy draw with just one vertex shader that writes to an indexed SSBO from the GPU with data sent through uniforms, it then reads that data from the CPU and compares the expected output.
2019-05-03gl_shader_decompiler: Declare all possible varyings on physical attribute usageReinUsesLisp1-1/+13
2019-04-14gl_shader_decompiler: Use variable AOFFI on supported hardwareReinUsesLisp1-2/+7
2019-04-10gl_device: Implement interface and add uniform offset alignmentReinUsesLisp1-0/+25