mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-04-01 09:25:24 +02:00
[dxvk] Don't create shader modules in swapchain blitter
This commit is contained in:
parent
0e140a3613
commit
2653aa9fba
@ -33,15 +33,6 @@ namespace dxvk {
|
|||||||
for (const auto& p : m_cursorPipelines)
|
for (const auto& p : m_cursorPipelines)
|
||||||
vk->vkDestroyPipeline(vk->device(), p.second, nullptr);
|
vk->vkDestroyPipeline(vk->device(), p.second, nullptr);
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_shaderVsBlit.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_shaderFsBlit.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_shaderFsCopy.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_shaderFsMsBlit.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_shaderFsMsResolve.stageInfo.module, nullptr);
|
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_shaderVsCursor.stageInfo.module, nullptr);
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), m_shaderFsCursor.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);
|
||||||
|
|
||||||
@ -743,31 +734,31 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
void DxvkSwapchainBlitter::createShaders() {
|
void DxvkSwapchainBlitter::createShaders() {
|
||||||
createShaderModule(m_shaderVsBlit, VK_SHADER_STAGE_VERTEX_BIT,
|
initShader(m_shaderVsBlit, VK_SHADER_STAGE_VERTEX_BIT,
|
||||||
sizeof(dxvk_present_vert), dxvk_present_vert);
|
sizeof(dxvk_present_vert), dxvk_present_vert);
|
||||||
createShaderModule(m_shaderFsBlit, VK_SHADER_STAGE_FRAGMENT_BIT,
|
initShader(m_shaderFsBlit, VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
sizeof(dxvk_present_frag_blit), dxvk_present_frag_blit);
|
sizeof(dxvk_present_frag_blit), dxvk_present_frag_blit);
|
||||||
createShaderModule(m_shaderFsCopy, VK_SHADER_STAGE_FRAGMENT_BIT,
|
initShader(m_shaderFsCopy, VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
sizeof(dxvk_present_frag), dxvk_present_frag);
|
sizeof(dxvk_present_frag), dxvk_present_frag);
|
||||||
createShaderModule(m_shaderFsMsBlit, VK_SHADER_STAGE_FRAGMENT_BIT,
|
initShader(m_shaderFsMsBlit, VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
sizeof(dxvk_present_frag_ms_blit), dxvk_present_frag_ms_blit);
|
sizeof(dxvk_present_frag_ms_blit), dxvk_present_frag_ms_blit);
|
||||||
|
|
||||||
if (m_device->features().amdShaderFragmentMask) {
|
if (m_device->features().amdShaderFragmentMask) {
|
||||||
createShaderModule(m_shaderFsMsResolve, VK_SHADER_STAGE_FRAGMENT_BIT,
|
initShader(m_shaderFsMsResolve, VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
sizeof(dxvk_present_frag_ms_amd), dxvk_present_frag_ms_amd);
|
sizeof(dxvk_present_frag_ms_amd), dxvk_present_frag_ms_amd);
|
||||||
} else {
|
} else {
|
||||||
createShaderModule(m_shaderFsMsResolve, VK_SHADER_STAGE_FRAGMENT_BIT,
|
initShader(m_shaderFsMsResolve, VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
sizeof(dxvk_present_frag_ms), dxvk_present_frag_ms);
|
sizeof(dxvk_present_frag_ms), dxvk_present_frag_ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
createShaderModule(m_shaderVsCursor, VK_SHADER_STAGE_VERTEX_BIT,
|
initShader(m_shaderVsCursor, VK_SHADER_STAGE_VERTEX_BIT,
|
||||||
sizeof(dxvk_cursor_vert), dxvk_cursor_vert);
|
sizeof(dxvk_cursor_vert), dxvk_cursor_vert);
|
||||||
createShaderModule(m_shaderFsCursor, VK_SHADER_STAGE_FRAGMENT_BIT,
|
initShader(m_shaderFsCursor, VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
sizeof(dxvk_cursor_frag), dxvk_cursor_frag);
|
sizeof(dxvk_cursor_frag), dxvk_cursor_frag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkSwapchainBlitter::createShaderModule(
|
void DxvkSwapchainBlitter::initShader(
|
||||||
ShaderModule& shader,
|
ShaderModule& shader,
|
||||||
VkShaderStageFlagBits stage,
|
VkShaderStageFlagBits stage,
|
||||||
size_t size,
|
size_t size,
|
||||||
@ -775,22 +766,9 @@ namespace dxvk {
|
|||||||
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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -290,7 +290,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
void createShaders();
|
void createShaders();
|
||||||
|
|
||||||
void createShaderModule(
|
void initShader(
|
||||||
ShaderModule& shader,
|
ShaderModule& shader,
|
||||||
VkShaderStageFlagBits stage,
|
VkShaderStageFlagBits stage,
|
||||||
size_t size,
|
size_t size,
|
||||||
@ -321,4 +321,4 @@ namespace dxvk {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user