summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_resource_manager.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* gl_shader_util: Use std::string_view instead of star pointerReinUsesLisp2020-08-241-3/+6
| | | | | This allows us passing any type of string and hinting the length of the string to the OpenGL driver.
* renderer_opengl: Add assembly program code pathsReinUsesLisp2020-05-191-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.
* gl_state: Remove completelyReinUsesLisp2020-02-281-1/+0
|
* gl_state: Remove program trackingReinUsesLisp2020-02-281-2/+0
|
* gl_state: Remove framebuffer trackingReinUsesLisp2020-02-281-3/+1
|
* gl_state: Remove texture and sampler trackingReinUsesLisp2020-02-281-3/+0
|
* gl_state: Remove VAO cache and trackingReinUsesLisp2020-02-281-18/+0
|
* renderer_opengl: Add OGLRenderbuffer to resource/state management.bunnei2020-02-261-0/+18
|
* gl_resource_manager: Add managed query classReinUsesLisp2020-02-141-0/+17
|
* gl_texture_cache: Correct assertsFernando Sahmkow2019-06-261-1/+1
|
* gl_resource_manager: Correct MakeStreamCopyFernando Sahmkow2019-06-251-2/+1
|
* gl_texture_cache: Use Stream Buffers instead of Persistant for Buffer Copies.Fernando Sahmkow2019-06-211-3/+2
|
* texture_cache: Implement Buffer Copy and detect Turing GPUs Image CopiesFernando Sahmkow2019-06-211-0/+8
|
* Add OGLTextureViewFernando Sahmkow2019-06-211-0/+18
|
* gl_shader_util: Add parameter to handle retrievable programsReinUsesLisp2019-02-071-2/+3
|
* gl_rasterizer: Use DSA for texturesReinUsesLisp2019-01-301-2/+2
|
* gl_rasterizer: Use DSA for vertex array objectsReinUsesLisp2019-01-061-3/+2
|
* gl_resource_manager: Amend clang-format discrepanciesLioncash2018-11-081-4/+2
| | | | Fixes the buildbot.
* gl_resource_manager: Profile creation and deletion.Markus Wick2018-11-061-0/+42
|
* gl_resource_manager: Split implementations in .cpp file.Markus Wick2018-11-061-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.
* OpenGL: Make OpenGL object resource wrappers fully inlineYuri Kunde Schlesner2015-07-261-111/+0
| | | | | The functions are so simple that having them separate only bloats the code and hinders optimization.
* OpenGL renderertfarley2015-05-231-0/+111