aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl/gl_rasterizer.h
AgeCommit message (Collapse)Author
2024-01-31renderer_opengl: isolate core presentation codeLiam
2024-01-31video_core: simplify accelerated surface fetch and crop handling between APIsLiam
2024-01-18Core: Clang format and other small issues.Fernando Sahmkow
2024-01-18SMMU: Initial adaptation to video_core.Fernando Sahmkow
2023-12-26Merge pull request #12415 from ameerj/ogl-draw-autoliamwhite
gl_rasterizer: Implement DrawTransformFeedback macro
2023-12-19gl_rasterizer: Implement DrawTransformFeedback macroAmeer J
2023-12-19OpenGL: Add GL_PRIMITIVES_GENERATED and ↵Ameer J
GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN queries
2023-09-23Query Cache: address issuesFernando Sahmkow
2023-09-23Query Cachge: Fully rework Vulkan's query cacheFernando Sahmkow
2023-06-28Memory Tracking: Optimize tracking to only use atomic writes when contested ↵Fernando Sahmkow
with the host GPU
2023-05-28OpenGL: Make use of persistent buffer maps in buffer cache downloadsameerj
Persistent buffer maps were already used by the texture cache, this extends their usage for the buffer cache. In my testing, using the memory maps for uploads was slower than the existing "ImmediateUpload" path, so the memory map usage is limited to downloads for the time being.
2023-05-07GPU: Add Reactive flushingFernando Sahmkow
2023-03-12general: fix spelling mistakesLiam
2023-03-06gl_rasterizer: Implement AccelerateDMA DmaBufferImageCopyameerj
2023-03-05Engines: Implement Accelerate DMA Texture.Fernando Sahmkow
2023-01-05video_core: Implement opengl/vulkan draw_textureFeng Chen
2023-01-01MacroHLE: Final cleanup and fixes.Fernando Sahmkow
2023-01-01Rasterizer: Setup skeleton for Host Conditional renderingFernando Sahmkow
2023-01-01RasterizerMemory: Add filtering for flushing/invalidation operations.Fernando Sahmkow
2023-01-01MacroHLE: Add OpenGL SupportFernando Sahmkow
2022-11-20Merge pull request #9216 from vonchenplus/reimp_inline_index_bufferliamwhite
video_core: Reimplement inline index buffer binding
2022-11-17maxwell3d: full HLE for multi-layer clearsLiam
2022-11-15video_core: Reimplement inline index buffer bindingFeng Chen
2022-10-22video_core: Implement maxwell inline_index methodFengChen
2022-10-21video_coare: Reimplementing the maxwell drawing trigger mechanismFengChen
2022-10-06DMA & InlineToMemory Engines Rework.bunnei
2022-10-06VideoCore: Refactor fencing system.Fernando Sahmkow
2022-10-06Texture cache: Fix the remaining issues with memory mnagement and unmapping.Fernando Sahmkow
2022-10-06OpenGl: Implement Channels.Fernando Sahmkow
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda
[REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
2022-03-19video_core: Reduce unused includesameerj
2022-02-01Rasterizer: Refactor inlineToMemory.Fernando Sahmkow
2022-01-29Rasterizer: Implement Inline2Memory Acceleration.Fernando Sahmkow
2021-07-22glasm: Use storage buffers instead of global memory when possibleReinUsesLisp
2021-07-22gl_shader_cache: Rename Program abstractions into PipelineReinUsesLisp
2021-07-22glasm: Set transform feedback stateReinUsesLisp
2021-07-22shader: Move pipeline cache logic to separate filesReinUsesLisp
Move code to separate files to be able to reuse it from OpenGL. This greatly simplifies the pipeline cache logic on Vulkan. Transform feedback state is not yet abstracted and it's still intrusively stored inside vk_pipeline_cache. It will be moved when needed on OpenGL.
2021-07-22shader: Remove old shader managementReinUsesLisp
2021-07-13DMAEngine: Accelerate BufferClearFernando Sahmkow
2021-07-11accelerateDMA: Accelerate Buffer Copies.Fernando Sahmkow
2021-07-09Fence Manager: Add fences on Reference Count.Fernando Sahmkow
2021-07-04Texture Cache: Initial Implementation of Sparse Textures.Fernando Sahmkow
2021-06-22bootmanager: Use std::stop_source for stopping emulationReinUsesLisp
Use its std::stop_token to abort shader cache loading. Using std::stop_token instead of std::atomic_bool allows the usage of other utilities like std::stop_callback.
2021-06-01buffer_cache: Simplify uniform disabling logicameerj
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.
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-12-05video_core: Resolve more variable shadowing scenarios pt.3Lioncash
Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
2020-10-20gl_arb_decompiler: Implement robust buffer operationsReinUsesLisp
This emulates the behavior we get on GLSL with regular SSBOs with a pointer + length pair. It aims to be consistent with the crashes we might get. Out of bounds stores are ignored. Atomics are ignored and return zero. Reads return zero.
2020-09-06video_core: Remove all Core::System references in rendererReinUsesLisp
Now that the GPU is initialized when video backends are initialized, it's no longer needed to query components once the game is running: it can be done when yuzu is booting. This allows us to pass components between constructors and in the process remove all Core::System references in the video backend.