aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
AgeCommit message (Collapse)Author
2018-08-20GPU: Implemented the logic op functionality of the GPU.Subv
This will ASSERT if blending is enabled at the same time as logic ops.
2018-08-20GLState: Allow enabling/disabling GL_COLOR_LOGIC_OP independently from blending.Subv
2018-08-20rasterizer_interface: Remove ScreenInfo from AccelerateDraw()'s signatureLioncash
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-20renderer_base: Make creation of the rasterizer, the responsibility of the ↵Lioncash
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)
2018-08-20Shaders: Write all the enabled color outputs when a fragment shader exits.Subv
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.
2018-08-20Rasterizer: Reinterpret the raw texture bytes instead of blitting (and thus ↵Subv
doing format conversion) to a new texture when a game requests an old texture address with a different format.
2018-08-20Rasterizer: Don't attempt to copy over the old texture's data when doing a ↵Subv
format reinterpretation if we're only going to clear the framebuffer.
2018-08-20Merge pull request #1104 from Subv/instanced_arraysbunnei
GLRasterizer: Implemented instanced vertex arrays.
2018-08-20Merge pull request #1115 from Subv/texs_maskbunnei
Shaders/TEXS: Write to the correct output register when swizzling.
2018-08-20Merge pull request #1112 from Subv/sampler_typesbunnei
Shaders: Use the correct shader type when sampling textures.
2018-08-20Implemented RGBA8_UINTDavid Marcec
Needed by kirby
2018-08-19Shaders/TEXS: Fixed the component mask in the TEXS instruction.Subv
Previously we could end up with a TEXS that didn't write any outputs, this was wrong.
2018-08-19Merge pull request #1089 from Subv/neg_bitsbunnei
Shaders: Corrected the 'abs' and 'neg' bit usage in the float arithmetic instructions.
2018-08-19Merge pull request #1105 from Subv/convert_negbunnei
Shader: Remove an unneeded assert, the negate bit is implemented for conversion instructions.
2018-08-19Merge pull request #1102 from ogniK5377/mirror-clamp-edgebunnei
Added WrapMode MirrorOnceClampToEdge
2018-08-19Merge pull request #1101 from Subv/ssy_stackbunnei
Shaders: Implemented a stack for the SSY/SYNC instructions.
2018-08-19Shader: Implemented the TLD4 and TLD4S opcodes using GLSL's textureGather.Subv
It is unknown how TLD4S determines the sampler type, more research is needed.
2018-08-19Shader: Use the right sampler type in the TEX, TEXS and TLDS instructions.Subv
Different sampler types have their parameters in different registers.
2018-08-19Merge pull request #1108 from Subv/front_facingbunnei
Shaders: Implemented the gl_FrontFacing input attribute (attr 63).
2018-08-19Shaders: Implemented the gl_FrontFacing input attribute (attr 63).Subv
2018-08-18Shader: Remove an unneeded assert, the negate bit is implemented for ↵Subv
conversion instructions.
2018-08-18GLRasterizer: Implemented instanced vertex arrays.Subv
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.
2018-08-18Shader: Implemented the predicate and mode arguments of LOP.Subv
The mode can be used to set the predicate to true depending on the result of the logic operation. In some cases, this means discarding the result (writing it to register 0xFF (Zero)). This is used by Super Mario Odyssey.
2018-08-19Added WrapMode MirrorOnceClampToEdgeDavid Marcec
Used by splatoon 2
2018-08-18Shaders: Implemented a stack for the SSY/SYNC instructions.Subv
The SSY instruction pushes an address into the stack, and the SYNC instruction pops it. The current stack depth is 20, we should figure out if this is enough or not.
2018-08-18Shaders: Corrected the 'abs' and 'neg' bit usage in the float arithmetic ↵Subv
instructions. We should definitely audit our shader generator for more errors like this.
2018-08-18Added predcondition GreaterThanWithNanDavid Marcec
2018-08-17Merge pull request #1096 from bunnei/supported-blitsbunnei
gl_rasterizer_cache: Remove asserts for supported blits.
2018-08-17gl_rasterizer_cache: Remove asserts for supported blits.bunnei
2018-08-17renderer_opengl: Treat OpenGL errors as critical.bunnei
2018-08-17Merge pull request #1019 from Subv/vertex_divisorbunnei
Rasterizer: Manually implemented instanced rendering.
2018-08-15gl_rasterizer_cache: Treat Depth formats differently from DepthStencil.bunnei
2018-08-15Shader/Conversion: Implemented the negate bit in F2F and I2I instructions.Subv
2018-08-15Shader/I2F: Implemented the negate I2F_C instruction variant.Subv
2018-08-15Shader/F2I: Implemented the negate bit in the I2F instructionSubv
2018-08-15Shader/F2I: Implemented the F2I_C instruction variant.Subv
2018-08-15Shader/F2I: Implemented the negate bit in the F2I instruction.Subv
2018-08-15Merge pull request #1077 from bunnei/rgba16ubunnei
gl_rasterizer_cache: Add RGBA16U to PixelFormatFromTextureFormat.
2018-08-14gl_rasterizer_cache: Cleanup some PixelFormat names and logging.bunnei
2018-08-14Rasterizer: Implemented instanced rendering.Subv
We keep track of the current instance and update an uniform in the shaders to let them know which instance they are. Instanced vertex arrays are not yet implemented.
2018-08-14gl_rasterizer_cache: Add RGBA16U to PixelFormatFromTextureFormat.bunnei
- Used by Breath of the Wild.
2018-08-14Merge pull request #1069 from bunnei/vtx-szbunnei
maxwell_to_gl: Properly handle UnsignedInt/SignedInt sizes.
2018-08-14Merge pull request #1070 from bunnei/cbuf-szbunnei
gl_rasterizer: Fix upload size for constant buffers.
2018-08-14Merge pull request #1071 from bunnei/fix-ldcbunnei
gl_shader_decompiler: Several fixes for indirect constant buffer loads.
2018-08-14Merge pull request #1068 from bunnei/g8r8sbunnei
gl_rasterizer_cache: Implement G8R8S format.
2018-08-15Implement Z16_UNORM in PixelFormatFromTextureFormat functiongreggameplayer
Require by Zelda Breath Of The Wild
2018-08-14gl_shader_decompiler: Several fixes for indirect constant buffer loads.bunnei
2018-08-14gl_rasterizer: Fix upload size for constant buffers.bunnei
2018-08-14maxwell_to_gl: Properly handle UnsignedInt/SignedInt sizes.bunnei
2018-08-14gl_rasterizer_cache: Implement G8R8S format.bunnei
- Used by Super Mario Odyssey.