mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-07 16:54:14 +01:00
[dxvk] Add debug regions for internal operations
This commit is contained in:
parent
485090d039
commit
50f9630250
@ -277,6 +277,14 @@ namespace dxvk {
|
||||
cmdBuffer = DxvkCmdBuffer::ExecBuffer;
|
||||
}
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = bufferView->buffer()->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(cmdBuffer,
|
||||
vk::makeLabel(0xf0dcdc, str::format("Clear view (",
|
||||
dstName ? dstName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
// Query pipeline objects to use for this clear operation
|
||||
DxvkMetaClearPipeline pipeInfo = m_common->metaClear().getClearBufferPipeline(
|
||||
lookupFormatInfo(bufferView->info().format)->flags);
|
||||
@ -319,6 +327,9 @@ namespace dxvk {
|
||||
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
|
||||
VK_ACCESS_2_SHADER_WRITE_BIT);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(cmdBuffer);
|
||||
|
||||
m_cmd->track(bufferView->buffer(), DxvkAccess::Write);
|
||||
}
|
||||
|
||||
@ -2608,6 +2619,16 @@ namespace dxvk {
|
||||
flushPendingAccesses(*dstView, DxvkAccess::Write);
|
||||
flushPendingAccesses(*srcView, DxvkAccess::Read);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = dstView->image()->info().debugName;
|
||||
const char* srcName = srcView->image()->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer,
|
||||
vk::makeLabel(0xf0dcdc, str::format("Blit (",
|
||||
dstName ? dstName : "unknown", ", ",
|
||||
srcName ? srcName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
VkImageLayout srcLayout = srcView->image()->pickLayout(srcIsDepthStencil
|
||||
? VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
|
||||
: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
@ -2744,6 +2765,9 @@ namespace dxvk {
|
||||
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,
|
||||
VK_ACCESS_2_SHADER_READ_BIT);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer);
|
||||
|
||||
m_cmd->track(dstView->image(), DxvkAccess::Write);
|
||||
m_cmd->track(srcView->image(), DxvkAccess::Read);
|
||||
m_cmd->track(std::move(sampler));
|
||||
@ -2974,6 +2998,16 @@ namespace dxvk {
|
||||
|
||||
flushPendingAccesses(*image, vk::makeSubresourceRange(imageSubresource), DxvkAccess::Write);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = image->info().debugName;
|
||||
const char* srcName = buffer->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer,
|
||||
vk::makeLabel(0xf0dcdc, str::format("Upload image (",
|
||||
dstName ? dstName : "unknown", ", ",
|
||||
srcName ? srcName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
auto formatInfo = lookupFormatInfo(bufferFormat);
|
||||
|
||||
if (formatInfo->flags.test(DxvkFormatFlag::MultiPlane)) {
|
||||
@ -3182,6 +3216,9 @@ namespace dxvk {
|
||||
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,
|
||||
VK_ACCESS_2_SHADER_READ_BIT);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer);
|
||||
|
||||
m_cmd->track(image, DxvkAccess::Write);
|
||||
m_cmd->track(buffer, DxvkAccess::Read);
|
||||
}
|
||||
@ -3260,6 +3297,16 @@ namespace dxvk {
|
||||
|
||||
flushPendingAccesses(*image, vk::makeSubresourceRange(imageSubresource), DxvkAccess::Read);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = buffer->info().debugName;
|
||||
const char* srcName = image->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer,
|
||||
vk::makeLabel(0xf0dcdc, str::format("Readback image (",
|
||||
dstName ? dstName : "unknown", ", ",
|
||||
srcName ? srcName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
auto formatInfo = lookupFormatInfo(bufferFormat);
|
||||
|
||||
if (formatInfo->flags.test(DxvkFormatFlag::MultiPlane)) {
|
||||
@ -3397,6 +3444,9 @@ namespace dxvk {
|
||||
vk::makeSubresourceRange(imageSubresource), imageLayout,
|
||||
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, VK_ACCESS_2_SHADER_READ_BIT);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer);
|
||||
|
||||
m_cmd->track(buffer, DxvkAccess::Write);
|
||||
m_cmd->track(image, DxvkAccess::Read);
|
||||
}
|
||||
@ -3429,6 +3479,13 @@ namespace dxvk {
|
||||
|
||||
flushPendingAccesses(*imageView->image(), imageView->imageSubresources(), DxvkAccess::Write);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = imageView->image()->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer, vk::makeLabel(0xf0dcdc,
|
||||
str::format("Clear view (", dstName ? dstName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
clearLayout = (imageView->info().aspects & VK_IMAGE_ASPECT_COLOR_BIT)
|
||||
? imageView->pickLayout(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)
|
||||
: imageView->pickLayout(VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
|
||||
@ -3505,6 +3562,9 @@ namespace dxvk {
|
||||
*imageView->image(), imageView->imageSubresources(),
|
||||
clearLayout, clearStages, clearAccess);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer);
|
||||
|
||||
m_cmd->track(imageView->image(), DxvkAccess::Write);
|
||||
}
|
||||
}
|
||||
@ -3526,6 +3586,13 @@ namespace dxvk {
|
||||
cmdBuffer = DxvkCmdBuffer::ExecBuffer;
|
||||
}
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = imageView->image()->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(cmdBuffer, vk::makeLabel(0xf0dcdc,
|
||||
str::format("Clear view (", dstName ? dstName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
addImageLayoutTransition(*imageView->image(), imageView->imageSubresources(),
|
||||
VK_IMAGE_LAYOUT_GENERAL, VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, VK_ACCESS_2_SHADER_WRITE_BIT,
|
||||
imageView->image()->isFullSubresource(vk::pickSubresourceLayers(imageView->imageSubresources(), 0), extent));
|
||||
@ -3582,6 +3649,9 @@ namespace dxvk {
|
||||
VK_IMAGE_LAYOUT_GENERAL, VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
|
||||
VK_ACCESS_2_SHADER_WRITE_BIT);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(cmdBuffer);
|
||||
|
||||
m_cmd->track(imageView->image(), DxvkAccess::Write);
|
||||
}
|
||||
|
||||
@ -3694,6 +3764,16 @@ namespace dxvk {
|
||||
|
||||
this->invalidateState();
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = dstImage->info().debugName;
|
||||
const char* srcName = srcImage->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer,
|
||||
vk::makeLabel(0xf0dcdc, str::format("Copy image (",
|
||||
dstName ? dstName : "unknown", ", ",
|
||||
srcName ? srcName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
auto dstSubresourceRange = vk::makeSubresourceRange(dstSubresource);
|
||||
auto srcSubresourceRange = vk::makeSubresourceRange(srcSubresource);
|
||||
|
||||
@ -3846,6 +3926,9 @@ namespace dxvk {
|
||||
*dstImage, dstSubresourceRange,
|
||||
dstLayout, dstStages, dstAccess);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer);
|
||||
|
||||
m_cmd->track(dstImage, DxvkAccess::Write);
|
||||
m_cmd->track(srcImage, DxvkAccess::Read);
|
||||
}
|
||||
@ -4153,6 +4236,16 @@ namespace dxvk {
|
||||
flushPendingAccesses(*dstImage, dstSubresourceRange, DxvkAccess::Write);
|
||||
flushPendingAccesses(*srcImage, srcSubresourceRange, DxvkAccess::Read);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = dstImage->info().debugName;
|
||||
const char* srcName = srcImage->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer,
|
||||
vk::makeLabel(0xf0dcdc, str::format("Resolve DS (",
|
||||
dstName ? dstName : "unknown", ", ",
|
||||
srcName ? srcName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
// Transition both images to usable layouts if necessary. For the source image we
|
||||
// can be fairly leniet since writable layouts are allowed for resolve attachments.
|
||||
VkImageLayout dstLayout = dstImage->pickLayout(VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
|
||||
@ -4215,6 +4308,9 @@ namespace dxvk {
|
||||
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,
|
||||
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer);
|
||||
|
||||
m_cmd->track(dstImage, DxvkAccess::Write);
|
||||
m_cmd->track(srcImage, DxvkAccess::Read);
|
||||
}
|
||||
@ -4262,6 +4358,16 @@ namespace dxvk {
|
||||
flushPendingAccesses(*dstImage, dstSubresourceRange, DxvkAccess::Write);
|
||||
flushPendingAccesses(*srcImage, srcSubresourceRange, DxvkAccess::Read);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) {
|
||||
const char* dstName = dstImage->info().debugName;
|
||||
const char* srcName = srcImage->info().debugName;
|
||||
|
||||
m_cmd->cmdBeginDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer,
|
||||
vk::makeLabel(0xf0dcdc, str::format("Resolve (",
|
||||
dstName ? dstName : "unknown", ", ",
|
||||
srcName ? srcName : "unknown", ")").c_str()));
|
||||
}
|
||||
|
||||
// Discard the destination image if we're fully writing it,
|
||||
// and transition the image layout if necessary
|
||||
bool doDiscard = dstImage->isFullSubresource(region.dstSubresource, region.extent);
|
||||
@ -4416,6 +4522,9 @@ namespace dxvk {
|
||||
*dstImage, dstSubresourceRange,
|
||||
dstLayout, dstStages, dstAccess);
|
||||
|
||||
if (unlikely(m_features.test(DxvkContextFeature::DebugUtils)))
|
||||
m_cmd->cmdEndDebugUtilsLabel(DxvkCmdBuffer::ExecBuffer);
|
||||
|
||||
m_cmd->track(dstImage, DxvkAccess::Write);
|
||||
m_cmd->track(srcImage, DxvkAccess::Read);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user