mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-04-01 09:25:24 +02:00
[hud] Don't create shader module for HUD rendering
This commit is contained in:
parent
c1107b46c7
commit
0e140a3613
@ -219,8 +219,8 @@ namespace dxvk::hud {
|
|||||||
m_gfxPipelineLayout (createPipelineLayout()) {
|
m_gfxPipelineLayout (createPipelineLayout()) {
|
||||||
createComputePipeline(*renderer);
|
createComputePipeline(*renderer);
|
||||||
|
|
||||||
renderer->createShaderModule(m_vs, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_graph_vert), hud_graph_vert);
|
renderer->initShader(m_vs, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_graph_vert), hud_graph_vert);
|
||||||
renderer->createShaderModule(m_fs, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_graph_frag), hud_graph_frag);
|
renderer->initShader(m_fs, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_graph_frag), hud_graph_frag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -230,9 +230,6 @@ namespace dxvk::hud {
|
|||||||
for (const auto& p : m_gfxPipelines)
|
for (const auto& p : m_gfxPipelines)
|
||||||
vk->vkDestroyPipeline(vk->device(), p.second, nullptr);
|
vk->vkDestroyPipeline(vk->device(), p.second, nullptr);
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_vs.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_fs.stageInfo.module, nullptr);
|
|
||||||
|
|
||||||
vk->vkDestroyPipeline(vk->device(), m_computePipeline, nullptr);
|
vk->vkDestroyPipeline(vk->device(), m_computePipeline, nullptr);
|
||||||
vk->vkDestroyPipelineLayout(vk->device(), m_computePipelineLayout, nullptr);
|
vk->vkDestroyPipelineLayout(vk->device(), m_computePipelineLayout, nullptr);
|
||||||
vk->vkDestroyDescriptorSetLayout(vk->device(), m_computeSetLayout, nullptr);
|
vk->vkDestroyDescriptorSetLayout(vk->device(), m_computeSetLayout, nullptr);
|
||||||
@ -529,7 +526,7 @@ namespace dxvk::hud {
|
|||||||
throw DxvkError(str::format("Failed to create frame time compute pipeline layout: ", vr));
|
throw DxvkError(str::format("Failed to create frame time compute pipeline layout: ", vr));
|
||||||
|
|
||||||
HudShaderModule shader = { };
|
HudShaderModule shader = { };
|
||||||
renderer.createShaderModule(shader, VK_SHADER_STAGE_COMPUTE_BIT,
|
renderer.initShader(shader, VK_SHADER_STAGE_COMPUTE_BIT,
|
||||||
sizeof(hud_frame_time_eval), hud_frame_time_eval);
|
sizeof(hud_frame_time_eval), hud_frame_time_eval);
|
||||||
|
|
||||||
VkComputePipelineCreateInfo info = { VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO };
|
VkComputePipelineCreateInfo info = { VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO };
|
||||||
@ -542,8 +539,6 @@ namespace dxvk::hud {
|
|||||||
|
|
||||||
if (vr != VK_SUCCESS)
|
if (vr != VK_SUCCESS)
|
||||||
throw DxvkError(str::format("Failed to create frame time compute pipeline: ", vr));
|
throw DxvkError(str::format("Failed to create frame time compute pipeline: ", vr));
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), shader.stageInfo.module, nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -983,10 +978,10 @@ namespace dxvk::hud {
|
|||||||
: m_device (device),
|
: m_device (device),
|
||||||
m_setLayout (createSetLayout()),
|
m_setLayout (createSetLayout()),
|
||||||
m_pipelineLayout (createPipelineLayout()) {
|
m_pipelineLayout (createPipelineLayout()) {
|
||||||
renderer->createShaderModule(m_fsBackground, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_chunk_frag_background), hud_chunk_frag_background);
|
renderer->initShader(m_fsBackground, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_chunk_frag_background), hud_chunk_frag_background);
|
||||||
renderer->createShaderModule(m_vsBackground, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_chunk_vert_background), hud_chunk_vert_background);
|
renderer->initShader(m_vsBackground, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_chunk_vert_background), hud_chunk_vert_background);
|
||||||
renderer->createShaderModule(m_fsVisualize, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_chunk_frag_visualize), hud_chunk_frag_visualize);
|
renderer->initShader(m_fsVisualize, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_chunk_frag_visualize), hud_chunk_frag_visualize);
|
||||||
renderer->createShaderModule(m_vsVisualize, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_chunk_vert_visualize), hud_chunk_vert_visualize);
|
renderer->initShader(m_vsVisualize, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_chunk_vert_visualize), hud_chunk_vert_visualize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -998,12 +993,6 @@ namespace dxvk::hud {
|
|||||||
vk->vkDestroyPipeline(vk->device(), p.second.visualize, nullptr);
|
vk->vkDestroyPipeline(vk->device(), p.second.visualize, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_vsBackground.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_fsBackground.stageInfo.module, nullptr);
|
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_vsVisualize.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_fsVisualize.stageInfo.module, nullptr);
|
|
||||||
|
|
||||||
vk->vkDestroyPipelineLayout(vk->device(), m_pipelineLayout, nullptr);
|
vk->vkDestroyPipelineLayout(vk->device(), m_pipelineLayout, nullptr);
|
||||||
vk->vkDestroyDescriptorSetLayout(vk->device(), m_setLayout, nullptr);
|
vk->vkDestroyDescriptorSetLayout(vk->device(), m_setLayout, nullptr);
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,8 @@ namespace dxvk::hud {
|
|||||||
: m_device (device),
|
: m_device (device),
|
||||||
m_textSetLayout (createSetLayout()),
|
m_textSetLayout (createSetLayout()),
|
||||||
m_textPipelineLayout (createPipelineLayout()) {
|
m_textPipelineLayout (createPipelineLayout()) {
|
||||||
createShaderModule(m_textVs, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_text_vert), hud_text_vert);
|
initShader(m_textVs, VK_SHADER_STAGE_VERTEX_BIT, sizeof(hud_text_vert), hud_text_vert);
|
||||||
createShaderModule(m_textFs, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_text_frag), hud_text_frag);
|
initShader(m_textFs, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(hud_text_frag), hud_text_frag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -46,9 +46,6 @@ namespace dxvk::hud {
|
|||||||
for (const auto& p : m_textPipelines)
|
for (const auto& p : m_textPipelines)
|
||||||
vk->vkDestroyPipeline(vk->device(), p.second, nullptr);
|
vk->vkDestroyPipeline(vk->device(), p.second, nullptr);
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_textVs.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_textFs.stageInfo.module, nullptr);
|
|
||||||
|
|
||||||
vk->vkDestroyPipelineLayout(vk->device(), m_textPipelineLayout, nullptr);
|
vk->vkDestroyPipelineLayout(vk->device(), m_textPipelineLayout, nullptr);
|
||||||
vk->vkDestroyDescriptorSetLayout(vk->device(), m_textSetLayout, nullptr);
|
vk->vkDestroyDescriptorSetLayout(vk->device(), m_textSetLayout, nullptr);
|
||||||
}
|
}
|
||||||
@ -299,7 +296,7 @@ namespace dxvk::hud {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HudRenderer::createShaderModule(
|
void HudRenderer::initShader(
|
||||||
HudShaderModule& shader,
|
HudShaderModule& shader,
|
||||||
VkShaderStageFlagBits stage,
|
VkShaderStageFlagBits stage,
|
||||||
size_t size,
|
size_t size,
|
||||||
@ -307,22 +304,9 @@ namespace dxvk::hud {
|
|||||||
shader.moduleInfo.codeSize = size;
|
shader.moduleInfo.codeSize = size;
|
||||||
shader.moduleInfo.pCode = code;
|
shader.moduleInfo.pCode = code;
|
||||||
|
|
||||||
|
shader.stageInfo.pNext = &shader.moduleInfo;
|
||||||
shader.stageInfo.stage = stage;
|
shader.stageInfo.stage = stage;
|
||||||
shader.stageInfo.pName = "main";
|
shader.stageInfo.pName = "main";
|
||||||
|
|
||||||
if (m_device->features().khrMaintenance5.maintenance5
|
|
||||||
|| m_device->features().extGraphicsPipelineLibrary.graphicsPipelineLibrary) {
|
|
||||||
shader.stageInfo.pNext = &shader.moduleInfo;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto vk = m_device->vkd();
|
|
||||||
|
|
||||||
VkResult vr = vk->vkCreateShaderModule(vk->device(),
|
|
||||||
&shader.moduleInfo, nullptr, &shader.stageInfo.module);
|
|
||||||
|
|
||||||
if (vr != VK_SUCCESS)
|
|
||||||
throw DxvkError(str::format("Failed to create swap chain blit shader module: ", vr));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ namespace dxvk::hud {
|
|||||||
VkSpecializationInfo getSpecInfo(
|
VkSpecializationInfo getSpecInfo(
|
||||||
const HudSpecConstants* constants) const;
|
const HudSpecConstants* constants) const;
|
||||||
|
|
||||||
void createShaderModule(
|
void initShader(
|
||||||
HudShaderModule& shader,
|
HudShaderModule& shader,
|
||||||
VkShaderStageFlagBits stage,
|
VkShaderStageFlagBits stage,
|
||||||
size_t size,
|
size_t size,
|
||||||
@ -187,4 +187,4 @@ namespace dxvk::hud {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user