diff options
author | bunnei <bunneidev@gmail.com> | 2018-03-17 05:34:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-17 05:34:17 +0100 |
commit | 516ef4f19fc46a7e482a5a56892e74c0aaa17c8e (patch) | |
tree | 0e6fa7a11330d262b3e35e16425e287eccfc4989 /src/video_core/engines/maxwell_3d.h | |
parent | Merge pull request #243 from Subv/vertex_buffer (diff) | |
parent | GPU: Handle the SetShader method call (0xE24) and store the shader config. (diff) | |
download | yuzu-516ef4f19fc46a7e482a5a56892e74c0aaa17c8e.tar yuzu-516ef4f19fc46a7e482a5a56892e74c0aaa17c8e.tar.gz yuzu-516ef4f19fc46a7e482a5a56892e74c0aaa17c8e.tar.bz2 yuzu-516ef4f19fc46a7e482a5a56892e74c0aaa17c8e.tar.lz yuzu-516ef4f19fc46a7e482a5a56892e74c0aaa17c8e.tar.xz yuzu-516ef4f19fc46a7e482a5a56892e74c0aaa17c8e.tar.zst yuzu-516ef4f19fc46a7e482a5a56892e74c0aaa17c8e.zip |
Diffstat (limited to 'src/video_core/engines/maxwell_3d.h')
-rw-r--r-- | src/video_core/engines/maxwell_3d.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index b3f45c85b..c979d4e61 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -4,6 +4,7 @@ #pragma once +#include <array> #include <unordered_map> #include <vector> #include "common/bit_field.h" @@ -133,7 +134,7 @@ public: u32 gpr_alloc; ShaderType type; INSERT_PADDING_WORDS(9); - } shader_config[6]; + } shader_config[MaxShaderProgram]; INSERT_PADDING_WORDS(0x5D0); @@ -149,6 +150,19 @@ public: static_assert(sizeof(Regs) == Regs::NUM_REGS * sizeof(u32), "Maxwell3D Regs has wrong size"); + struct State { + struct ShaderInfo { + Regs::ShaderType type; + Regs::ShaderProgram program; + GPUVAddr begin_address; + GPUVAddr end_address; + }; + + std::array<ShaderInfo, Regs::MaxShaderProgram> shaders; + }; + + State state; + private: MemoryManager& memory_manager; @@ -159,7 +173,7 @@ private: void DrawArrays(); /// Method call handlers - void PrepareShader(const std::vector<u32>& parameters); + void SetShader(const std::vector<u32>& parameters); struct MethodInfo { const char* name; |