summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-05-03 20:53:00 -0300
committerGravatar ameerj2021-07-22 21:51:30 -0400
commitbed090807afd3364ed6ef18a031a0ffd95a1b89b (patch)
tree50035e78e75e7237e4cafcf181eb0b3a2f172912 /src/video_core
parentshader: Optimize NVN Fallthrough (diff)
downloadyuzu-bed090807afd3364ed6ef18a031a0ffd95a1b89b.tar.gz
yuzu-bed090807afd3364ed6ef18a031a0ffd95a1b89b.tar.xz
yuzu-bed090807afd3364ed6ef18a031a0ffd95a1b89b.zip
Move SPIR-V emission functions to their own header
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp5
-rw-r--r--src/video_core/renderer_vulkan/vk_pipeline_cache.cpp8
2 files changed, 6 insertions, 7 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp
index c9ca1f005..6585817bc 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp
@@ -254,7 +254,7 @@ std::unique_ptr<GraphicsProgram> ShaderCache::CreateGraphicsProgram(
254 OGLProgram gl_program; 254 OGLProgram gl_program;
255 gl_program.handle = glCreateProgram(); 255 gl_program.handle = glCreateProgram();
256 256
257 Shader::Backend::SPIRV::Bindings binding; 257 Shader::Backend::Bindings binding;
258 for (size_t index = 0; index < Maxwell::MaxShaderProgram; ++index) { 258 for (size_t index = 0; index < Maxwell::MaxShaderProgram; ++index) {
259 if (key.unique_hashes[index] == 0) { 259 if (key.unique_hashes[index] == 0) {
260 continue; 260 continue;
@@ -297,8 +297,7 @@ std::unique_ptr<ComputeProgram> ShaderCache::CreateComputeProgram(ShaderPools& p
297 297
298 Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()}; 298 Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()};
299 Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)}; 299 Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)};
300 Shader::Backend::SPIRV::Bindings binding; 300 const std::vector<u32> code{EmitSPIRV(profile, program)};
301 const std::vector<u32> code{EmitSPIRV(profile, program, binding)};
302 OGLProgram gl_program; 301 OGLProgram gl_program;
303 gl_program.handle = glCreateProgram(); 302 gl_program.handle = glCreateProgram();
304 AddShader(GL_COMPUTE_SHADER, gl_program.handle, code); 303 AddShader(GL_COMPUTE_SHADER, gl_program.handle, code);
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
index 30b71bdbc..a5edcd072 100644
--- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
@@ -315,8 +315,9 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
315 std::array<const Shader::Info*, Maxwell::MaxShaderStage> infos{}; 315 std::array<const Shader::Info*, Maxwell::MaxShaderStage> infos{};
316 std::array<vk::ShaderModule, Maxwell::MaxShaderStage> modules; 316 std::array<vk::ShaderModule, Maxwell::MaxShaderStage> modules;
317 317
318 Shader::Backend::SPIRV::Bindings binding; 318 Shader::Backend::Bindings binding;
319 for (size_t index = uses_vertex_a && uses_vertex_b ? 1 : 0; index < Maxwell::MaxShaderProgram; ++index) { 319 for (size_t index = uses_vertex_a && uses_vertex_b ? 1 : 0; index < Maxwell::MaxShaderProgram;
320 ++index) {
320 if (key.unique_hashes[index] == 0) { 321 if (key.unique_hashes[index] == 0) {
321 continue; 322 continue;
322 } 323 }
@@ -388,8 +389,7 @@ std::unique_ptr<ComputePipeline> PipelineCache::CreateComputePipeline(
388 389
389 Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()}; 390 Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()};
390 Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)}; 391 Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)};
391 Shader::Backend::SPIRV::Bindings binding; 392 const std::vector<u32> code{EmitSPIRV(base_profile, program)};
392 const std::vector<u32> code{EmitSPIRV(base_profile, program, binding)};
393 device.SaveShader(code); 393 device.SaveShader(code);
394 vk::ShaderModule spv_module{BuildShader(device, code)}; 394 vk::ShaderModule spv_module{BuildShader(device, code)};
395 if (device.HasDebuggingToolAttached()) { 395 if (device.HasDebuggingToolAttached()) {