summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader/shader.cpp
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2016-12-17 06:41:38 +0100
committerYuri Kunde Schlesner <yuriks@yuriks.net>2017-01-26 03:53:20 +0100
commit34d581f2dcffa9f54e96af230a56cb01e8e2fccd (patch)
tree5db8f302534297bf2ef9aa16e572da9866db93f1 /src/video_core/shader/shader.cpp
parentMerge pull request #2434 from mailwl/nfc-amiibo (diff)
downloadyuzu-34d581f2dcffa9f54e96af230a56cb01e8e2fccd.tar
yuzu-34d581f2dcffa9f54e96af230a56cb01e8e2fccd.tar.gz
yuzu-34d581f2dcffa9f54e96af230a56cb01e8e2fccd.tar.bz2
yuzu-34d581f2dcffa9f54e96af230a56cb01e8e2fccd.tar.lz
yuzu-34d581f2dcffa9f54e96af230a56cb01e8e2fccd.tar.xz
yuzu-34d581f2dcffa9f54e96af230a56cb01e8e2fccd.tar.zst
yuzu-34d581f2dcffa9f54e96af230a56cb01e8e2fccd.zip
Diffstat (limited to 'src/video_core/shader/shader.cpp')
-rw-r--r--src/video_core/shader/shader.cpp30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/video_core/shader/shader.cpp b/src/video_core/shader/shader.cpp
index 7ae57e619..8dca9d0cb 100644
--- a/src/video_core/shader/shader.cpp
+++ b/src/video_core/shader/shader.cpp
@@ -76,6 +76,17 @@ OutputVertex OutputRegisters::ToVertex(const Regs::ShaderConfig& config) const {
return ret;
}
+void UnitState::LoadInputVertex(const InputVertex& input, int num_attributes) {
+ // Setup input register table
+ const auto& attribute_register_map = g_state.regs.vs.input_register_map;
+
+ for (int i = 0; i < num_attributes; i++)
+ registers.input[attribute_register_map.GetRegisterForAttribute(i)] = input.attr[i];
+
+ conditional_code[0] = false;
+ conditional_code[1] = false;
+}
+
#ifdef ARCHITECTURE_x86_64
static std::unordered_map<u64, std::unique_ptr<JitShader>> shader_map;
static const JitShader* jit_shader;
@@ -109,21 +120,12 @@ void ShaderSetup::Setup() {
MICROPROFILE_DEFINE(GPU_Shader, "GPU", "Shader", MP_RGB(50, 50, 240));
-void ShaderSetup::Run(UnitState& state, const InputVertex& input, int num_attributes) {
+void ShaderSetup::Run(UnitState& state) {
auto& config = g_state.regs.vs;
auto& setup = g_state.vs;
MICROPROFILE_SCOPE(GPU_Shader);
- // Setup input register table
- const auto& attribute_register_map = config.input_register_map;
-
- for (int i = 0; i < num_attributes; i++)
- state.registers.input[attribute_register_map.GetRegisterForAttribute(i)] = input.attr[i];
-
- state.conditional_code[0] = false;
- state.conditional_code[1] = false;
-
#ifdef ARCHITECTURE_x86_64
if (VideoCore::g_shader_jit_enabled) {
jit_shader->Run(setup, state, config.main_offset);
@@ -145,13 +147,7 @@ DebugData<true> ShaderSetup::ProduceDebugInfo(const InputVertex& input, int num_
// Setup input register table
boost::fill(state.registers.input, Math::Vec4<float24>::AssignToAll(float24::Zero()));
- const auto& attribute_register_map = config.input_register_map;
- for (int i = 0; i < num_attributes; i++)
- state.registers.input[attribute_register_map.GetRegisterForAttribute(i)] = input.attr[i];
-
- state.conditional_code[0] = false;
- state.conditional_code[1] = false;
-
+ state.LoadInputVertex(input, num_attributes);
RunInterpreter(setup, state, debug_data, config.main_offset);
return debug_data;
}