diff options
author | Philip Rebohle <philip.rebohle@tu-dortmund.de> | 2022-09-01 00:42:19 +0300 |
---|---|---|
committer | Philip Rebohle <philip.rebohle@tu-dortmund.de> | 2022-09-01 01:24:35 +0300 |
commit | 202ac5efbffa5e4508dbc73eb8cc0a678ece9267 (patch) | |
tree | 660a691a34e76baf390ae8460f9c8efab19ec907 | |
parent | e39cf8a9e730b09a75eb9ebb3d2459f1833be70e (diff) |
[dxvk] Set debug names for blit pipelinesvk-debug
-rw-r--r-- | src/dxvk/dxvk_meta_blit.cpp | 53 | ||||
-rw-r--r-- | src/dxvk/dxvk_meta_blit.h | 6 |
2 files changed, 38 insertions, 21 deletions
diff --git a/src/dxvk/dxvk_meta_blit.cpp b/src/dxvk/dxvk_meta_blit.cpp index e99238b9..d20ac0c7 100644 --- a/src/dxvk/dxvk_meta_blit.cpp +++ b/src/dxvk/dxvk_meta_blit.cpp @@ -116,14 +116,17 @@ namespace dxvk { - DxvkMetaBlitObjects::DxvkMetaBlitObjects(const DxvkDevice* device) - : m_vkd (device->vkd()), + DxvkMetaBlitObjects::DxvkMetaBlitObjects(DxvkDevice* device) + : m_device (device), m_samplerCopy (createSampler(VK_FILTER_NEAREST)), m_samplerBlit (createSampler(VK_FILTER_LINEAR)), m_shaderFrag1D(createShaderModule(dxvk_blit_frag_1d)), m_shaderFrag2D(createShaderModule(dxvk_blit_frag_2d)), m_shaderFrag3D(createShaderModule(dxvk_blit_frag_3d)) { - if (device->features().vk12.shaderOutputLayer) { + m_device->setDebugObjectName(m_samplerCopy, "blit_sampler_nearest"); + m_device->setDebugObjectName(m_samplerBlit, "blit_sampler_linear"); + + if (m_device->features().vk12.shaderOutputLayer) { m_shaderVert = createShaderModule(dxvk_fullscreen_layer_vert); } else { m_shaderVert = createShaderModule(dxvk_fullscreen_vert); @@ -133,20 +136,22 @@ namespace dxvk { DxvkMetaBlitObjects::~DxvkMetaBlitObjects() { + auto vk = m_device->vkd(); + for (const auto& pair : m_pipelines) { - m_vkd->vkDestroyPipeline(m_vkd->device(), pair.second.pipeHandle, nullptr); - m_vkd->vkDestroyPipelineLayout(m_vkd->device(), pair.second.pipeLayout, nullptr); - m_vkd->vkDestroyDescriptorSetLayout (m_vkd->device(), pair.second.dsetLayout, nullptr); + vk->vkDestroyPipeline(vk->device(), pair.second.pipeHandle, nullptr); + vk->vkDestroyPipelineLayout(vk->device(), pair.second.pipeLayout, nullptr); + vk->vkDestroyDescriptorSetLayout(vk->device(), pair.second.dsetLayout, nullptr); } - m_vkd->vkDestroyShaderModule(m_vkd->device(), m_shaderFrag3D, nullptr); - m_vkd->vkDestroyShaderModule(m_vkd->device(), m_shaderFrag2D, nullptr); - m_vkd->vkDestroyShaderModule(m_vkd->device(), m_shaderFrag1D, nullptr); - m_vkd->vkDestroyShaderModule(m_vkd->device(), m_shaderGeom, nullptr); - m_vkd->vkDestroyShaderModule(m_vkd->device(), m_shaderVert, nullptr); + vk->vkDestroyShaderModule(vk->device(), m_shaderFrag3D, nullptr); + vk->vkDestroyShaderModule(vk->device(), m_shaderFrag2D, nullptr); + vk->vkDestroyShaderModule(vk->device(), m_shaderFrag1D, nullptr); + vk->vkDestroyShaderModule(vk->device(), m_shaderGeom, nullptr); + vk->vkDestroyShaderModule(vk->device(), m_shaderVert, nullptr); - m_vkd->vkDestroySampler(m_vkd->device(), m_samplerBlit, nullptr); - m_vkd->vkDestroySampler(m_vkd->device(), m_samplerCopy, nullptr); + vk->vkDestroySampler(vk->device(), m_samplerBlit, nullptr); + vk->vkDestroySampler(vk->device(), m_samplerCopy, nullptr); } @@ -179,6 +184,8 @@ namespace dxvk { VkSampler DxvkMetaBlitObjects::createSampler(VkFilter filter) const { + auto vk = m_device->vkd(); + VkSamplerCreateInfo info = { VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO }; info.magFilter = filter; info.minFilter = filter; @@ -189,19 +196,21 @@ namespace dxvk { info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; VkSampler result = VK_NULL_HANDLE; - if (m_vkd->vkCreateSampler(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS) + if (vk->vkCreateSampler(vk->device(), &info, nullptr, &result) != VK_SUCCESS) throw DxvkError("DxvkMetaBlitObjects: Failed to create sampler"); return result; } VkShaderModule DxvkMetaBlitObjects::createShaderModule(const SpirvCodeBuffer& code) const { + auto vk = m_device->vkd(); + VkShaderModuleCreateInfo info = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO }; info.codeSize = code.size(); info.pCode = code.data(); VkShaderModule result = VK_NULL_HANDLE; - if (m_vkd->vkCreateShaderModule(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS) + if (vk->vkCreateShaderModule(vk->device(), &info, nullptr, &result) != VK_SUCCESS) throw DxvkError("DxvkMetaBlitObjects: Failed to create shader module"); return result; } @@ -220,6 +229,8 @@ namespace dxvk { VkDescriptorSetLayout DxvkMetaBlitObjects::createDescriptorSetLayout( VkImageViewType viewType) const { + auto vk = m_device->vkd(); + VkDescriptorSetLayoutBinding binding = { 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT }; @@ -228,7 +239,7 @@ namespace dxvk { info.pBindings = &binding; VkDescriptorSetLayout result = VK_NULL_HANDLE; - if (m_vkd->vkCreateDescriptorSetLayout(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS) + if (vk->vkCreateDescriptorSetLayout(vk->device(), &info, nullptr, &result) != VK_SUCCESS) throw DxvkError("DxvkMetaBlitObjects: Failed to create descriptor set layout"); return result; } @@ -236,6 +247,8 @@ namespace dxvk { VkPipelineLayout DxvkMetaBlitObjects::createPipelineLayout( VkDescriptorSetLayout descriptorSetLayout) const { + auto vk = m_device->vkd(); + VkPushConstantRange pushRange = { VK_SHADER_STAGE_FRAGMENT_BIT, 0, sizeof(DxvkMetaBlitPushConstants) }; VkPipelineLayoutCreateInfo info = { VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO }; @@ -245,7 +258,7 @@ namespace dxvk { info.pPushConstantRanges = &pushRange; VkPipelineLayout result = VK_NULL_HANDLE; - if (m_vkd->vkCreatePipelineLayout(m_vkd->device(), &info, nullptr, &result) != VK_SUCCESS) + if (vk->vkCreatePipelineLayout(vk->device(), &info, nullptr, &result) != VK_SUCCESS) throw DxvkError("DxvkMetaBlitObjects: Failed to create pipeline layout"); return result; } @@ -256,6 +269,8 @@ namespace dxvk { VkImageViewType imageViewType, VkFormat format, VkSampleCountFlagBits samples) const { + auto vk = m_device->vkd(); + std::array<VkPipelineShaderStageCreateInfo, 3> stages; uint32_t stageCount = 0; @@ -337,8 +352,10 @@ namespace dxvk { info.basePipelineIndex = -1; VkPipeline result = VK_NULL_HANDLE; - if (m_vkd->vkCreateGraphicsPipelines(m_vkd->device(), VK_NULL_HANDLE, 1, &info, nullptr, &result) != VK_SUCCESS) + if (vk->vkCreateGraphicsPipelines(vk->device(), VK_NULL_HANDLE, 1, &info, nullptr, &result) != VK_SUCCESS) throw DxvkError("DxvkMetaBlitObjects: Failed to create graphics pipeline"); + + m_device->setDebugObjectName(result, "blit_pipeline"); return result; } diff --git a/src/dxvk/dxvk_meta_blit.h b/src/dxvk/dxvk_meta_blit.h index 32a1eab0..607629d7 100644 --- a/src/dxvk/dxvk_meta_blit.h +++ b/src/dxvk/dxvk_meta_blit.h @@ -143,7 +143,7 @@ namespace dxvk { public: - DxvkMetaBlitObjects(const DxvkDevice* device); + DxvkMetaBlitObjects(DxvkDevice* device); ~DxvkMetaBlitObjects(); /** @@ -169,8 +169,8 @@ namespace dxvk { VkFilter filter); private: - - Rc<vk::DeviceFn> m_vkd; + + DxvkDevice* m_device; VkSampler m_samplerCopy; VkSampler m_samplerBlit; |