aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl/gl_device.cpp
AgeCommit message (Collapse)Author
2023-12-20gl_device: Remove AMD blacklists that are no longer applicableAmeer J
2023-12-19gl_buffer_cache: Reintroduce NV_vertex_buffer_unified_memoryAmeer J
Workaround Nvidia drivers complaining when a buffer is bound as both a vertex buffer and transform feedback buffer
2023-12-03Merge pull request #12094 from ameerj/gl-buffer-cache-batch-vtxliamwhite
gl_buffer_cache: Batch vertex/tfb buffer binding
2023-11-24vulkan_device: add names for more driverID enumeration valuesLiam
2023-11-19gl_buffer_cache: Batch vertex/tfb buffer bindingAmeer J
2023-08-05gl_device: Filter more specifically for slow ASTClat9nq
Adds a check to find if the renderer is Intel DG (i.e. DG2). gl_device: Detect Mesa to disable their ASTC In our testing, our own ASTC decoder has shown itself to perform faster than the included one from the driver. Disable theirs when Mesa is detected. Mesa detection depends on the vendor string. Some drivers never appear outside of *nix contexts, so only check those in the *nix context. gl_device: Internalize Intel DG detection
2023-07-21settings,general: Rename non-confirming enumslat9nq
2023-06-25OpenGL: Limit lmem warmup to NVIDIAameerj
:frog:
2023-06-10shader_recompiler: remove barriers in conditional control flow when device ↵Liam
lacks support
2023-05-06Log object names with debug renderer, add a GPU address to ImageViewsKelebek1
2023-01-05video_core: Implement opengl/vulkan draw_textureFeng Chen
2022-12-13gl_device: Use a more robust way to use strict context modeAlexander Orzechowski
Instead of checking a environment variable which may not actually exist or is just wrong, ask QT if it's running on the wayland platform.
2022-12-13renderer_opengl: refactor context acquireLiam
2022-11-22general: fix compile for Apple ClangLiam
2022-04-23general: Convert source file copyright comments over to SPDXMorph
This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-01GPU Garbage Collection: Fix regressions.Fernando Sahmkow
2022-03-25GC: Address Feedback.Fernando Sahmkow
2022-03-19video_core: Reduce unused includesameerj
2021-12-29glsl: Add boolean reference workaroundameerj
2021-12-29glsl_context_get_set: Add alternative cbuf type for broken driversameerj
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.
2021-10-28gl_device: Force GLASM on NVIDIA drivers 495-496lat9nq
GLSL shaders currently do not render correctly on the recent NVIDIA drivers. This adds a check that forces assembly shaders for these drivers since they seem unaffected and adds a warning informing of the decision. Developers can disable the check by enabling graphics debugging.
2021-10-17settings: Remove std::chrono usageameerj
Alleviates the dependency on chrono for all files that include settings.h
2021-07-22Revert "renderers: Disable async shader compilation"ReinUsesLisp
This reverts commit 4a152767286717fa69bfc94846a124a366f70065.
2021-07-22gl_device: Simplify GLASM setting logicameerj
2021-07-22renderers: Disable async shader compilationameerj
The current implementation is prone to causing graphical issues. Disable until a better solution is implemented.
2021-07-22video_core: Enable GL SPIR-V shaderslat9nq
2021-07-22general: Add setting shader_backendlat9nq
GLASM is getting good enough that we can move it out of advanced graphics settings. This removes the setting `use_assembly_shaders`, opting for a enum class `shader_backend`. This comes with the benefits that it is extensible for additional shader backends besides GLSL and GLASM, and this will work better with a QComboBox. Qt removes the related assembly shader setting from the Advanced Graphics section and places it as a new QComboBox in the API Settings group. This will replace the Vulkan device selector when OpenGL is selected. Additionally, mark all of the custom anisotropic filtering settings as "WILL BREAK THINGS", as that is the case with a select few games.
2021-07-22glasm: Add passthrough geometry shader supportReinUsesLisp
2021-07-22shader: Unify shader stage typesReinUsesLisp
2021-07-22shader: Emulate 64-bit integers when not supportedReinUsesLisp
Useful for mobile and Intel Xe devices.
2021-07-22glsl: Address rest of feedbackameerj
2021-07-22glsl: Add stubs for sparse queries and variable aoffi when not supportedameerj
2021-07-22glsl: Implement VOTE for subgroup size potentially largerameerj
2021-07-22glsl: Query GL Device for FP16 extension supportameerj
2021-07-22glasm: Use ARB_derivative_control conditionallyReinUsesLisp
2021-07-22glasm: Use storage buffers instead of global memory when possibleReinUsesLisp
2021-07-22shader: Initial OpenGL implementationReinUsesLisp
2021-06-20gl_device: Expand on Mesa driver nameslat9nq
Makes this list a bit more capable at identifying Mesa drivers. Tries to deal with two of the overloaded vendor strings in a more generic fashion.
2021-06-20video_core: Add GPU vendor name to window title barameerj
2021-04-26gl_device: Intel: Disable texture view formats workaround on mesaA-w-x
2021-04-14common: Move settings to common from core.bunnei
- Removes a dependency on core and input_common from common.
2021-03-24gl_device: unblock async shaders on other Unix systemsJan Beich
Mesa is the primary OpenGL provider on all FreeDesktop systems. For example, iris is used on Intel GPU + FreeBSD by default.
2021-03-21gl_device: Block async shaders on AMD and Intellat9nq
Currently, the Windows versions of the Intel OpenGL driver and the AMD proprietary OpenGL driver do not properly support (or in fact degrade) when asynchronous shader compilation is enabled. This blocks specifically those drivers from using this feature. This affects AMDGPU-PRO on Linux, and AMD's and Intel's OpenGL drivers on Windows.
2021-02-24Implement glDepthRangeIndexeddNVKelebek1
2021-02-13renderer_opengl: Remove interopReinUsesLisp
Remove unused interop code from the OpenGL backend.
2021-02-13video_core: Reimplement the buffer cacheReinUsesLisp
Reimplement the buffer cache using cached bindings and page level granularity for modification tracking. This also drops the usage of shared pointers and virtual functions from the cache. - Bindings are cached, allowing to skip work when the game changes few bits between draws. - OpenGL Assembly shaders no longer copy when a region has been modified from the GPU to emulate constant buffers, instead GL_EXT_memory_object is used to alias sub-buffers within the same allocation. - OpenGL Assembly shaders stream constant buffer data using glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In theory this should save one hash table resolve inside the driver compared to glBufferSubData. - A new OpenGL stream buffer is implemented based on fences for drivers that are not Nvidia's proprietary, due to their low performance on partial glBufferSubData calls synchronized with 3D rendering (that some games use a lot). - Most optimizations are shared between APIs now, allowing Vulkan to cache more bindings than before, skipping unnecesarry work. This commit adds the necessary infrastructure to use Vulkan object from OpenGL. Overall, it improves performance and fixes some bugs present on the old cache. There are still some edge cases hit by some games that harm performance on some vendors, this are planned to be fixed in later commits.
2021-01-21renderer_opengl: Avoid precompiled cache and force NV GL cache directoryReinUsesLisp
Setting __GL_SHADER_DISK_CACHE_PATH we can force the cache directory to be in yuzu's user directory to stop commonly distributed malware from deleting our driver shader cache. And by setting __GL_SHADER_DISK_CACHE_SKIP_CLEANUP we can have an unbounded shader cache size. This has only been implemented on Windows, mostly because previous tests didn't seem to work on Linux. Disable the precompiled cache on Nvidia's driver. There's no need to hide information the driver already has in its own cache.
2021-01-04gl_texture_cache: Avoid format views on Intel and AMDReinUsesLisp
Intel and AMD proprietary drivers are incapable of rendering to texture views of different formats than the original texture. Avoid creating these at a cache level. This will consume more memory, emulating them with copies.
2020-12-30video_core: Rewrite the texture cacheReinUsesLisp
The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues.
2020-10-02video_core: Enforce -Wunused-variable and -Wunused-but-set-variableReinUsesLisp