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