mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-04-01 09:25:24 +02:00
[d3d9] Don't create shader module for format helper pipelines
This commit is contained in:
parent
29bdbd7416
commit
c1107b46c7
@ -220,39 +220,27 @@ namespace dxvk {
|
|||||||
specInfo.dataSize = sizeof(specConstant);
|
specInfo.dataSize = sizeof(specConstant);
|
||||||
specInfo.pData = &specConstant;
|
specInfo.pData = &specConstant;
|
||||||
|
|
||||||
|
VkShaderModuleCreateInfo moduleInfo = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };
|
||||||
|
moduleInfo.codeSize = size;
|
||||||
|
moduleInfo.pCode = code;
|
||||||
|
|
||||||
VkComputePipelineCreateInfo pipelineInfo = { VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO };
|
VkComputePipelineCreateInfo pipelineInfo = { VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO };
|
||||||
pipelineInfo.stage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
pipelineInfo.stage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
||||||
|
pipelineInfo.stage.pNext = &moduleInfo;
|
||||||
pipelineInfo.stage.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
pipelineInfo.stage.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
||||||
pipelineInfo.stage.pName = "main";
|
pipelineInfo.stage.pName = "main";
|
||||||
pipelineInfo.stage.pSpecializationInfo = &specInfo;
|
pipelineInfo.stage.pSpecializationInfo = &specInfo;
|
||||||
pipelineInfo.layout = m_pipelineLayout;
|
pipelineInfo.layout = m_pipelineLayout;
|
||||||
pipelineInfo.basePipelineIndex = -1;
|
pipelineInfo.basePipelineIndex = -1;
|
||||||
|
|
||||||
VkShaderModuleCreateInfo moduleInfo = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };
|
|
||||||
moduleInfo.codeSize = size;
|
|
||||||
moduleInfo.pCode = code;
|
|
||||||
|
|
||||||
if (m_device->features().khrMaintenance5.maintenance5
|
|
||||||
|| m_device->features().extGraphicsPipelineLibrary.graphicsPipelineLibrary) {
|
|
||||||
pipelineInfo.stage.pNext = &moduleInfo;
|
|
||||||
} else {
|
|
||||||
VkResult vr = vk->vkCreateShaderModule(vk->device(),
|
|
||||||
&moduleInfo, nullptr, &pipelineInfo.stage.module);
|
|
||||||
|
|
||||||
if (vr != VK_SUCCESS)
|
|
||||||
throw DxvkError(str::format("Failed to create format conversion shader module: ", vr));
|
|
||||||
}
|
|
||||||
|
|
||||||
VkPipeline pipeline = VK_NULL_HANDLE;
|
VkPipeline pipeline = VK_NULL_HANDLE;
|
||||||
VkResult vr = vk->vkCreateComputePipelines(vk->device(),
|
VkResult vr = vk->vkCreateComputePipelines(vk->device(),
|
||||||
VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &pipeline);
|
VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &pipeline);
|
||||||
|
|
||||||
vk->vkDestroyShaderModule(vk->device(), pipelineInfo.stage.module, nullptr);
|
|
||||||
|
|
||||||
if (vr != VK_SUCCESS)
|
if (vr != VK_SUCCESS)
|
||||||
throw DxvkError(str::format("Failed to create format conversion pipeline: ", vr));
|
throw DxvkError(str::format("Failed to create format conversion pipeline: ", vr));
|
||||||
|
|
||||||
return pipeline;
|
return pipeline;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user