aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
AgeCommit message (Collapse)Author
2019-11-26core/memory: Migrate over GetPointer()Lioncash
With all of the interfaces ready for migration, it's trivial to migrate over GetPointer().
2019-11-26core: Prepare various classes for memory read/write migrationLioncash
Amends a few interfaces to be able to handle the migration over to the new Memory class by passing the class by reference as a function parameter where necessary. Notably, within the filesystem services, this eliminates two ReadBlock() calls by using the helper functions of HLERequestContext to do that for us.
2019-11-26Merge pull request #3143 from ReinUsesLisp/indexing-bugbunnei
gl_device: Deduce indexing bug from device instead of heuristic
2019-11-25gl_shader_decompiler: Fix casts from fp32 to f16ReinUsesLisp
Casts from f32 to f16 zeroes the higher half of the target register.
2019-11-25gl_device: Deduce indexing bug from device instead of heuristicReinUsesLisp
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-24Merge pull request #3158 from ReinUsesLisp/srgb-blitbunnei
gl_texture_cache: Apply sRGB on blits
2019-11-24Merge pull request #3098 from ReinUsesLisp/shader-invalidationsbunnei
gl_shader_cache: Miscellaneous changes to shaders
2019-11-24gl_texture_cache: Apply sRGB on blitsReinUsesLisp
glBlitFramebuffer keeps in mind GL_FRAMEBUFFER_SRGB's state. Enable this depending on the target surface pixel format.
2019-11-23Merge pull request #3141 from ReinUsesLisp/gl-positionbunnei
gl_shader_gen: Apply default value to gl_Position
2019-11-22gl_device: Reserve base bindings on limited devicesReinUsesLisp
SSBOs and other resources are limited per pipeline on Intel and AMD. Heuristically reserve resources per stage having in mind the reported OpenGL limits.
2019-11-22gl_state: Skip null texture bindsReinUsesLisp
glBindTextureUnit doesn't support null textures. Skip binding these.
2019-11-22gl_rasterizer: Disable compute shaders on IntelReinUsesLisp
Intel's proprietary driver enters in a corrupt state when compute shaders are executed. For now, disable these.
2019-11-22gl_shader_cache: Hack shared memory sizeReinUsesLisp
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.
2019-11-22gl_shader_decompiler: Normalize image bindingsReinUsesLisp
2019-11-22gl_shader_decompiler: Normalize cbuf bindingsReinUsesLisp
Stage and compute shaders were using a different binding counter. Normalize these.
2019-11-22gl_rasterizer: Add missing cbuf counter reset on computeReinUsesLisp
2019-11-22gl_shader_cache: Remove dynamic BaseBinding specializationReinUsesLisp
2019-11-22video_core: Unify ProgramType and ShaderStage into ShaderTypeReinUsesLisp
2019-11-22gl_rasterizer: Bind graphics images to draw commandsReinUsesLisp
Images were not being bound to draw invocations because these would require a cache invalidation.
2019-11-22gl_shader_cache: Specialize local memory size for compute shadersReinUsesLisp
Local memory size in compute shaders was stubbed with an arbitary size. This commit specializes local memory size from guest GPU parameters.
2019-11-22gl_shader_cache: Specialize shared memory sizeReinUsesLisp
Shared memory was being declared with an undefined size. Specialize from guest GPU parameters the compute shader's shared memory size.
2019-11-22gl_shader_cache: Specialize shader workgroupReinUsesLisp
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.
2019-11-22shader/texture: Deduce texture buffers from lockerReinUsesLisp
Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded.
2019-11-19gl_shader_gen: Apply default value to gl_PositionReinUsesLisp
Nvidia has sane default output values for varyings, but the other vendors don't apply these. To properly emulate this we would have to analyze the shader header. For the time being, apply the same default Nvidia applies so we get the same behaviour on non-Nvidia drivers.
2019-11-19Merge pull request #3086 from ReinUsesLisp/format-lookupsbunnei
texture_cache: Use a flat table instead of switch for texture format lookups
2019-11-15Merge pull request #3047 from ReinUsesLisp/clip-controlbunnei
gl_rasterizer: Emulate viewport flipping with ARB_clip_control
2019-11-14texture_cache: Drop abstracted ComponentTypeReinUsesLisp
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.
2019-11-14Merge pull request #3081 from ReinUsesLisp/fswzadd-shufflesFernando Sahmkow
shader: Implement FSWZADD and reimplement SHFL
2019-11-13Merge pull request #3084 from ReinUsesLisp/cast-warningsRodrigo Locatti
video_core: Treat implicit conversions as errors
2019-11-09Merge pull request #3082 from ReinUsesLisp/fix-lockersbunnei
gl_shader_cache: Fix locker constructors
2019-11-08video_core: Silence implicit conversion warningsReinUsesLisp
2019-11-08Merge pull request #3080 from FernandoS27/glsl-fixbunnei
GLSLDecompiler: Correct Texture Gather Offset.
2019-11-07gl_shader_cache: Fix locker constructorsReinUsesLisp
Properly pass engine when a shader is being constructed from memory.
2019-11-07gl_shader_cache: Enable extensions only when availableReinUsesLisp
Silence GLSL compilation warnings.
2019-11-07gl_shader_decompiler: Add safe fallbacks when ARB_shader_ballot is not availableReinUsesLisp
2019-11-07shader_ir/warp: Implement FSWZADDReinUsesLisp
2019-11-07gl_shader_decompiler: Reimplement shuffles with platform agnostic intrinsicsReinUsesLisp
2019-11-07GLSLDecompiler: Correct Texture Gather Offset.Fernando Sahmkow
This commit corrects the argument ordering in textureGatherOffset.
2019-11-07gl_rasterizer: Remove front facing hackReinUsesLisp
2019-11-07gl_shader_decompiler: Fix typo "y_negate"->"y_direction"ReinUsesLisp
2019-11-07gl_shader_manager: Remove unused variable in SetFromRegsReinUsesLisp
2019-11-07gl_rasterizer: Emulate viewport flipping with ARB_clip_controlReinUsesLisp
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).
2019-11-06Merge pull request #3057 from ReinUsesLisp/buffer-sub-databunnei
gl_rasterizer: Upload constant buffers with glNamedBufferSubData
2019-11-06Merge pull request #3039 from ReinUsesLisp/cleanup-samplersRodrigo Locatti
shader/node: Unpack bindless texture encoding
2019-11-02gl_rasterizer: Re-enable stream buffer memory due to global memoryReinUsesLisp
Global memory is still using the stream buffer when it shouldn't. As a temporary fix re-enable the stream buffer on compute.
2019-11-02gl_rasterizer: Upload constant buffers with glNamedBufferSubDataReinUsesLisp
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-10-29Merge pull request #3046 from ReinUsesLisp/clean-gl-statebunnei
gl_state: Miscellaneous clean up
2019-10-29Merge pull request #3035 from ReinUsesLisp/rasterizer-acceleratedbunnei
rasterizer_accelerated: Add intermediary for GPU rasterizers
2019-10-30gl_state: Use std::array::fill instead of std::fillRodrigo Locatti
Co-Authored-By: Mat M. <mathew1800@gmail.com>
2019-10-29gl_state: Move dirty checks to individual apply calls instead of ApplyReinUsesLisp
This requires removing constness from some methods, but for consistency it's removed in all methods.