Move SPIR-V emission functions to their own header
This commit is contained in:
parent
ee61ec2c39
commit
bed090807a
26 changed files with 637 additions and 579 deletions
|
@ -254,7 +254,7 @@ std::unique_ptr<GraphicsProgram> ShaderCache::CreateGraphicsProgram(
|
|||
OGLProgram gl_program;
|
||||
gl_program.handle = glCreateProgram();
|
||||
|
||||
Shader::Backend::SPIRV::Bindings binding;
|
||||
Shader::Backend::Bindings binding;
|
||||
for (size_t index = 0; index < Maxwell::MaxShaderProgram; ++index) {
|
||||
if (key.unique_hashes[index] == 0) {
|
||||
continue;
|
||||
|
@ -297,8 +297,7 @@ std::unique_ptr<ComputeProgram> ShaderCache::CreateComputeProgram(ShaderPools& p
|
|||
|
||||
Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()};
|
||||
Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)};
|
||||
Shader::Backend::SPIRV::Bindings binding;
|
||||
const std::vector<u32> code{EmitSPIRV(profile, program, binding)};
|
||||
const std::vector<u32> code{EmitSPIRV(profile, program)};
|
||||
OGLProgram gl_program;
|
||||
gl_program.handle = glCreateProgram();
|
||||
AddShader(GL_COMPUTE_SHADER, gl_program.handle, code);
|
||||
|
|
|
@ -315,8 +315,9 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
|
|||
std::array<const Shader::Info*, Maxwell::MaxShaderStage> infos{};
|
||||
std::array<vk::ShaderModule, Maxwell::MaxShaderStage> modules;
|
||||
|
||||
Shader::Backend::SPIRV::Bindings binding;
|
||||
for (size_t index = uses_vertex_a && uses_vertex_b ? 1 : 0; index < Maxwell::MaxShaderProgram; ++index) {
|
||||
Shader::Backend::Bindings binding;
|
||||
for (size_t index = uses_vertex_a && uses_vertex_b ? 1 : 0; index < Maxwell::MaxShaderProgram;
|
||||
++index) {
|
||||
if (key.unique_hashes[index] == 0) {
|
||||
continue;
|
||||
}
|
||||
|
@ -388,8 +389,7 @@ std::unique_ptr<ComputePipeline> PipelineCache::CreateComputePipeline(
|
|||
|
||||
Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()};
|
||||
Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)};
|
||||
Shader::Backend::SPIRV::Bindings binding;
|
||||
const std::vector<u32> code{EmitSPIRV(base_profile, program, binding)};
|
||||
const std::vector<u32> code{EmitSPIRV(base_profile, program)};
|
||||
device.SaveShader(code);
|
||||
vk::ShaderModule spv_module{BuildShader(device, code)};
|
||||
if (device.HasDebuggingToolAttached()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue