mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-21 22:54:16 +01:00
[dxvk] Clean up more code around object creation in meta passes
This commit is contained in:
parent
fc461d0e27
commit
37f31ae1e7
@ -74,15 +74,10 @@ namespace dxvk {
|
|||||||
VK_IMAGE_VIEW_TYPE_2D_ARRAY,
|
VK_IMAGE_VIEW_TYPE_2D_ARRAY,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VkImageViewUsageCreateInfo usageInfo;
|
VkImageViewUsageCreateInfo usageInfo = { VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO };
|
||||||
usageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO;
|
|
||||||
usageInfo.pNext = nullptr;
|
|
||||||
usageInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
usageInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
||||||
|
|
||||||
VkImageViewCreateInfo info;
|
VkImageViewCreateInfo info = { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, &usageInfo };
|
||||||
info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
|
||||||
info.pNext = &usageInfo;
|
|
||||||
info.flags = 0;
|
|
||||||
info.image = m_dstImage->handle();
|
info.image = m_dstImage->handle();
|
||||||
info.viewType = viewTypes.at(uint32_t(m_dstImage->info().type));
|
info.viewType = viewTypes.at(uint32_t(m_dstImage->info().type));
|
||||||
info.format = m_dstImage->info().format;
|
info.format = m_dstImage->info().format;
|
||||||
@ -102,15 +97,10 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
VkImageView DxvkMetaBlitRenderPass::createSrcView(const VkComponentMapping& mapping) {
|
VkImageView DxvkMetaBlitRenderPass::createSrcView(const VkComponentMapping& mapping) {
|
||||||
VkImageViewUsageCreateInfo usageInfo;
|
VkImageViewUsageCreateInfo usageInfo = { VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO };
|
||||||
usageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO;
|
|
||||||
usageInfo.pNext = nullptr;
|
|
||||||
usageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT;
|
usageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT;
|
||||||
|
|
||||||
VkImageViewCreateInfo info;
|
VkImageViewCreateInfo info = { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, &usageInfo };
|
||||||
info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
|
||||||
info.pNext = &usageInfo;
|
|
||||||
info.flags = 0;
|
|
||||||
info.image = m_srcImage->handle();
|
info.image = m_srcImage->handle();
|
||||||
info.viewType = this->viewType();
|
info.viewType = this->viewType();
|
||||||
info.format = m_srcImage->info().format;
|
info.format = m_srcImage->info().format;
|
||||||
@ -189,25 +179,14 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
VkSampler DxvkMetaBlitObjects::createSampler(VkFilter filter) const {
|
VkSampler DxvkMetaBlitObjects::createSampler(VkFilter filter) const {
|
||||||
VkSamplerCreateInfo info;
|
VkSamplerCreateInfo info = { VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO };
|
||||||
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
|
||||||
info.pNext = nullptr;
|
|
||||||
info.flags = 0;
|
|
||||||
info.magFilter = filter;
|
info.magFilter = filter;
|
||||||
info.minFilter = filter;
|
info.minFilter = filter;
|
||||||
info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
||||||
info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.mipLodBias = 0.0f;
|
|
||||||
info.anisotropyEnable = VK_FALSE;
|
|
||||||
info.maxAnisotropy = 1.0f;
|
|
||||||
info.compareEnable = VK_FALSE;
|
|
||||||
info.compareOp = VK_COMPARE_OP_ALWAYS;
|
|
||||||
info.minLod = 0.0f;
|
|
||||||
info.maxLod = 0.0f;
|
|
||||||
info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
|
info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
|
||||||
info.unnormalizedCoordinates = VK_FALSE;
|
|
||||||
|
|
||||||
VkSampler result = VK_NULL_HANDLE;
|
VkSampler result = VK_NULL_HANDLE;
|
||||||
if (m_vkd->vkCreateSampler(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS)
|
if (m_vkd->vkCreateSampler(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS)
|
||||||
@ -217,10 +196,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
VkShaderModule DxvkMetaBlitObjects::createShaderModule(const SpirvCodeBuffer& code) const {
|
VkShaderModule DxvkMetaBlitObjects::createShaderModule(const SpirvCodeBuffer& code) const {
|
||||||
VkShaderModuleCreateInfo info;
|
VkShaderModuleCreateInfo info = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };
|
||||||
info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
|
||||||
info.pNext = nullptr;
|
|
||||||
info.flags = 0;
|
|
||||||
info.codeSize = code.size();
|
info.codeSize = code.size();
|
||||||
info.pCode = code.data();
|
info.pCode = code.data();
|
||||||
|
|
||||||
|
@ -116,17 +116,9 @@ namespace dxvk {
|
|||||||
|
|
||||||
VkDescriptorSetLayout DxvkMetaClearObjects::createDescriptorSetLayout(
|
VkDescriptorSetLayout DxvkMetaClearObjects::createDescriptorSetLayout(
|
||||||
VkDescriptorType descriptorType) {
|
VkDescriptorType descriptorType) {
|
||||||
VkDescriptorSetLayoutBinding bindInfo;
|
VkDescriptorSetLayoutBinding bindInfo = { 0, descriptorType, 1, VK_SHADER_STAGE_COMPUTE_BIT };
|
||||||
bindInfo.binding = 0;
|
|
||||||
bindInfo.descriptorType = descriptorType;
|
|
||||||
bindInfo.descriptorCount = 1;
|
|
||||||
bindInfo.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
|
|
||||||
bindInfo.pImmutableSamplers = nullptr;
|
|
||||||
|
|
||||||
VkDescriptorSetLayoutCreateInfo dsetInfo;
|
VkDescriptorSetLayoutCreateInfo dsetInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO };
|
||||||
dsetInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
|
||||||
dsetInfo.pNext = nullptr;
|
|
||||||
dsetInfo.flags = 0;
|
|
||||||
dsetInfo.bindingCount = 1;
|
dsetInfo.bindingCount = 1;
|
||||||
dsetInfo.pBindings = &bindInfo;
|
dsetInfo.pBindings = &bindInfo;
|
||||||
|
|
||||||
@ -140,17 +132,11 @@ namespace dxvk {
|
|||||||
|
|
||||||
VkPipelineLayout DxvkMetaClearObjects::createPipelineLayout(
|
VkPipelineLayout DxvkMetaClearObjects::createPipelineLayout(
|
||||||
VkDescriptorSetLayout dsetLayout) {
|
VkDescriptorSetLayout dsetLayout) {
|
||||||
VkPushConstantRange pushInfo;
|
VkPushConstantRange pushInfo = { VK_SHADER_STAGE_COMPUTE_BIT, 0, uint32_t(sizeof(DxvkMetaClearArgs)) };
|
||||||
pushInfo.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
|
|
||||||
pushInfo.offset = 0;
|
|
||||||
pushInfo.size = sizeof(DxvkMetaClearArgs);
|
|
||||||
|
|
||||||
VkPipelineLayoutCreateInfo pipeInfo;
|
VkPipelineLayoutCreateInfo pipeInfo = { VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO };
|
||||||
pipeInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
pipeInfo.setLayoutCount = 1;
|
||||||
pipeInfo.pNext = nullptr;
|
pipeInfo.pSetLayouts = &dsetLayout;
|
||||||
pipeInfo.flags = 0;
|
|
||||||
pipeInfo.setLayoutCount = 1;
|
|
||||||
pipeInfo.pSetLayouts = &dsetLayout;
|
|
||||||
pipeInfo.pushConstantRangeCount = 1;
|
pipeInfo.pushConstantRangeCount = 1;
|
||||||
pipeInfo.pPushConstantRanges = &pushInfo;
|
pipeInfo.pPushConstantRanges = &pushInfo;
|
||||||
|
|
||||||
@ -165,10 +151,7 @@ namespace dxvk {
|
|||||||
VkPipeline DxvkMetaClearObjects::createPipeline(
|
VkPipeline DxvkMetaClearObjects::createPipeline(
|
||||||
const SpirvCodeBuffer& spirvCode,
|
const SpirvCodeBuffer& spirvCode,
|
||||||
VkPipelineLayout pipeLayout) {
|
VkPipelineLayout pipeLayout) {
|
||||||
VkShaderModuleCreateInfo shaderInfo;
|
VkShaderModuleCreateInfo shaderInfo = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };
|
||||||
shaderInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
|
||||||
shaderInfo.pNext = nullptr;
|
|
||||||
shaderInfo.flags = 0;
|
|
||||||
shaderInfo.codeSize = spirvCode.size();
|
shaderInfo.codeSize = spirvCode.size();
|
||||||
shaderInfo.pCode = spirvCode.data();
|
shaderInfo.pCode = spirvCode.data();
|
||||||
|
|
||||||
@ -177,22 +160,15 @@ namespace dxvk {
|
|||||||
&shaderInfo, nullptr, &shaderModule) != VK_SUCCESS)
|
&shaderInfo, nullptr, &shaderModule) != VK_SUCCESS)
|
||||||
throw DxvkError("Dxvk: Failed to create meta clear shader module");
|
throw DxvkError("Dxvk: Failed to create meta clear shader module");
|
||||||
|
|
||||||
VkPipelineShaderStageCreateInfo stageInfo;
|
VkPipelineShaderStageCreateInfo stageInfo = { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO };
|
||||||
stageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
|
||||||
stageInfo.pNext = nullptr;
|
|
||||||
stageInfo.flags = 0;
|
|
||||||
stageInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
stageInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
||||||
stageInfo.module = shaderModule;
|
stageInfo.module = shaderModule;
|
||||||
stageInfo.pName = "main";
|
stageInfo.pName = "main";
|
||||||
stageInfo.pSpecializationInfo = nullptr;
|
stageInfo.pSpecializationInfo = nullptr;
|
||||||
|
|
||||||
VkComputePipelineCreateInfo pipeInfo;
|
VkComputePipelineCreateInfo pipeInfo = { VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO };
|
||||||
pipeInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
|
|
||||||
pipeInfo.pNext = nullptr;
|
|
||||||
pipeInfo.flags = 0;
|
|
||||||
pipeInfo.stage = stageInfo;
|
pipeInfo.stage = stageInfo;
|
||||||
pipeInfo.layout = pipeLayout;
|
pipeInfo.layout = pipeLayout;
|
||||||
pipeInfo.basePipelineHandle = VK_NULL_HANDLE;
|
|
||||||
pipeInfo.basePipelineIndex = -1;
|
pipeInfo.basePipelineIndex = -1;
|
||||||
|
|
||||||
VkPipeline result = VK_NULL_HANDLE;
|
VkPipeline result = VK_NULL_HANDLE;
|
||||||
|
@ -192,10 +192,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
VkShaderModule DxvkMetaCopyObjects::createShaderModule(
|
VkShaderModule DxvkMetaCopyObjects::createShaderModule(
|
||||||
const SpirvCodeBuffer& code) const {
|
const SpirvCodeBuffer& code) const {
|
||||||
VkShaderModuleCreateInfo info;
|
VkShaderModuleCreateInfo info = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };
|
||||||
info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
|
||||||
info.pNext = nullptr;
|
|
||||||
info.flags = 0;
|
|
||||||
info.codeSize = code.size();
|
info.codeSize = code.size();
|
||||||
info.pCode = code.data();
|
info.pCode = code.data();
|
||||||
|
|
||||||
|
@ -92,23 +92,13 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
VkSampler DxvkMetaPackObjects::createSampler() {
|
VkSampler DxvkMetaPackObjects::createSampler() {
|
||||||
VkSamplerCreateInfo info;
|
VkSamplerCreateInfo info = { VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO };
|
||||||
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
|
||||||
info.pNext = nullptr;
|
|
||||||
info.flags = 0;
|
|
||||||
info.magFilter = VK_FILTER_NEAREST;
|
info.magFilter = VK_FILTER_NEAREST;
|
||||||
info.minFilter = VK_FILTER_NEAREST;
|
info.minFilter = VK_FILTER_NEAREST;
|
||||||
info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
||||||
info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.mipLodBias = 0.0f;
|
|
||||||
info.anisotropyEnable = VK_FALSE;
|
|
||||||
info.maxAnisotropy = 1.0f;
|
|
||||||
info.compareEnable = VK_FALSE;
|
|
||||||
info.compareOp = VK_COMPARE_OP_ALWAYS;
|
|
||||||
info.minLod = 0.0f;
|
|
||||||
info.maxLod = 0.0f;
|
|
||||||
info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
|
info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
|
||||||
info.unnormalizedCoordinates = VK_FALSE;
|
info.unnormalizedCoordinates = VK_FALSE;
|
||||||
|
|
||||||
@ -126,10 +116,7 @@ namespace dxvk {
|
|||||||
{ 2, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_COMPUTE_BIT, &m_sampler },
|
{ 2, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_COMPUTE_BIT, &m_sampler },
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VkDescriptorSetLayoutCreateInfo dsetInfo;
|
VkDescriptorSetLayoutCreateInfo dsetInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO };
|
||||||
dsetInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
|
||||||
dsetInfo.pNext = nullptr;
|
|
||||||
dsetInfo.flags = 0;
|
|
||||||
dsetInfo.bindingCount = bindings.size();
|
dsetInfo.bindingCount = bindings.size();
|
||||||
dsetInfo.pBindings = bindings.data();
|
dsetInfo.pBindings = bindings.data();
|
||||||
|
|
||||||
@ -147,10 +134,7 @@ namespace dxvk {
|
|||||||
{ 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr },
|
{ 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr },
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VkDescriptorSetLayoutCreateInfo dsetInfo;
|
VkDescriptorSetLayoutCreateInfo dsetInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO };
|
||||||
dsetInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
|
||||||
dsetInfo.pNext = nullptr;
|
|
||||||
dsetInfo.flags = 0;
|
|
||||||
dsetInfo.bindingCount = bindings.size();
|
dsetInfo.bindingCount = bindings.size();
|
||||||
dsetInfo.pBindings = bindings.data();
|
dsetInfo.pBindings = bindings.data();
|
||||||
|
|
||||||
@ -163,16 +147,10 @@ namespace dxvk {
|
|||||||
|
|
||||||
VkPipelineLayout DxvkMetaPackObjects::createPipelineLayout(
|
VkPipelineLayout DxvkMetaPackObjects::createPipelineLayout(
|
||||||
VkDescriptorSetLayout dsetLayout,
|
VkDescriptorSetLayout dsetLayout,
|
||||||
size_t pushLayout) {
|
uint32_t pushLayout) {
|
||||||
VkPushConstantRange push;
|
VkPushConstantRange push = { VK_SHADER_STAGE_COMPUTE_BIT, 0, pushLayout };
|
||||||
push.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
|
|
||||||
push.offset = 0;
|
|
||||||
push.size = pushLayout;
|
|
||||||
|
|
||||||
VkPipelineLayoutCreateInfo layoutInfo;
|
VkPipelineLayoutCreateInfo layoutInfo = { VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO };
|
||||||
layoutInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
|
||||||
layoutInfo.pNext = nullptr;
|
|
||||||
layoutInfo.flags = 0;
|
|
||||||
layoutInfo.setLayoutCount = 1;
|
layoutInfo.setLayoutCount = 1;
|
||||||
layoutInfo.pSetLayouts = &dsetLayout;
|
layoutInfo.pSetLayouts = &dsetLayout;
|
||||||
layoutInfo.pushConstantRangeCount = 1;
|
layoutInfo.pushConstantRangeCount = 1;
|
||||||
@ -192,17 +170,13 @@ namespace dxvk {
|
|||||||
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, offsetof(DxvkMetaPackDescriptors, srcStencil), 0 },
|
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, offsetof(DxvkMetaPackDescriptors, srcStencil), 0 },
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateCreateInfo templateInfo;
|
VkDescriptorUpdateTemplateCreateInfo templateInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO };
|
||||||
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
|
|
||||||
templateInfo.pNext = nullptr;
|
|
||||||
templateInfo.flags = 0;
|
|
||||||
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
||||||
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
||||||
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
|
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
|
||||||
templateInfo.descriptorSetLayout = m_dsetLayoutPack;
|
templateInfo.descriptorSetLayout = m_dsetLayoutPack;
|
||||||
templateInfo.pipelineBindPoint = VK_PIPELINE_BIND_POINT_COMPUTE;
|
templateInfo.pipelineBindPoint = VK_PIPELINE_BIND_POINT_COMPUTE;
|
||||||
templateInfo.pipelineLayout = m_pipeLayoutPack;
|
templateInfo.pipelineLayout = m_pipeLayoutPack;
|
||||||
templateInfo.set = 0;
|
|
||||||
|
|
||||||
VkDescriptorUpdateTemplate result = VK_NULL_HANDLE;
|
VkDescriptorUpdateTemplate result = VK_NULL_HANDLE;
|
||||||
if (m_vkd->vkCreateDescriptorUpdateTemplate(m_vkd->device(),
|
if (m_vkd->vkCreateDescriptorUpdateTemplate(m_vkd->device(),
|
||||||
@ -219,10 +193,7 @@ namespace dxvk {
|
|||||||
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, offsetof(DxvkMetaUnpackDescriptors, srcBuffer), 0 },
|
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, offsetof(DxvkMetaUnpackDescriptors, srcBuffer), 0 },
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateCreateInfo templateInfo;
|
VkDescriptorUpdateTemplateCreateInfo templateInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO };
|
||||||
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
|
|
||||||
templateInfo.pNext = nullptr;
|
|
||||||
templateInfo.flags = 0;
|
|
||||||
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
||||||
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
||||||
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
|
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
|
||||||
@ -242,10 +213,7 @@ namespace dxvk {
|
|||||||
VkPipeline DxvkMetaPackObjects::createPipeline(
|
VkPipeline DxvkMetaPackObjects::createPipeline(
|
||||||
VkPipelineLayout pipeLayout,
|
VkPipelineLayout pipeLayout,
|
||||||
const SpirvCodeBuffer& code) {
|
const SpirvCodeBuffer& code) {
|
||||||
VkShaderModuleCreateInfo shaderInfo;
|
VkShaderModuleCreateInfo shaderInfo = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };
|
||||||
shaderInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
|
||||||
shaderInfo.pNext = nullptr;
|
|
||||||
shaderInfo.flags = 0;
|
|
||||||
shaderInfo.codeSize = code.size();
|
shaderInfo.codeSize = code.size();
|
||||||
shaderInfo.pCode = code.data();
|
shaderInfo.pCode = code.data();
|
||||||
|
|
||||||
@ -254,22 +222,14 @@ namespace dxvk {
|
|||||||
if (m_vkd->vkCreateShaderModule(m_vkd->device(), &shaderInfo, nullptr, &module) != VK_SUCCESS)
|
if (m_vkd->vkCreateShaderModule(m_vkd->device(), &shaderInfo, nullptr, &module) != VK_SUCCESS)
|
||||||
throw DxvkError("DxvkMetaPackObjects: Failed to create shader module");
|
throw DxvkError("DxvkMetaPackObjects: Failed to create shader module");
|
||||||
|
|
||||||
VkPipelineShaderStageCreateInfo stageInfo;
|
VkPipelineShaderStageCreateInfo stageInfo = { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO };
|
||||||
stageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
|
||||||
stageInfo.pNext = nullptr;
|
|
||||||
stageInfo.flags = 0;
|
|
||||||
stageInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
stageInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
||||||
stageInfo.module = module;
|
stageInfo.module = module;
|
||||||
stageInfo.pName = "main";
|
stageInfo.pName = "main";
|
||||||
stageInfo.pSpecializationInfo = nullptr;
|
|
||||||
|
|
||||||
VkComputePipelineCreateInfo pipeInfo;
|
VkComputePipelineCreateInfo pipeInfo = { VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO };
|
||||||
pipeInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
|
|
||||||
pipeInfo.pNext = nullptr;
|
|
||||||
pipeInfo.flags = 0;
|
|
||||||
pipeInfo.stage = stageInfo;
|
pipeInfo.stage = stageInfo;
|
||||||
pipeInfo.layout = pipeLayout;
|
pipeInfo.layout = pipeLayout;
|
||||||
pipeInfo.basePipelineHandle = VK_NULL_HANDLE;
|
|
||||||
pipeInfo.basePipelineIndex = -1;
|
pipeInfo.basePipelineIndex = -1;
|
||||||
|
|
||||||
VkPipeline result = VK_NULL_HANDLE;
|
VkPipeline result = VK_NULL_HANDLE;
|
||||||
|
@ -118,7 +118,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
VkPipelineLayout createPipelineLayout(
|
VkPipelineLayout createPipelineLayout(
|
||||||
VkDescriptorSetLayout dsetLayout,
|
VkDescriptorSetLayout dsetLayout,
|
||||||
size_t pushLayout);
|
uint32_t pushLayout);
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateKHR createPackDescriptorUpdateTemplate();
|
VkDescriptorUpdateTemplateKHR createPackDescriptorUpdateTemplate();
|
||||||
|
|
||||||
|
@ -116,25 +116,14 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
VkSampler DxvkMetaResolveObjects::createSampler() const {
|
VkSampler DxvkMetaResolveObjects::createSampler() const {
|
||||||
VkSamplerCreateInfo info;
|
VkSamplerCreateInfo info = { VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO };
|
||||||
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
|
||||||
info.pNext = nullptr;
|
|
||||||
info.flags = 0;
|
|
||||||
info.magFilter = VK_FILTER_NEAREST;
|
info.magFilter = VK_FILTER_NEAREST;
|
||||||
info.minFilter = VK_FILTER_NEAREST;
|
info.minFilter = VK_FILTER_NEAREST;
|
||||||
info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
||||||
info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
info.mipLodBias = 0.0f;
|
|
||||||
info.anisotropyEnable = VK_FALSE;
|
|
||||||
info.maxAnisotropy = 1.0f;
|
|
||||||
info.compareEnable = VK_FALSE;
|
|
||||||
info.compareOp = VK_COMPARE_OP_ALWAYS;
|
|
||||||
info.minLod = 0.0f;
|
|
||||||
info.maxLod = 0.0f;
|
|
||||||
info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
|
info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
|
||||||
info.unnormalizedCoordinates = VK_FALSE;
|
|
||||||
|
|
||||||
VkSampler result = VK_NULL_HANDLE;
|
VkSampler result = VK_NULL_HANDLE;
|
||||||
if (m_vkd->vkCreateSampler(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS)
|
if (m_vkd->vkCreateSampler(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS)
|
||||||
@ -145,10 +134,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
VkShaderModule DxvkMetaResolveObjects::createShaderModule(
|
VkShaderModule DxvkMetaResolveObjects::createShaderModule(
|
||||||
const SpirvCodeBuffer& code) const {
|
const SpirvCodeBuffer& code) const {
|
||||||
VkShaderModuleCreateInfo info;
|
VkShaderModuleCreateInfo info = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };
|
||||||
info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
|
||||||
info.pNext = nullptr;
|
|
||||||
info.flags = 0;
|
|
||||||
info.codeSize = code.size();
|
info.codeSize = code.size();
|
||||||
info.pCode = code.data();
|
info.pCode = code.data();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user