diff options
author | Tony Wasserka <neobrainx@gmail.com> | 2015-07-21 15:24:48 +0200 |
---|---|---|
committer | Tony Wasserka <neobrainx@gmail.com> | 2015-07-21 15:24:48 +0200 |
commit | aa6dfdb827cd5887db6aeb992ef992a7aa23f766 (patch) | |
tree | 4612793f498c62d7f582ffe6b464b8450b65e897 /src/video_core/vertex_shader.cpp | |
parent | Merge pull request #964 from lioncash/svc (diff) | |
parent | Pica/Shader: Add geometry shader definitions. (diff) | |
download | yuzu-aa6dfdb827cd5887db6aeb992ef992a7aa23f766.tar yuzu-aa6dfdb827cd5887db6aeb992ef992a7aa23f766.tar.gz yuzu-aa6dfdb827cd5887db6aeb992ef992a7aa23f766.tar.bz2 yuzu-aa6dfdb827cd5887db6aeb992ef992a7aa23f766.tar.lz yuzu-aa6dfdb827cd5887db6aeb992ef992a7aa23f766.tar.xz yuzu-aa6dfdb827cd5887db6aeb992ef992a7aa23f766.tar.zst yuzu-aa6dfdb827cd5887db6aeb992ef992a7aa23f766.zip |
Diffstat (limited to 'src/video_core/vertex_shader.cpp')
-rw-r--r-- | src/video_core/vertex_shader.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/video_core/vertex_shader.cpp b/src/video_core/vertex_shader.cpp index d32c2e371..b77503806 100644 --- a/src/video_core/vertex_shader.cpp +++ b/src/video_core/vertex_shader.cpp @@ -546,20 +546,18 @@ static void ProcessShaderCode(VertexShaderState& state) { static Common::Profiling::TimingCategory shader_category("Vertex Shader"); -OutputVertex RunShader(const InputVertex& input, int num_attributes) { +OutputVertex RunShader(const InputVertex& input, int num_attributes, const Regs::ShaderConfig& config, const State::ShaderSetup& setup) { Common::Profiling::ScopeTimer timer(shader_category); - const auto& regs = g_state.regs; - const auto& vs = g_state.vs; VertexShaderState state; - const u32* main = &vs.program_code[regs.vs_main_offset]; + const u32* main = &setup.program_code[config.main_offset]; state.program_counter = (u32*)main; state.debug.max_offset = 0; state.debug.max_opdesc_id = 0; // Setup input register table - const auto& attribute_register_map = regs.vs_input_register_map; + const auto& attribute_register_map = config.input_register_map; float24 dummy_register; boost::fill(state.input_register_table, &dummy_register); @@ -584,16 +582,16 @@ OutputVertex RunShader(const InputVertex& input, int num_attributes) { state.conditional_code[1] = false; ProcessShaderCode(state); - DebugUtils::DumpShader(vs.program_code.data(), state.debug.max_offset, vs.swizzle_data.data(), - state.debug.max_opdesc_id, regs.vs_main_offset, - regs.vs_output_attributes); + DebugUtils::DumpShader(setup.program_code.data(), state.debug.max_offset, setup.swizzle_data.data(), + state.debug.max_opdesc_id, config.main_offset, + g_state.regs.vs_output_attributes); // TODO: Don't hardcode VS here // Setup output data OutputVertex ret; // TODO(neobrain): Under some circumstances, up to 16 attributes may be output. We need to // figure out what those circumstances are and enable the remaining outputs then. for (int i = 0; i < 7; ++i) { - const auto& output_register_map = regs.vs_output_attributes[i]; + const auto& output_register_map = g_state.regs.vs_output_attributes[i]; // TODO: Don't hardcode VS here u32 semantics[4] = { output_register_map.map_x, output_register_map.map_y, |