Commit Graph

64 Commits (8aeff9cf8e84c27ab83cea8df1a94ce8082efc78)

Author SHA1 Message Date
bunnei 8aeff9cf8e gl_rasterizer: Fix check for if a shader stage is enabled. 7 years ago
Subv 9f6a5660e8 GPU: Allow using the old NV04 values for the depth test function.
These seem to be just a valid as the GL token values. Thanks @ReinUsesLisp

This restores graphical output to Disgaea 5
7 years ago
Subv c1bebdef5e GPU: Flip the triangle front face winding if the GPU is configured to not flip the triangles.
OpenGL's default behavior is already correct when the GPU is configured to flip the triangles.

This fixes 1-2 Switch's splash screen.
7 years ago
bunnei c996787d84
Merge pull request #609 from Subv/clear_buffers
GPU: Implemented the CLEAR_BUFFERS register.
7 years ago
Subv 827bb08c91 GPU: Added registers for the CLEAR_BUFFERS and CLEAR_COLOR methods. 7 years ago
Subv 6e0eba9917 GPU: Use only the least significant 3 bits when reading the depth test func.
Some games set the full GL define value here (including nouveau), but others just seem to set those last 3 bits.
7 years ago
bunnei 92c7135065
Merge pull request #608 from Subv/depth
GPU: Implemented the depth buffer and depth test + culling
7 years ago
Subv c1f55c32c8 GPU: Added registers for depth test and cull mode. 7 years ago
Subv 0f929762b3 GPU: Implemented the Z24S8 depth format and load the depth framebuffer. 7 years ago
Subv cc73bad293 GPU: Added register definitions for the vertex buffer base element. 7 years ago
bunnei 6a28a66832 maxwell_3d: Add a struct for RenderTargetConfig. 7 years ago
Subv c712dafaee GPU: Added registers for normal and independent blending. 7 years ago
Subv dbfc39d214 GPU: Implement sampling multiple textures in the generated glsl shaders.
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.
7 years ago
Subv 5d55403f94 GPU: Calculate the correct viewport dimensions based on the scale and translate registers.
This is how nouveau calculates the viewport width and height. For some reason some games set 0xFFFF in the VIEWPORT_HORIZ and VIEWPORT_VERT registers, maybe those are a misnomer and actually refer to something else?
7 years ago
Subv c16cfbbc6c GPU: Reduce the number of registers of Maxwell3D to 0xE00.
The rest are just macro shim registers.
7 years ago
Subv a994446b6e GPU: Move the Maxwell3D macro uploading code to the inside of the Maxwell3D processor.
It doesn't belong in the PFIFO handler.
7 years ago
bunnei e8c2bb24b2
Merge pull request #386 from Subv/gpu_query
GPU: Added asserts to our code for handling the QUERY_GET GPU command.
7 years ago
Subv f208953585 GPU: Added asserts to our code for handling the QUERY_GET GPU command.
This is based on research from nouveau. Many things are currently unknown and will require hwtests in the future.
This commit also stubs QueryMode::Write2 to do the same as Write. Nouveau code treats them interchangeably, it is currently unknown what the difference is.
7 years ago
Subv 9531a29283 GPU: Support multiple enabled vertex arrays.
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.
7 years ago
bunnei ce4f159b1c
gl_shader_gen: Support vertical/horizontal viewport flipping. (#347)
* gl_shader_gen: Support vertical/horizontal viewport flipping.

* fixup! gl_shader_gen: Support vertical/horizontal viewport flipping.
7 years ago
bunnei 174cba5c58 renderer_opengl: Implement BlendEquation and BlendFunc. 7 years ago
bunnei 1a1af3fda3 gl_rasterizer: Implement indexed vertex mode. 7 years ago
Subv ae58e46036 GPU: Added a function to determine whether a shader stage is enabled or not. 7 years ago
bunnei 35aca0bf1f maxwell_3d: Make memory_manager public. 7 years ago
bunnei 33bb53571b maxwell_3d: Fix shader_config decodings. 7 years ago
Subv 11b4ab9685 GPU: Use the MacroInterpreter class to execute the GPU macros instead of HLEing them. 7 years ago
Subv 1ec8d2123d GPU: Implemented a gpu macro interpreter.
The Ryujinx macro interpreter and envydis were used as reference.

Macros are programs that are uploaded by the games during boot and can later be called by writing to their method id in a GPU command buffer.
7 years ago
bunnei d30110348b gl_rasterizer: Add a SyncViewport method. 7 years ago
bunnei a6cab532f8 gl_rasterizer: Normalize vertex array data as appropriate. 7 years ago
bunnei 3754e0fdfd maxwell_3d: Use names that match envytools for VertexType. 7 years ago
bunnei 15925b8293 maxwell_3d: Add VertexAttribute struct and cleanup. 7 years ago
bunnei ed2134784e gl_rasterizer: Implement AnalyzeVertexArray. 7 years ago
bunnei 94c70693f9 maxwell: Add RenderTargetFormat enum. 7 years ago
Subv 4697025b73 GPU: Load the sampler info (TSC) when retrieving active textures. 7 years ago
Subv 2c785bd06c GPU: Added a function to retrieve the active textures for a shader stage.
TODO: A shader may not use all of these textures at the same time, shader analysis should be performed to determine which textures are actually sampled.
7 years ago
Subv 9b9de30086 GPU: Added viewport registers to Maxwell3D's reg structure. 7 years ago
bunnei 3a6604e8fa maxwell_3d: Add some format decodings and string helper functions. 7 years ago
Subv c450d264eb GPU: Added vertex attribute format registers. 7 years ago
Subv ae28a52277 GPU: Added registers for the number of vertices to render. 7 years ago
Subv 7a27a11770 GPU: Added Z buffer registers to Maxwell3D's reg structure. 7 years ago
Subv 21d9519032 GPU: Added the render target (RT) registers to Maxwell3D's reg structure. 7 years ago
Subv dcae0c9a4f GPU: Added the TSC registers to the Maxwell3D register structure. 7 years ago
Subv cff7b29bba GPU: Added the TIC registers to the Maxwell3D register structure. 7 years ago
Subv 03156d0c9a GPU: Implement macro 0xE1A BindTextureInfoBuffer in HLE.
This macro simply sets the current CB_ADDRESS to the texture buffer address for the input shader stage.
7 years ago
Subv 7b6868e908 GPU: Implement the BindStorageBuffer macro method in HLE.
This macro binds the SSBO Info Buffer as the current ConstBuffer.
This buffer is usually bound to c0 during shader execution.
Games seem to use this macro instead of directly writing the address for some reason.
7 years ago
Subv 85d820b1b4 GPU: Handle writes to the CB_DATA method.
Writing to this method will cause the written value to be stored in the currently-set ConstBuffer plus CB_POS.

This method is usually used to upload uniforms or other shader-visible data.
7 years ago
Subv aa586fa268 GPU: Store uploaded GPU macros and keep track of the number of method parameters. 7 years ago
Subv 7ac8657432 GPU: Macros are specific to the Maxwell3D engine, so handle them internally. 7 years ago
Subv ccb8da1512 GPU: Renamed ShaderType to ShaderStage as that is less confusing. 7 years ago
Subv 88698c156f GPU: Store shader constbuffer bindings in the GPU state. 7 years ago