From f93d769a1ca127eadfa2edeab03465aeb7552e8d Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 16 Mar 2018 22:06:24 -0500 Subject: GPU: Handle the SetShader method call (0xE24) and store the shader config. --- src/video_core/engines/maxwell_3d.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/video_core/engines/maxwell_3d.h') diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 8870ef119..3708b31ee 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include #include "common/bit_field.h" @@ -104,7 +105,7 @@ public: u32 gpr_alloc; ShaderType type; INSERT_PADDING_WORDS(9); - } shader_config[6]; + } shader_config[MaxShaderProgram]; INSERT_PADDING_WORDS(0x5D0); @@ -120,6 +121,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 shaders; + }; + + State state; + private: MemoryManager& memory_manager; @@ -130,7 +144,7 @@ private: void DrawArrays(); /// Method call handlers - void PrepareShader(const std::vector& parameters); + void SetShader(const std::vector& parameters); struct MethodInfo { const char* name; -- cgit v1.2.3