Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2020-07-18 | gl_arb_decompiler: Use NV_shader_buffer_{load,store} on assembly shaders | ReinUsesLisp | 1 | -2/+2 | |
NV_shader_buffer_{load,store} is a 2010 extension that allows GL applications to use what in Vulkan is known as physical pointers, this is basically C pointers. On GLASM these is exposed through the LOAD/STORE/ATOM instructions. Up until now, assembly shaders were using NV_shader_storage_buffer_object. These work fine, but have a (probably unintended) limitation that forces us to have the limit of a single stage for all shader stages. In contrast, with NV_shader_buffer_{load,store} we can pass GPU addresses to the shader through local parameters (GLASM equivalent uniform constants, or push constants on Vulkan). Local parameters have the advantage of being per stage, allowing us to generate code without worrying about binding overlaps. | |||||
2020-07-17 | async shaders | David Marcec | 1 | -0/+10 | |
2020-06-07 | rasterizer_cache: Remove files and includes | ReinUsesLisp | 1 | -1/+0 | |
The rasterizer cache is no longer used. Each cache has its own generic implementation optimized for the cached data. | |||||
2020-06-07 | gl_shader_cache: Use generic shader cache | ReinUsesLisp | 1 | -8/+8 | |
Trivially port the generic shader cache to OpenGL. | |||||
2020-06-04 | gl_rasterizer: Use NV_transform_feedback for XFB on assembly shaders | ReinUsesLisp | 1 | -0/+4 | |
NV_transform_feedback, NV_transform_feedback2 and ARB_transform_feedback3 with NV_transform_feedback interactions allows implementing transform feedbacks as dynamic state. Maxwell implements transform feedbacks as dynamic state, so using these extensions with TransformFeedbackStreamAttribsNV allows us to properly emulate transform feedbacks without having to recompile shaders when the state changes. | |||||
2020-06-01 | glsl: Squash constant buffers into a single SSBO when we hit the limit | ReinUsesLisp | 1 | -1/+3 | |
Avoids compilation errors at the cost of shader build times and runtime performance when a game hits the limit of uniform buffers we can use. | |||||
2020-05-19 | renderer_opengl: Add assembly program code paths | ReinUsesLisp | 1 | -5/+11 | |
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-04-28 | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers | ReinUsesLisp | 1 | -0/+1 | |
Drop MemoryBarrier from the buffer cache and use Maxwell3D's register WaitForIdle. To implement this on OpenGL we just call glMemoryBarrier with the necessary bits. Vulkan lacks this synchronization primitive, so we set an event and immediately wait for it. This is not a pretty solution, but it's what Vulkan can do without submitting the current command buffer to the queue (which ends up being more expensive on the CPU). | |||||
2020-04-27 | texture_cache: Reintroduce preserve_contents accurately | ReinUsesLisp | 1 | -1/+2 | |
This reverts commit 94b0e2e5dae4e0bd0021ac2d8fe1ff904a93ee69. preserve_contents proved to be a meaningful optimization. This commit reintroduces it but properly implemented on OpenGL. We have to make sure the clear removes all the previous contents of the image. It's not currently implemented on Vulkan because we can do smart things there that's preferred to be introduced in a separate commit. | |||||
2020-04-22 | Fix GCC error. | Fernando Sahmkow | 1 | -1/+1 | |
2020-04-22 | FenceManager: Manage syncpoints and rename fences to semaphores. | Fernando Sahmkow | 1 | -1/+2 | |
2020-04-22 | ThreadManager: Sync async reads on accurate gpu. | Fernando Sahmkow | 1 | -0/+1 | |
2020-04-22 | GPU: Implement a Fence Manager. | Fernando Sahmkow | 1 | -0/+2 | |
2020-04-22 | OpenGL: Implement Fencing backend. | Fernando Sahmkow | 1 | -0/+2 | |
2020-04-22 | GPU: Refactor synchronization on Async GPU | Fernando Sahmkow | 1 | -0/+2 | |
2020-04-16 | buffer_cache: Return handles instead of pointer to handles | ReinUsesLisp | 1 | -3/+1 | |
The original idea of returning pointers is that handles can be moved. The problem is that the implementation didn't take that in mind and made everything harder to work with. This commit drops pointer to handles and returns the handles themselves. While it is still true that handles can be invalidated, this way we get an old handle instead of a dangling pointer. This problem can be solved in the future with sparse buffers. | |||||
2020-04-13 | gl_rasterizer: Implement line widths and smooth lines | ReinUsesLisp | 1 | -0/+3 | |
Implements "legacy" features from OpenGL present on hardware such as smooth lines and line width. | |||||
2020-04-06 | GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddr | Fernando Sahmkow | 1 | -3/+3 | |
2020-03-13 | gl_rasterizer: Implement transform feedback bindings | ReinUsesLisp | 1 | -3/+11 | |
2020-03-10 | gl_rasterizer: Implement polygon modes and fill rectangles | ReinUsesLisp | 1 | -0/+3 | |
2020-03-09 | gl_shader_cache: Rework shader cache and remove post-specializations | ReinUsesLisp | 1 | -5/+4 | |
Instead of pre-specializing shaders and then post-specializing them, drop the later and only "specialize" the shader while decoding it. | |||||
2020-02-28 | gl_state_tracker: Track state of index buffers | ReinUsesLisp | 1 | -1/+1 | |
2020-02-28 | gl_state_tracker: Implement dirty flags for clip distances and shaders | ReinUsesLisp | 1 | -2/+3 | |
2020-02-28 | renderer_opengl: Reintroduce dirty flags for render targets | ReinUsesLisp | 1 | -1/+5 | |
2020-02-28 | gl_state: Remove completely | ReinUsesLisp | 1 | -4/+1 | |
2020-02-28 | gl_state: Remove program tracking | ReinUsesLisp | 1 | -3/+2 | |
2020-02-28 | gl_state: Remove rasterizer disable tracking | ReinUsesLisp | 1 | -1/+1 | |
2020-02-28 | gl_state: Remove viewport and depth range tracking | ReinUsesLisp | 1 | -1/+1 | |
2020-02-28 | gl_state: Remove scissor test tracking | ReinUsesLisp | 1 | -1/+1 | |
2020-02-28 | gl_state: Remove framebuffer sRGB tracking | ReinUsesLisp | 1 | -0/+3 | |
2020-02-28 | gl_state: Remove VAO cache and tracking | ReinUsesLisp | 1 | -8/+4 | |
2020-02-28 | gl_state: Remove depth clamp tracking | ReinUsesLisp | 1 | -0/+3 | |
2020-02-14 | maxwell_3d: Unify draw methods | ReinUsesLisp | 1 | -5/+1 | |
Pass instanced state of a draw invocation as an argument instead of having two separate virtual methods. | |||||
2020-02-14 | gl_query_cache: Optimize query cache | ReinUsesLisp | 1 | -1/+1 | |
Use a custom cache instead of relying on a ranged cache. | |||||
2020-02-14 | gl_query_cache: Implement host queries using a deferred cache | ReinUsesLisp | 1 | -3/+7 | |
Instead of waiting immediately for executed commands, defer the query until the guest CPU reads it. This way we get closer to what the guest program is doing. To archive this we have to build a dependency queue, because host APIs (like OpenGL and Vulkan) use ranged queries instead of counters like NVN. Waiting for queries implicitly uses fences and this requires a command being queued, otherwise the driver will lock waiting until a timeout. To fix this when there are no commands queued, we explicitly call glFlush. | |||||
2020-02-14 | gl_rasterizer: Sort method declarations | ReinUsesLisp | 1 | -16/+15 | |
2020-02-14 | gl_rasterizer: Add queued commands counter | ReinUsesLisp | 1 | -0/+3 | |
Keep track of the queued OpenGL commands that can signal a fence if waited on. As a side effect, we avoid calls to glFlush when no commands are queued. | |||||
2020-02-14 | maxwell_3d: Slow implementation of passed samples (query 21) | ReinUsesLisp | 1 | -0/+5 | |
Implements GL_SAMPLES_PASSED by waiting immediately for queries. | |||||
2020-01-30 | gl_rasterizer: Fix instanced draw arrays | ReinUsesLisp | 1 | -6/+1 | |
glDrawArrays was being used when the draw had a base instance specified. This commit removes the draw parameters abstraction and fixes the mentioned issue. | |||||
2019-12-18 | gl_rasterizer: Implement RASTERIZE_ENABLE | ReinUsesLisp | 1 | -0/+3 | |
RASTERIZE_ENABLE is the opposite of GL_RASTERIZER_DISCARD. Implement it naturally using this. NVN games expect rasterize to be enabled by default, reflect that in our initial GPU state. | |||||
2019-11-29 | gl_rasterizer: Re-enable framebuffer cache for clear buffers | ReinUsesLisp | 1 | -2/+0 | |
2019-11-23 | gl_shader_cache: Remove dynamic BaseBinding specialization | ReinUsesLisp | 1 | -5/+4 | |
2019-11-23 | video_core: Unify ProgramType and ShaderStage into ShaderType | ReinUsesLisp | 1 | -7/+4 | |
2019-11-23 | gl_rasterizer: Bind graphics images to draw commands | ReinUsesLisp | 1 | -0/+4 | |
Images were not being bound to draw invocations because these would require a cache invalidation. | |||||
2019-11-23 | shader/texture: Deduce texture buffers from locker | ReinUsesLisp | 1 | -8/+7 | |
Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded. | |||||
2019-10-27 | rasterizer_accelerated: Add intermediary for GPU rasterizers | ReinUsesLisp | 1 | -9/+2 | |
Add an intermediary class that implements common functions across GPU accelerated rasterizers. This avoids code repetition on different backends. | |||||
2019-10-05 | Gl_Rasterizer: Protect CPU Memory mapping from multiple threads. | Fernando Sahmkow | 1 | -0/+3 | |
2019-09-19 | Rasterizer: Refactor and simplify DrawBatch Interface. | Fernando Sahmkow | 1 | -4/+2 | |
2019-09-19 | Rasterizer: Refactor draw calls, remove deadcode and clean up. | Fernando Sahmkow | 1 | -2/+1 | |
2019-09-19 | Video Core: initial Implementation of InstanceDraw Packaging | Fernando Sahmkow | 1 | -0/+6 | |
2019-09-17 | gl_rasterizer: Remove unused code paths from ConfigureFramebuffers | ReinUsesLisp | 1 | -36/+2 | |
2019-09-06 | gl_rasterizer: Add samplers to compute dispatches | ReinUsesLisp | 1 | -0/+3 | |
2019-09-06 | gl_rasterizer: Minor code changes | ReinUsesLisp | 1 | -2/+6 | |
2019-09-06 | kepler_compute: Implement texture queries | ReinUsesLisp | 1 | -0/+2 | |
2019-09-06 | gl_rasterizer: Split SetupTextures | ReinUsesLisp | 1 | -2/+8 | |
2019-07-26 | GPU: Flush commands on every dma pusher step. | Fernando Sahmkow | 1 | -0/+1 | |
This commit ensures that the host gpu is constantly fed with commands to work with, while the guest gpu keeps producing the rest of the commands. This reduces syncing time between host and guest gpu. | |||||
2019-07-17 | GL_Rasterizer: Rework RenderTarget/DepthBuffer clearing | Fernando Sahmkow | 1 | -0/+5 | |
2019-07-17 | Maxwell3D: Rework the dirty system to be more consistant and scaleable | Fernando Sahmkow | 1 | -0/+1 | |
2019-07-15 | gl_rasterizer: Implement compute shaders | ReinUsesLisp | 1 | -2/+13 | |
2019-07-09 | gl_rasterizer: Amend documentation comment for ConfigureFramebuffers() | Lioncash | 1 | -7/+9 | |
must_reconfigure isn't a parameter for this function any more, so it can be replaced with current_state. While we're at it, we can make the parameters of the declaration match the same name as the ones in the definition. | |||||
2019-07-06 | gl_rasterizer: Minor style changes | ReinUsesLisp | 1 | -5/+0 | |
2019-07-06 | gl_rasterizer: Fix vertex and index data invalidations | ReinUsesLisp | 1 | -1/+2 | |
2019-07-06 | gl_buffer_cache: Implement with generic buffer cache | ReinUsesLisp | 1 | -0/+1 | |
2019-07-06 | gl_rasterizer: Drop gl_global_cache in favor of gl_buffer_cache | ReinUsesLisp | 1 | -2/+0 | |
2019-07-06 | gl_buffer_cache: Return used buffer from Upload function | ReinUsesLisp | 1 | -1/+1 | |
2019-07-06 | gl_rasterizer: Move index buffer uploading to its own method | ReinUsesLisp | 1 | -1/+3 | |
2019-06-25 | texture_cache: Query MemoryManager from the system | Fernando Sahmkow | 1 | -2/+0 | |
2019-06-21 | texture_cache: Fermi2D reform and implement View Mirage | Fernando Sahmkow | 1 | -2/+1 | |
This also does some fixes on compressed textures reinterpret and on the Fermi2D engine in general. | |||||
2019-06-21 | gl_rasterizer: Track texture buffer usage | ReinUsesLisp | 1 | -3/+4 | |
2019-06-21 | gl_framebuffer_cache: Use a hashed struct to cache framebuffers | ReinUsesLisp | 1 | -4/+2 | |
2019-06-21 | Remove Framebuffer reconfiguration and restrict rendertarget protection | Fernando Sahmkow | 1 | -3/+2 | |
2019-06-21 | texture_cache: Correct premature texceptions | Fernando Sahmkow | 1 | -2/+5 | |
Due to our current infrastructure, it is possible for a mipmap to be set on as a render target before a texception of that mipmap's superset be set afterwards. This is problematic as we rely on texture views to set up texceptions and protecting render targets targets for 3D texture rendering. One simple solution is to configure framebuffers after texture setup but this brings other problems. This solution, forces a reconfiguration of the framebuffers after such event happens. | |||||
2019-06-21 | Texture Cache: Implement Blitting and Fermi Copies | Fernando Sahmkow | 1 | -1/+0 | |
2019-06-21 | Change texture_cache chaching from GPUAddr to CacheAddr | Fernando Sahmkow | 1 | -2/+0 | |
This also reverses the changes to make invalidation and flushing through the GPU address. | |||||
2019-06-21 | Deglobalize Memory Manager on texture cahe and Implement Invalidation and Flushing using GPUVAddr | Fernando Sahmkow | 1 | -0/+8 | |
2019-06-21 | gl_texture_cache: Implement fermi copies | ReinUsesLisp | 1 | -0/+1 | |
2019-06-21 | gl_texture_cache: Initial implementation | ReinUsesLisp | 1 | -2/+2 | |
2019-06-08 | gl_rasterizer: Remove unused parameters in descriptor uploads | ReinUsesLisp | 1 | -3/+2 | |
2019-06-08 | video_core/engines: Move ConstBufferInfo out of Maxwell3D | ReinUsesLisp | 1 | -2/+8 | |
2019-05-30 | gl_rasterizer: Move alpha testing to the OpenGL pipeline | ReinUsesLisp | 1 | -2/+2 | |
Removes the alpha testing code from each fragment shader invocation. | |||||
2019-05-30 | gl_rasterizer: Use GL_QUADS to emulate quads rendering | ReinUsesLisp | 1 | -2/+0 | |
2019-05-21 | gl_shader_cache: Use shared contexts to build shaders in parallel | ReinUsesLisp | 1 | -1/+2 | |
2019-04-14 | gl_shader_decompiler: Use variable AOFFI on supported hardware | ReinUsesLisp | 1 | -3/+1 | |
2019-04-14 | shader_ir: Implement STG, keep track of global memory usage and flush | ReinUsesLisp | 1 | -4/+0 | |
2019-04-10 | gl_device: Implement interface and add uniform offset alignment | ReinUsesLisp | 1 | -1/+3 | |
2019-04-08 | Simplify ConstBufferAccessor | Fernando Sahmkow | 1 | -3/+0 | |
2019-04-08 | Implement Const Buffer Accessor | Fernando Sahmkow | 1 | -0/+3 | |
2019-04-06 | gl_rasterizer: Use ARB_multi_bind to update SSBOs | ReinUsesLisp | 1 | -0/+1 | |
2019-04-06 | gl_rasterizer: Use ARB_multi_bind to update UBOs across stages | ReinUsesLisp | 1 | -0/+3 | |
2019-04-04 | video_core/renderer_opengl: Remove unnecessary includes | Lioncash | 1 | -5/+0 | |
Quite a few unused includes have built up over time, particularly on core/memory.h. Removing these includes means the source files including those files will no longer need to be rebuilt if they're changed, making compilation slightly faster in this scenario. | |||||
2019-04-02 | gl_sampler_cache: Port sampler cache to OpenGL | ReinUsesLisp | 1 | -30/+2 | |
2019-03-27 | gl_rasterizer: Remove unused reference member variable from RasterizerOpenGL | Lioncash | 1 | -3/+1 | |
This member variable is no longer being used, so it can be removed, removing a dependency on EmuWindow from the rasterizer's interface" | |||||
2019-03-15 | gpu: Use host address for caching instead of guest address. | bunnei | 1 | -4/+4 | |
2019-03-11 | gl_rasterizer: Use system instance passed from argument | ReinUsesLisp | 1 | -0/+1 | |
2019-03-09 | gl_rasterizer: Encapsulate sampler queries into methods | ReinUsesLisp | 1 | -2/+3 | |
2019-02-27 | common/math_util: Move contents into the Common namespace | Lioncash | 1 | -2/+2 | |
These types are within the common library, so they should be within the Common namespace. | |||||
2019-02-07 | gl_rasterizer: Implement a more accurate fermi 2D copy. | bunnei | 1 | -1/+3 | |
- This is a blit, use the blit registers. | |||||
2019-02-07 | gl_shader_cache: Link loading screen with disk shader cache load | ReinUsesLisp | 1 | -1/+3 | |
2019-02-07 | gl_shader_disk_cache: Pass core system as argument and guard against games without title ids | ReinUsesLisp | 1 | -1/+6 | |
2019-02-07 | rasterizer_interface: Add disk cache entry for the rasterizer | ReinUsesLisp | 1 | -0/+1 | |
2019-02-01 | rasterizer_interface: Remove unused AccelerateFill operation | ReinUsesLisp | 1 | -1/+0 | |
2019-01-30 | gl_shader_cache: Use explicit bindings | ReinUsesLisp | 1 | -29/+12 | |
2019-01-30 | gl_rasterizer: Implement global memory management | ReinUsesLisp | 1 | -0/+10 | |
2019-01-30 | gl_rasterizer: Workaround invalid zeta clears | ReinUsesLisp | 1 | -3/+6 | |
Some games (like Xenoblade Chronicles 2) clear both depth and stencil buffers while there's a depth-only texture attached (e.g. D16 Unorm). This commit reads the zeta format of the bound surface on ConfigureFramebuffers and returns if depth and/or stencil attachments were set. This is ignored on DrawArrays but on Clear it's used to just clear those attachments, bypassing an OpenGL error. | |||||
2019-01-08 | gl_global_cache: Add dummy global cache manager | ReinUsesLisp | 1 | -2/+8 | |
2019-01-07 | gl_rasterizer: Skip framebuffer configuration if rendertargets have not been changed | ReinUsesLisp | 1 | -0/+18 | |
2019-01-06 | gl_rasterizer: Use DSA for vertex array objects | ReinUsesLisp | 1 | -2/+4 | |
2018-11-29 | gl_rasterizer: Enable clip distances when set in register and in shader | ReinUsesLisp | 1 | -1/+2 | |
2018-11-29 | gl_rasterizer: Implement a framebuffer cache | ReinUsesLisp | 1 | -1/+5 | |
2018-11-29 | gl_rasterizer: Remove unused struct declarations | ReinUsesLisp | 1 | -14/+0 | |
2018-11-29 | gl_rasterizer: Remove extension booleans | ReinUsesLisp | 1 | -3/+0 | |
2018-11-27 | Implement depth clamp | Rodolfo Bogado | 1 | -0/+4 | |
2018-11-27 | GPU States: Implement Polygon Offset. This is used in SMO all the time. (#1784) | Marcos | 1 | -0/+3 | |
* GPU States: Implement Polygon Offset. This is used in SMO all the time. * Clang Format fixes. * Initialize polygon_offset in the constructor. | |||||
2018-11-24 | Add support for clear_flags register | Rodolfo Bogado | 1 | -14/+15 | |
2018-11-21 | Removed pre 4.3 ARB extensions | FernandoS27 | 1 | -2/+0 | |
2018-11-17 | fix sampler configuration, thanks to Marcos for his investigation | Rodolfo Bogado | 1 | -1/+5 | |
2018-11-17 | add AlphaToCoverage and AlphaToOne | Rodolfo Bogado | 1 | -0/+3 | |
2018-11-17 | add support for fragment_color_clamp | Rodolfo Bogado | 1 | -0/+3 | |
2018-11-11 | Improve state management by splitting some of the states id separated function to avoid a full apply overhead | Rodolfo Bogado | 1 | -3/+3 | |
2018-11-11 | set sampler max lod, min lod, lod bias and max anisotropy | Rodolfo Bogado | 1 | -1/+1 | |
2018-11-06 | gl_rasterizer: Split VAO and VB setup functions. | Markus Wick | 1 | -1/+2 | |
2018-11-05 | Add support to color mask to avoid issues in blending caused by wrong values in the alpha channel in some render targets. | Rodolfo Bogado | 1 | -0/+3 | |
2018-11-05 | Implement multi-target viewports and blending | Rodolfo Bogado | 1 | -4/+1 | |
2018-10-30 | global: Use std::optional instead of boost::optional (#1578) | Frederic L | 1 | -2/+2 | |
* get rid of boost::optional * Remove optional references * Use std::reference_wrapper for optional references * Fix clang format * Fix clang format part 2 * Adressed feedback * Fix clang format and MacOS build | |||||
2018-10-29 | Implement Mip Filter | FernandoS27 | 1 | -0/+1 | |
2018-10-26 | gl_rasterizer: Implement primitive restart. | bunnei | 1 | -0/+3 | |
2018-10-26 | gl_rasterizer: Implement depth range. | bunnei | 1 | -5/+2 | |
2018-10-22 | Assert that multiple render targets are not set while alpha testing | FernandoS27 | 1 | -0/+3 | |
2018-10-22 | Use standard UBO and fix/stylize the code | FernandoS27 | 1 | -3/+0 | |
2018-10-22 | Remove SyncAlphaTest and clang format | FernandoS27 | 1 | -3/+1 | |
2018-10-22 | Implemented Alpha Testing | FernandoS27 | 1 | -0/+2 | |
2018-10-09 | Assert Scissor tests | FernandoS27 | 1 | -0/+3 | |
2018-10-07 | gl_shader_decompiler: Implement geometry shaders | ReinUsesLisp | 1 | -3/+3 | |
2018-10-06 | Implemented Depth Compare and Shadow Samplers | FernandoS27 | 1 | -0/+2 | |
2018-10-06 | gl_rasterizer: Add rasterizer cache code to handle accerated fermi copies. | bunnei | 1 | -2/+2 | |
2018-10-04 | gl_rasterizer: Implement quads topology | ReinUsesLisp | 1 | -0/+7 | |
2018-09-28 | video_core: Implement point_size and add point state sync | ReinUsesLisp | 1 | -0/+3 | |
2018-09-28 | gl_state: Pack sampler bindings into a single ARB_multi_bind | ReinUsesLisp | 1 | -1/+1 | |
2018-09-26 | video_core: Add asserts for CS, TFB and alpha testing | ReinUsesLisp | 1 | -0/+6 | |
Add asserts for compute shader dispatching, transform feedback being enabled and alpha testing. These have in common that they'll probably break rendering without logging. | |||||
2018-09-15 | Port #4182 from Citra: "Prefix all size_t with std::" | fearlessTobi | 1 | -4/+4 | |
2018-09-13 | Use ARB_multi_bind for uniform buffers (#1287) | ReinUsesLisp | 1 | -0/+1 | |
* gl_rasterizer: use ARB_multi_bind for uniform buffers * address feedback | |||||
2018-09-10 | rasterizer: Drop unused handler. | Markus Wick | 1 | -1/+0 | |
This virtual function is called in a very hot spot, and it does nothing. If this kind of feature is required, please be more specific and add callbacks in the switch statement within Maxwell3D::WriteReg. There is no point in having another switch statement within the rasterizer. | |||||
2018-09-10 | gl_rasterizer: Implement clear for non-zero render targets. | bunnei | 1 | -2/+11 | |
- Several misc. changes to ConfigureFramebuffers in support of this. | |||||
2018-09-10 | gl_rasterizer: Implement multiple color attachments. | bunnei | 1 | -9/+3 | |
2018-09-08 | gl_rasterizer: Implement texture wrap mode p. | bunnei | 1 | -0/+1 | |
2018-09-05 | gl_rasterizer: Implement a VAO cache. | Markus Wick | 1 | -3/+5 | |
This patch caches VAO objects instead of re-emiting all pointers per draw call. Configuring this pointers is known as a fast task, but it yields too many GL calls. So for better performance, just bind the VAO instead of 16 pointers. | |||||
2018-09-05 | renderer_opengl: Implement a buffer cache. | Markus Wick | 1 | -12/+7 | |
The idea of this cache is to avoid redundant uploads. So we are going to cache the uploaded buffers within the stream_buffer and just reuse the old pointers. The next step is to implement a VBO cache on GPU memory, but for now, I want to check the overhead of the cache management. Fetching the buffer over PCI-E should be quite fast. | |||||
2018-08-31 | gl_renderer: Cache textures, framebuffers, and shaders based on CPU address. | bunnei | 1 | -3/+3 | |
2018-08-31 | gl_rasterizer: Fix issues with the rasterizer cache. | bunnei | 1 | -0/+8 | |
- Use a single cached page map. - Fix calculation of ending page. | |||||
2018-08-28 | renderer_opengl: Implement a new shader cache. | bunnei | 1 | -8/+7 | |
2018-08-23 | gl_rasterizer: Implement stencil test. | bunnei | 1 | -0/+3 | |
- Used by Splatoon 2. | |||||
2018-08-22 | renderer_opengl: Namespace OpenGL code | Lioncash | 1 | -2/+6 | |
Namespaces all OpenGL code under the OpenGL namespace. Prevents polluting the global namespace and allows clear distinction between other renderers' code in the future. | |||||
2018-08-21 | GPU: Implemented the logic op functionality of the GPU. | Subv | 1 | -0/+3 | |
This will ASSERT if blending is enabled at the same time as logic ops. | |||||
2018-08-21 | rasterizer_interface: Remove ScreenInfo from AccelerateDraw()'s signature | Lioncash | 1 | -3/+5 | |
This is an OpenGL renderer-specific data type. Given that, this type shouldn't be used within the base interface for the rasterizer. Instead, we can pass this information to the rasterizer via reference. | |||||
2018-08-20 | Rasterizer: Don't attempt to copy over the old texture's data when doing a format reinterpretation if we're only going to clear the framebuffer. | Subv | 1 | -1/+2 | |
2018-08-12 | gl_rasterizer: Use a shared helper to upload from CPU memory. | Markus Wick | 1 | -0/+4 | |
2018-08-12 | gl_rasterizer: Use the stream buffer for constant buffers. | Markus Wick | 1 | -6/+5 | |
2018-08-12 | gl_rasterizer: Use the streaming buffer itself for the constant buffer. | Markus Wick | 1 | -2/+1 | |
Don't emut copies, especially not for data, which is used once. They just end in a huge GPU overhead. | |||||
2018-08-12 | gl_rasterizer: Use a helper for aligning the buffer. | Markus Wick | 1 | -1/+3 | |
2018-08-12 | Update the stream_buffer helper from Citra. | Markus Wick | 1 | -2/+1 | |
Please see https://github.com/citra-emu/citra/pull/3666 for more details. | |||||
2018-08-12 | core: Namespace EmuWindow | Lioncash | 1 | -3/+6 | |
Gets the class out of the global namespace. | |||||
2018-08-02 | video_core: Make global EmuWindow instance part of the base renderer class | Lioncash | 1 | -1/+4 | |
Makes the global a member of the RendererBase class. We also change this to be a reference. Passing any form of null pointer to these functions is incorrect entirely, especially given the code itself assumes that the pointer would always be in a valid state. This also makes it easier to follow the lifecycle of instances being used, as we explicitly interact the renderer with the rasterizer, rather than it just operating on a global pointer. | |||||
2018-07-24 | gl_rasterizer: Use in-class member initializers where applicable | Lioncash | 1 | -5/+5 | |
We can just assign to the members directly in these cases. | |||||
2018-07-24 | gl_rasterizer: Implement texture border color. | bunnei | 1 | -4/+1 | |
2018-07-04 | GPU: Only configure the used framebuffers during clear. | Subv | 1 | -1/+1 | |
Don't try to configure the color buffer if it is not being cleared, it may not be completely valid at this point. | |||||
2018-07-03 | GPU: Factor out the framebuffer configuration code for both Clear and Draw commands. | Subv | 1 | -0/+5 | |
2018-07-03 | GPU: Bind and clear the render target when the CLEAR_BUFFERS register is written to. | Subv | 1 | -0/+1 | |
2018-07-02 | GPU: Set up the depth test state on every draw. | Subv | 1 | -0/+3 | |
2018-06-27 | gl_rasterizer_cache: Remove Citra's rasterizer cache, always load/flush surfaces. | bunnei | 1 | -1/+1 | |
2018-06-27 | gl_rasterizer: Workaround for when exceeding max UBO size. | bunnei | 1 | -1/+1 | |
2018-06-10 | Rasterizer: Use UBOs instead of SSBOs for uploading const buffers. | Subv | 1 | -0/+5 | |
This should help a bit with GPU performance once we're GPU-bound. | |||||
2018-06-09 | GPU: Synchronize the blend state on every draw call. | Subv | 1 | -8/+2 | |
Only independent blending on render target 0 is implemented for now. This fixes the elongated squids in Splatoon 2's boot screen. | |||||
2018-06-06 | GPU: Implement sampling multiple textures in the generated glsl shaders. | Subv | 1 | -3/+11 | |
All tested games that use a single texture show no regression. Only Texture2D textures are supported right now, each shader gets its own "tex_fs/vs/gs" sampler array to maintain independent textures between shader stages, the textures themselves are reused if possible. | |||||
2018-05-19 | GLRenderer: Remove unused hw_vao_enabled_attributes variable. | Subv | 1 | -1/+0 | |
2018-05-19 | GLRenderer: Remove unused vertex buffer and increase the size of the stream buffer to 128 MB. | Subv | 1 | -5/+2 | |
The stream buffer is where all the vertex data is copied, some games require this to be much bigger than the 4 MB we used to have. | |||||
2018-04-25 | gl_rasterizer_cache: Update to be based on GPU addresses, not CPU addresses. | bunnei | 1 | -3/+4 | |
2018-04-23 | GPU: Support multiple enabled vertex arrays. | Subv | 1 | -3/+3 | |
The vertex arrays will be copied to the stream buffer one after the other, and the attributes will be set using the ARB_vertex_attrib_binding extension. yuzu now thus requires OpenGL 4.3 or the ARB_vertex_attrib_binding extension. | |||||
2018-04-21 | opengl: Remove unnecessary header inclusions | Lioncash | 1 | -5/+0 | |
2018-04-18 | renderer_opengl: Implement BlendEquation and BlendFunc. | bunnei | 1 | -1/+1 | |
2018-04-17 | gl_rasterizer: Implement indexed vertex mode. | bunnei | 1 | -1/+0 | |
2018-04-15 | GPU: Use the same buffer names in the generated GLSL and the buffer uploading code. | Subv | 1 | -3/+2 | |
2018-04-15 | GPU: Don't use explicit binding points when uploading the constbuffers to opengl. | Subv | 1 | -2/+11 | |
The bindpoints will now be dynamically calculated based on the number of buffers used by the previous shader stage. | |||||
2018-04-15 | GPU: Use the buffer hints from the shader decompiler to upload only the necessary const buffers for each shader stage. | Subv | 1 | -1/+2 | |
2018-04-15 | GPU: Upload the entirety of each constbuffer for each shader stage as SSBOs. | Subv | 1 | -1/+6 | |
We're going to need the shader generator to give us a mapping of the actual used const buffers to properly bind them to the shader. | |||||
2018-04-15 | GPU: Allow configuring ssbos in the opengl state manager. | Subv | 1 | -0/+2 | |
2018-04-15 | shaders: Add NumTextureSamplers const, remove unused #pragma. | bunnei | 1 | -1/+1 | |
2018-04-14 | gl_rasterizer: Generate shaders and upload uniforms. | bunnei | 1 | -4/+3 | |
2018-04-14 | gl_rasterizer: Use shader program manager, remove test shader. | bunnei | 1 | -53/+4 | |
2018-04-14 | renderer_opengl: Use OGLProgram instead of OGLShader. | bunnei | 1 | -1/+1 | |
2018-04-07 | GL: Set up the textures used for each draw call. | Subv | 1 | -0/+3 | |
Each Maxwell shader stage can have an arbitrary number of textures, but we're limited to a certain number in OpenGL. We try to only use the minimum amount of host textures by not keeping a 1:1 relation between guest texture ids and host texture ids, ie, guest texture id 8 can be host texture id 0 if it's the only texture used in the guest shader program. This mapping will have to be passed to the shader decompiler so it can rewrite the texture accesses. | |||||
2018-04-07 | GL: Ported the SamplerInfo struct from citra. | Subv | 1 | -1/+20 | |
2018-03-27 | gl_rasterizer: Move code to bind framebuffer surfaces before draw to its own function. | bunnei | 1 | -0/+4 | |
2018-03-27 | gl_rasterizer: Add a SyncViewport method. | bunnei | 1 | -0/+3 | |
2018-03-27 | rasterizer: Rename DrawTriangles to DrawArrays. | bunnei | 1 | -1/+1 | |
2018-03-27 | gl_rasterizer: Use 32 texture units instead of 3. | bunnei | 1 | -1/+1 | |
2018-03-23 | rasterizer: Flush and invalidate regions should be 64-bit. | bunnei | 1 | -3/+3 | |
2018-03-23 | video_core: Remove usage of PAddr and replace with VAddr. | bunnei | 1 | -4/+4 | |
2018-03-23 | video_core: Move FramebufferInfo to FramebufferConfig in GPU. | bunnei | 1 | -2/+2 | |
2018-03-23 | gl_rasterizer: Add a simple passthrough shader in lieu of shader generation. | bunnei | 1 | -2/+12 | |
2018-03-20 | renderer_gl: Port boilerplate rasterizer code over from Citra. | bunnei | 1 | -0/+162 | |
2018-01-13 | Remove references to PICA and rasterizers in video_core | James Rowe | 1 | -316/+0 | |
2018-01-01 | core/video_core: Fix a bunch of u64 -> u32 warnings. | bunnei | 1 | -2/+2 | |
2017-08-25 | gl_rasterizer: implement custom clip plane | wwylele | 1 | -1/+8 | |
2017-07-01 | gl_rasterizer: use texture buffer for proctex LUT | wwylele | 1 | -0/+5 | |
2017-06-22 | gl_rasterizer: use texture buffer for fog LUT | wwylele | 1 | -1/+2 | |
2017-06-21 | gl_rasterizer/lighting: fix LUT interpolation | wwylele | 1 | -3/+4 | |
2017-05-30 | gl_rasterizer: sync spot light status | wwylele | 1 | -1/+5 | |
2017-05-20 | gl_rasterizer: implement procedural texture | wwylele | 1 | -1/+34 | |
2017-04-17 | OpenGL: Move PicaShaderConfig to gl_shader_gen.h | Yuri Kunde Schlesner | 1 | -199/+2 | |
Also move the implementation of CurrentConfig to the cpp file. | |||||
2017-02-09 | VideoCore: Split regs.h inclusions | Yuri Kunde Schlesner | 1 | -1/+4 | |
2017-02-04 | VideoCore: Move Regs to its own file | Yuri Kunde Schlesner | 1 | -1/+1 | |
2017-02-04 | VideoCore: Split lighting regs from Regs struct | Yuri Kunde Schlesner | 1 | -4/+4 | |
2017-02-04 | VideoCore: Split framebuffer regs from Regs struct | Yuri Kunde Schlesner | 1 | -4/+4 | |
2017-02-04 | VideoCore: Split texturing regs from Regs struct | Yuri Kunde Schlesner | 1 | -12/+13 | |
2017-02-04 | VideoCore: Split rasterizer regs from Regs struct | Yuri Kunde Schlesner | 1 | -4/+4 | |
2017-01-30 | VideoCore: Change misleading register names | Yuri Kunde Schlesner | 1 | -1/+1 | |
A few registers had names such as "count" or "number" when they actually contained the maximum (that is, count - 1). This can easily lead to hard to notice off by one errors. | |||||
2017-01-23 | video_core: fix gl_rasterizer warning on MSVC | Kloen | 1 | -1/+1 | |
2016-09-30 | OpenGL: Take cached viewport sub-rect into account for scissor | Yuri Kunde Schlesner | 1 | -3/+0 | |
Fixes #1938 | |||||
2016-09-29 | rasterizer: separate TextureCopy from DisplayTransfer | wwylele | 1 | -0/+1 | |
2016-09-21 | Remove empty newlines in #include blocks. | Emmanuel Gil Peyrot | 1 | -4/+0 | |
This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation. | |||||
2016-09-19 | Manually tweak source formatting and then re-run clang-format | Yuri Kunde Schlesner | 1 | -6/+3 | |
2016-09-18 | Sources: Run clang-format on everything. | Emmanuel Gil Peyrot | 1 | -21/+29 | |
2016-06-28 | OpenGL: Add scaled resolution support to scissor | Yuri Kunde Schlesner | 1 | -1/+2 | |
2016-06-28 | PICA: Scissor fixes and cleanups | Yuri Kunde Schlesner | 1 | -4/+4 | |
2016-06-28 | PICA: Implement scissor test | Subv | 1 | -1/+11 | |
2016-06-07 | OpenGL: Implement fog | Jannik Vogel | 1 | -2/+15 | |
2016-06-07 | OpenGL: Avoid undefined behaviour for UNIFORM_BLOCK_DATA_SIZE | Jannik Vogel | 1 | -4/+6 | |
2016-05-23 | Pica: Name LightSrc.config register | Jannik Vogel | 1 | -2/+2 | |
2016-05-23 | Pica: Name lighting.config0 and .config1 registers | Jannik Vogel | 1 | -12/+12 | |
2016-05-23 | OpenGL: Use uniforms for dist_atten_bias and dist_atten_scale | Jannik Vogel | 1 | -5/+9 | |
2016-05-14 | OpenGL: Only update depth uniforms if the depth changed | Jannik Vogel | 1 | -2/+5 | |
2016-05-14 | OpenGL: value-initialize variables which cause uninitialised access otherwise | Jannik Vogel | 1 | -2/+2 | |
2016-05-11 | OpenGL: Implement texture type 3 | Jannik Vogel | 1 | -0/+5 | |
2016-05-10 | gl_rasterizer: Fix compilation for debug builds | Lioncash | 1 | -1/+1 | |
2016-05-10 | OpenGL: Implement W-Buffers and fix depth-mapping | Jannik Vogel | 1 | -0/+5 | |
2016-05-03 | Pica: Use a union for PicaShaderConfig | Jannik Vogel | 1 | -87/+97 | |
2016-05-03 | Pica: Add TevStageConfigRaw to PicaShaderConfig (MSVC workaround) | Jannik Vogel | 1 | -1/+22 | |
2016-05-03 | Pica: Make PicaShaderConfig trivially_copyable and clear it before use | Jannik Vogel | 1 | -21/+28 | |
2016-05-03 | OpenGL: Don't copy const_color (Reverts #1745) | Jannik Vogel | 1 | -2/+3 | |
2016-05-01 | OpenGL: Copy TevStageConfig using a loop. Fixes bug: const_color not copied | Jannik Vogel | 1 | -30/+11 | |
2016-04-30 | VideoCore: Run include-what-you-use and fix most includes. | Emmanuel Gil Peyrot | 1 | -2/+12 | |
2016-04-22 | HWRasterizer: reorder declarations to match defs | tfarley | 1 | -9/+9 | |
2016-04-21 | HWRasterizer: Texture forwarding | tfarley | 1 | -66/+10 | |
2016-04-08 | OpenGL: Split buffer-write mask sync into seperate functions | Jannik Vogel | 1 | -0/+9 | |
2016-03-03 | Add immediate mode vertex submission | Dwayne Slater | 1 | -0/+1 | |
2016-02-05 | pica: Cleanup lighting register definitions and documentation. | bunnei | 1 | -15/+15 | |
2016-02-05 | gl_rasterizer: Use alignas(16) instead of explicit padding. | bunnei | 1 | -13/+6 | |
2016-02-05 | renderer_opengl: Use GLvec3/GLvec4 aliases for commonly used types. | bunnei | 1 | -9/+10 | |
2016-02-05 | gl_rasterizer: Fix issue with interpolation of opposite quaternions. | bunnei | 1 | -1/+7 | |
2016-02-05 | pica_types: Replace float24/20/16 with a template class. | bunnei | 1 | -2/+2 | |
2016-02-05 | gl_rasterizer: Remove unnecessary casts. | bunnei | 1 | -6/+6 | |
2016-02-05 | gl_rasterizer: Fix PicaShaderConfig on GCC. | bunnei | 1 | -29/+27 | |
2016-02-05 | gl_rasterizer: Initial implementation of bump mapping. | bunnei | 1 | -0/+6 | |
2016-02-05 | gl_shader_gen: Implement lighting red, green, and blue reflection. | bunnei | 1 | -1/+17 | |
2016-02-05 | gl_shader_gen: Implement fragment lighting fresnel effect. | bunnei | 1 | -0/+7 | |
2016-02-05 | gl_shader_gen: Implement fragment lighting specular 1 component. | bunnei | 1 | -0/+8 | |
2016-02-05 | gl_shader_gen: Add support for D0 LUT scaling. | bunnei | 1 | -1/+3 | |
2016-02-05 | gl_shader_gen: Refactor lighting config to match Pica register naming. | bunnei | 1 | -28/+32 | |
- Also implement D0 LUT enable. | |||||
2016-02-05 | pica: Cleanup and add some comments to lighting registers. | bunnei | 1 | -1/+1 | |
2016-02-05 | gl_rasterizer: Minor naming refactor on Pica register naming. | bunnei | 1 | -5/+5 | |
2016-02-05 | renderer_opengl: Use textures for fragment shader LUTs instead of UBOs. | bunnei | 1 | -4/+6 | |
- Gets us LUT interpolation for free. - Some older Intel GPU drivers did not support the big UBOs needed to store the LUTs. | |||||
2016-02-05 | renderer_opengl: Initial implementation of basic specular lighting. | bunnei | 1 | -0/+20 | |
2016-02-05 | renderer_opengl: Implement HW fragment lighting distance attenuation. | bunnei | 1 | -14/+22 | |
2016-02-05 | renderer_opengl: Implement HW fragment lighting LUTs within our default UBO. | bunnei | 1 | -2/+7 | |
2016-02-05 | renderer_opengl: Implement diffuse component of HW fragment lighting. | bunnei | 1 | -3/+58 | |
2016-02-03 | hwrasterizer: Use proper cached fb addr/size | tfarley | 1 | -2/+2 | |
2016-01-21 | hwrasterizer: Use depth offset | tfarley | 1 | -1/+5 | |
2015-12-08 | VideoCore: Unify interface to OpenGL and SW rasterizers | Yuri Kunde Schlesner | 1 | -17/+2 | |
This removes explicit checks sprinkled all over the codebase to instead just have the SW rasterizer expose an implementation with no-ops for most operations. | |||||
2015-12-07 | VideoCore: Rename HWRasterizer methods to be less confusing | Yuri Kunde Schlesner | 1 | -3/+3 | |
2015-11-25 | Use regular uniform location | Pierre de La Morinerie | 1 | -7/+0 | |
The support for GL_ARB_explicit_uniform_location is not that good (53% according to http://feedback.wildfiregames.com/report/opengl/feature/GL_ARB_explicit_uniform_location). This fix the shader compilation on Intel HD 4000 (#1222). | |||||
2015-11-19 | FragShader: Use an UBO instead of several individual uniforms | Subv | 1 | -6/+21 | |
2015-10-22 | gl_shader_gen: Various cleanups to shader generation. | bunnei | 1 | -1/+1 | |
2015-10-22 | gl_rasterizer: Use MMH3 hash for shader cache hey. | bunnei | 1 | -76/+57 | |
- Includes a check to confirm no hash collisions. | |||||
2015-10-22 | gl_shader_gen: Require explicit uniform locations. | bunnei | 1 | -26/+14 | |
- Fixes uniform issue on AMD. | |||||
2015-10-22 | gl_rasterizer: Add documentation to ShaderCacheKey. | bunnei | 1 | -0/+16 | |
2015-10-22 | renderer_opengl: Refactor shader generation/caching to be more organized + various cleanups. | bunnei | 1 | -23/+18 | |
2015-10-22 | gl_rasterizer: Move logic for creating ShaderCacheKey to a static function. | bunnei | 1 | -1/+44 | |
2015-10-22 | Initial implementation of fragment shader generation with caching. | Subv | 1 | -31/+79 | |
2015-09-11 | video_core: Reorganize headers | Lioncash | 1 | -3/+2 | |
2015-09-03 | OpenGL: Use Sampler Objects to decouple sampler config from textures | Yuri Kunde Schlesner | 1 | -0/+19 | |
Fixes #978 | |||||
2015-08-15 | Shader: Move shader code to its own subdirectory, "shader". | bunnei | 1 | -1/+1 | |
2015-08-15 | GPU: Refactor "VertexShader" namespace to "Shader". | bunnei | 1 | -5/+5 | |
- Also renames "vertex_shader.*" to "shader_interpreter.*" | |||||
2015-06-28 | Core: Cleanup hw includes. | Emmanuel Gil Peyrot | 1 | -0/+1 | |
2015-06-28 | Common: Cleanup key_map includes. | Emmanuel Gil Peyrot | 1 | -0/+4 | |
2015-05-31 | Pica: Implement LogicOp function. | bunnei | 1 | -0/+3 | |
2015-05-23 | OpenGL renderer | tfarley | 1 | -0/+207 | |