summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_resource_manager.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2020-08-24gl_shader_util: Use std::string_view instead of star pointerReinUsesLisp1-3/+6
This allows us passing any type of string and hinting the length of the string to the OpenGL driver.
2020-05-19renderer_opengl: Add assembly program code pathsReinUsesLisp1-0/+9
Add code required to use OpenGL assembly programs based on NV_gpu_program5. Decompilation for ARB programs is intended to be added in a follow up commit. This does **not** include ARB decompilation and it's not in an usable state. The intention behind assembly programs is to reduce shader stutter significantly on drivers supporting NV_gpu_program5 (and other required extensions). Currently only Nvidia's proprietary driver supports these extensions. Add a UI option hidden for now to avoid people enabling this option accidentally. This code path has some limitations that OpenGL compatibility doesn't have: - NV_shader_storage_buffer_object is limited to 16 entries for a single OpenGL context state (I don't know if this is an intended limitation, an specification issue or I am missing something). Currently causes issues on The Legend of Zelda: Link's Awakening. - NV_parameter_buffer_object can't bind buffers using an offset different to zero. The used workaround is to copy to a temporary buffer (this doesn't happen often so it's not an issue). On the other hand, it has the following advantages: - Shaders build a lot faster. - We have control over how floating point rounding is done over individual instructions (SPIR-V on Vulkan can't do this). - Operations on shared memory can be unsigned and signed. - Transform feedbacks are dynamic state (not yet implemented). - Parameter buffers (uniform buffers) are per stage, matching NVN and hardware's behavior. - The API to bind and create assembly programs makes sense, unlike ARB_separate_shader_objects.
2020-02-28gl_state: Remove completelyReinUsesLisp1-1/+0
2020-02-28gl_state: Remove program trackingReinUsesLisp1-2/+0
2020-02-28gl_state: Remove framebuffer trackingReinUsesLisp1-3/+1
2020-02-28gl_state: Remove texture and sampler trackingReinUsesLisp1-3/+0
2020-02-28gl_state: Remove VAO cache and trackingReinUsesLisp1-18/+0
2020-02-26renderer_opengl: Add OGLRenderbuffer to resource/state management.bunnei1-0/+18
2020-02-14gl_resource_manager: Add managed query classReinUsesLisp1-0/+17
2019-06-26gl_texture_cache: Correct assertsFernando Sahmkow1-1/+1
2019-06-25gl_resource_manager: Correct MakeStreamCopyFernando Sahmkow1-2/+1
2019-06-21gl_texture_cache: Use Stream Buffers instead of Persistant for Buffer Copies.Fernando Sahmkow1-3/+2
2019-06-21texture_cache: Implement Buffer Copy and detect Turing GPUs Image CopiesFernando Sahmkow1-0/+8
2019-06-21Add OGLTextureViewFernando Sahmkow1-0/+18
2019-02-07gl_shader_util: Add parameter to handle retrievable programsReinUsesLisp1-2/+3
2019-01-30gl_rasterizer: Use DSA for texturesReinUsesLisp1-2/+2
2019-01-06gl_rasterizer: Use DSA for vertex array objectsReinUsesLisp1-3/+2
2018-11-08gl_resource_manager: Amend clang-format discrepanciesLioncash1-4/+2
Fixes the buildbot.
2018-11-06gl_resource_manager: Profile creation and deletion.Markus Wick1-0/+42
2018-11-06gl_resource_manager: Split implementations in .cpp file.Markus Wick1-0/+146
Those implementations are quite costly, so there is no need to inline them to the caller. Ressource deletion is often a performance bug, so in this way, we support to add breakpoints to them.
2015-07-26OpenGL: Make OpenGL object resource wrappers fully inlineYuri Kunde Schlesner1-111/+0
The functions are so simple that having them separate only bloats the code and hinders optimization.
2015-05-23OpenGL renderertfarley1-0/+111