Remove EPassType from VkShaderManager::Get and CompileNextShader() from VkShaderManager constructor

This commit is contained in:
Magnus Norddahl 2023-04-24 00:14:04 +02:00 committed by Christoph Oelckers
parent f220577ca4
commit 6d3cb20699
4 changed files with 5 additions and 6 deletions

View file

@ -245,7 +245,7 @@ std::unique_ptr<VulkanPipeline> VkRenderPassSetup::CreatePipeline(const VkPipeli
GraphicsPipelineBuilder builder;
builder.Cache(fb->GetRenderPassManager()->GetCache());
VkShaderProgram *program = fb->GetShaderManager()->Get(key.ShaderKey, PassKey.DrawBuffers > 1 ? GBUFFER_PASS : NORMAL_PASS);
VkShaderProgram *program = fb->GetShaderManager()->Get(key.ShaderKey);
builder.AddVertexShader(program->vert.get());
builder.AddFragmentShader(program->frag.get());

View file

@ -32,7 +32,6 @@
VkShaderManager::VkShaderManager(VulkanRenderDevice* fb) : fb(fb)
{
CompileNextShader();
}
VkShaderManager::~VkShaderManager()
@ -45,10 +44,8 @@ void VkShaderManager::Deinit()
RemoveVkPPShader(PPShaders.back());
}
VkShaderProgram* VkShaderManager::Get(const VkShaderKey& k, EPassType passType)
VkShaderProgram* VkShaderManager::Get(const VkShaderKey& key)
{
VkShaderKey key = k;
key.GBufferPass = passType;
auto& program = programs[key];
if (program.frag)
return &program;

View file

@ -112,7 +112,7 @@ public:
void Deinit();
VkShaderProgram* Get(const VkShaderKey& key, EPassType passType);
VkShaderProgram* Get(const VkShaderKey& key);
bool CompileNextShader() { return true; }

View file

@ -296,6 +296,8 @@ void VkRenderState::ApplyRenderPass(int dt)
pipelineKey.ShaderKey.UseShadowmap = gl_light_shadowmap;
pipelineKey.ShaderKey.UseRaytrace = gl_light_raytrace;
pipelineKey.ShaderKey.GBufferPass = mRenderTarget.DrawBuffers > 1;
// Is this the one we already have?
bool inRenderPass = mCommandBuffer;
bool changingPipeline = (!inRenderPass) || (pipelineKey != mPipelineKey);