| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Namespaces all OpenGL code under the OpenGL namespace.
Prevents polluting the global namespace and allows clear distinction
between other renderers' code in the future.
|
| |\
| |
| | |
Port #3353 from Citra: "citra-qt: Add customizable speed limit target "
|
| | | |
|
| |\ \
| | |
| | | |
maxwell_to_gl: Implement PrimitiveTopology::Lines
|
| | | |
| | |
| | | |
Used by Splatoon 2's debug menu.
|
| |\ \ \
| |/ /
|/| | |
GPU: Implemented logic ops.
|
| | | |
| | |
| | |
| | | |
This will ASSERT if blending is enabled at the same time as logic ops.
|
| | | | |
|
| | |/ |
|
| | |
| |
| |
| |
| |
| |
| | |
instructions."
- This reverts commit 3ef4b3d4b445960576f10d1ba6521580d03e3da8.
- This commit had broken a lot of games. We really should do a full implementation of this in one change.
|
| | |
| |
| |
| | |
Resolves a -Wlogical-op-parentheses warning.
|
| |\ \
| | |
| | | |
rasterizer_interface: Remove renderer-specific ScreenInfo type from AccelerateDraw() in RasterizerInterface
|
| | | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
renderers themselves
Given we use a base-class type within the renderer for the rasterizer
(RasterizerInterface), we want to allow renderers to perform more
complex initialization if they need to do such a thing. This makes it
important to reserve type information.
Given the OpenGL renderer is quite simple settings-wise, this is just a
simple shuffling of the initialization code. For something like Vulkan
however this might involve doing something like:
// Initialize and call rasterizer-specific function that requires
// the full type of the instance created.
auto raster = std::make_unique<VulkanRasterizer>(some, params);
raster->CallSomeVulkanRasterizerSpecificFunction();
// Assign to base class variable
rasterizer = std::move(raster)
|
| |\ \
| | |
| | | |
Shaders: Implement depth writing in fragment shaders.
|
| | | |
| | |
| | |
| | | |
We'll write <last color output reg + 2> to gl_FragDepth.
|
| |\ \ \
| | | |
| | | | |
renderer_opengl: Use LOG_DEBUG for GL_DEBUG_SEVERITY_NOTIFICATION and GL_DEBUG_SEVERITY_LOW logs
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
GL_DEBUG_SEVERITY_LOW logs
LOG_TRACE is only enabled on debug builds which can be quite slow when
trying to debug graphics issues. Instead we can log the messages to the
debug log, which is available on both release and debug builds.
|
| |\ \ \ \
| |/ / /
|/| | | |
Rasterizer: Use PBOs to reinterpret texture formats when games re-use the same memory.
|
| | | | |
| | | |
| | | |
| | | | |
doing format conversion) to a new texture when a game requests an old texture address with a different format.
|
| | | |/
| |/|
| | |
| | | |
format reinterpretation if we're only going to clear the framebuffer.
|
| |\ \ \
| |_|/
|/| | |
gl_stream_buffer: Add missing header guard
|
| | |/
| |
| |
| |
| | |
Prevents potential compilation errors from occuring due to multiple
inclusions
|
| |\ \
| | |
| | | |
gl_shader_decompiler: Implement TextureCube/Texture3D for TEX/TEXS.
|
| | | | |
|
| | | | |
|
| | | | |
|
| |\ \ \
| |/ /
|/| | |
Shaders: Write all the enabled color outputs when a fragment shader exits.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
We were only writing to the first render target before.
Note that this is only the GLSL side of the implementation, supporting multiple render targets requires more changes in the OpenGL renderer.
Dual Source blending is not implemented and stuff that uses it might not work at all.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
The X and Y coordinates should be in gpr8 and gpr8+1, respectively.
This fixes the cutscene rendering in Sonic Mania.
|
| | |/
|/|
| |
| | |
sampling instruction.
|
| |\ \
| | |
| | | |
GLRasterizer: Implemented instanced vertex arrays.
|
| | |/
| |
| |
| | |
Before each draw call, for every enabled vertex array configured as instanced, we take the current instance id and divide it by its configured divisor, then we multiply that by the corresponding stride and increment the start address by the resulting amount. This way we can simulate the vertex array being incremented once per instance without actually using OpenGL's instancing functions.
|
| |\ \
| | |
| | | |
Shaders/TEXS: Write to the correct output register when swizzling.
|
| | | |
| | |
| | |
| | | |
Previously we could end up with a TEXS that didn't write any outputs, this was wrong.
|
| |\ \ \
| | | |
| | | | |
Shaders: Use the correct shader type when sampling textures.
|
| | | | |
| | | |
| | | |
| | | | |
It is unknown how TLD4S determines the sampler type, more research is needed.
|
| | | | |
| | | |
| | | |
| | | | |
Different sampler types have their parameters in different registers.
|
| | | | |
| | | |
| | | |
| | | | |
instructions.
|
| | | | | |
|
| | |/ /
|/| |
| | |
| | | |
Needed by kirby
|
| |\ \ \
| | | |
| | | | |
Shaders: Corrected the 'abs' and 'neg' bit usage in the float arithmetic instructions.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
instructions.
We should definitely audit our shader generator for more errors like this.
|
| |\ \ \ \
| | | | |
| | | | | |
Shader: Remove an unneeded assert, the negate bit is implemented for conversion instructions.
|
| | | |_|/
| |/| |
| | | |
| | | | |
conversion instructions.
|
| |\ \ \ \
| | | | |
| | | | | |
Shaders/TEXS: Fixed the component mask in the TEXS instruction.
|
| | | |_|/
| |/| |
| | | |
| | | | |
Previously we could end up with a TEXS that didn't write any outputs, this was wrong.
|
| |\ \ \ \
| | | | |
| | | | | |
Added WrapMode MirrorOnceClampToEdge
|
| | | |/ /
| |/| |
| | | |
| | | | |
Used by splatoon 2
|
| |\ \ \ \
| |_|/ /
|/| | | |
Shaders: Implemented a stack for the SSY/SYNC instructions.
|