mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-06 20:58:37 +01:00
Implement SetPrivateData WKPDID_D3DDebugObjectName for select resources: buffers, fences, textures, views.
This commit is contained in:
parent
8048be5774
commit
7e9a423ae4
14 changed files with 174 additions and 4 deletions
|
@ -181,7 +181,12 @@ namespace dxvk {
|
|||
D3D11_BUFFER_DESC* pBufferDesc);
|
||||
|
||||
private:
|
||||
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_buffer)
|
||||
m_buffer->setDebugName(name);
|
||||
}
|
||||
|
||||
D3D11_BUFFER_DESC m_desc;
|
||||
D3D11_ON_12_RESOURCE_INFO m_11on12;
|
||||
D3D11_COMMON_BUFFER_MAP_MODE m_mapMode;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <initguid.h>
|
||||
#include "d3d11_include.h"
|
||||
|
||||
#include "../util/com/com_private_data.h"
|
||||
|
@ -30,6 +31,8 @@ namespace dxvk {
|
|||
REFGUID guid,
|
||||
UINT DataSize,
|
||||
const void *pData) final {
|
||||
if (guid == WKPDID_D3DDebugObjectName)
|
||||
SetD3DDebugObjectName((const char*)pData);
|
||||
return m_privateData.setData(
|
||||
guid, DataSize, pData);
|
||||
}
|
||||
|
@ -55,6 +58,8 @@ namespace dxvk {
|
|||
}
|
||||
|
||||
D3D11Device* const m_parent;
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {}
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -40,7 +40,12 @@ namespace dxvk {
|
|||
}
|
||||
|
||||
private:
|
||||
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_fence)
|
||||
m_fence->setDebugName(name);
|
||||
}
|
||||
|
||||
Rc<DxvkFence> m_fence;
|
||||
D3D11_FENCE_FLAG m_flags;
|
||||
|
||||
|
|
|
@ -769,6 +769,11 @@ namespace dxvk {
|
|||
|
||||
private:
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_texture.GetImage())
|
||||
m_texture.GetImage()->setDebugName(name);
|
||||
}
|
||||
|
||||
D3D11CommonTexture m_texture;
|
||||
D3D11VkInteropSurface m_interop;
|
||||
D3D11DXGISurface m_surface;
|
||||
|
@ -834,6 +839,11 @@ namespace dxvk {
|
|||
}
|
||||
|
||||
private:
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_texture.GetImage())
|
||||
m_texture.GetImage()->setDebugName(name);
|
||||
}
|
||||
|
||||
D3D11CommonTexture m_texture;
|
||||
D3D11VkInteropSurface m_interop;
|
||||
|
@ -884,6 +894,11 @@ namespace dxvk {
|
|||
}
|
||||
|
||||
private:
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_texture.GetImage())
|
||||
m_texture.GetImage()->setDebugName(name);
|
||||
}
|
||||
|
||||
D3D11CommonTexture m_texture;
|
||||
D3D11VkInteropSurface m_interop;
|
||||
|
|
|
@ -91,6 +91,11 @@ namespace dxvk {
|
|||
|
||||
private:
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_view)
|
||||
m_view->setDebugName(name);
|
||||
}
|
||||
|
||||
ID3D11Resource* m_resource;
|
||||
D3D11_DEPTH_STENCIL_VIEW_DESC m_desc;
|
||||
D3D11_VK_VIEW_INFO m_info;
|
||||
|
|
|
@ -80,6 +80,11 @@ namespace dxvk {
|
|||
|
||||
private:
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_view)
|
||||
m_view->setDebugName(name);
|
||||
}
|
||||
|
||||
ID3D11Resource* m_resource;
|
||||
D3D11_RENDER_TARGET_VIEW_DESC1 m_desc;
|
||||
D3D11_VK_VIEW_INFO m_info;
|
||||
|
|
|
@ -82,6 +82,13 @@ namespace dxvk {
|
|||
|
||||
private:
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_bufferView)
|
||||
m_bufferView->setDebugName(name);
|
||||
if (m_imageView)
|
||||
m_imageView->setDebugName(name);
|
||||
}
|
||||
|
||||
ID3D11Resource* m_resource;
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC1 m_desc;
|
||||
D3D11_VK_VIEW_INFO m_info;
|
||||
|
|
|
@ -78,6 +78,15 @@ namespace dxvk {
|
|||
|
||||
private:
|
||||
|
||||
virtual void SetD3DDebugObjectName(const char* name) {
|
||||
if (m_bufferView)
|
||||
m_bufferView->setDebugName(name);
|
||||
if (m_imageView)
|
||||
m_imageView->setDebugName(name);
|
||||
if (m_counterView)
|
||||
m_counterView->setDebugName(name);
|
||||
}
|
||||
|
||||
ID3D11Resource* m_resource;
|
||||
D3D11_UNORDERED_ACCESS_VIEW_DESC1 m_desc;
|
||||
D3D11_VK_VIEW_INFO m_info;
|
||||
|
|
|
@ -99,5 +99,37 @@ namespace dxvk {
|
|||
|
||||
return m_allocator->createBufferResource(info, allocationInfo, nullptr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DxvkBuffer::setDebugName(
|
||||
const char* name) {
|
||||
if (!m_vkd->vkSetDebugUtilsObjectNameEXT)
|
||||
return;
|
||||
|
||||
VkDebugUtilsObjectNameInfoEXT nameInfo{};
|
||||
nameInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||
nameInfo.pNext = nullptr;
|
||||
nameInfo.objectType = VK_OBJECT_TYPE_BUFFER;
|
||||
nameInfo.objectHandle = (uint64_t)storage()->getBufferInfo().buffer;
|
||||
nameInfo.pObjectName = name;
|
||||
|
||||
m_vkd->vkSetDebugUtilsObjectNameEXT(m_vkd->device(), &nameInfo);
|
||||
}
|
||||
|
||||
|
||||
void DxvkBufferView::setDebugName(
|
||||
const char* name) {
|
||||
if (!m_buffer->m_vkd->vkSetDebugUtilsObjectNameEXT)
|
||||
return;
|
||||
|
||||
VkDebugUtilsObjectNameInfoEXT nameInfo{};
|
||||
nameInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||
nameInfo.pNext = nullptr;
|
||||
nameInfo.objectType = VK_OBJECT_TYPE_BUFFER_VIEW;
|
||||
nameInfo.objectHandle = (uint64_t)handle();
|
||||
nameInfo.pObjectName = name;
|
||||
|
||||
m_buffer->m_vkd->vkSetDebugUtilsObjectNameEXT(m_buffer->m_vkd->device(), &nameInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -132,6 +132,13 @@ namespace dxvk {
|
|||
return lookupFormatInfo(m_key.format);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Sets debug name for this resources when markers are enabled
|
||||
*
|
||||
* \params[in] name Name of the resource to set
|
||||
*/
|
||||
void setDebugName(const char* name);
|
||||
|
||||
private:
|
||||
|
||||
DxvkBuffer* m_buffer = nullptr;
|
||||
|
@ -406,6 +413,13 @@ namespace dxvk {
|
|||
Rc<DxvkResourceAllocation> relocateStorage(
|
||||
DxvkAllocationModes mode);
|
||||
|
||||
/**
|
||||
* \brief Sets debug name for this resources when markers are enabled
|
||||
*
|
||||
* \params[in] name Name of the resource to set
|
||||
*/
|
||||
void setDebugName(const char* name);
|
||||
|
||||
private:
|
||||
|
||||
Rc<vk::DeviceFn> m_vkd;
|
||||
|
|
|
@ -181,4 +181,20 @@ namespace dxvk {
|
|||
|
||||
return sharedHandle;
|
||||
}
|
||||
|
||||
void DxvkFence::setDebugName(
|
||||
const char* name) {
|
||||
if (!m_vkd->vkSetDebugUtilsObjectNameEXT)
|
||||
return;
|
||||
|
||||
VkDebugUtilsObjectNameInfoEXT nameInfo{};
|
||||
nameInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||
nameInfo.pNext = nullptr;
|
||||
nameInfo.objectType = VK_OBJECT_TYPE_FENCE;
|
||||
nameInfo.objectHandle = (uint64_t)m_semaphore;
|
||||
nameInfo.pObjectName = name;
|
||||
|
||||
m_vkd->vkSetDebugUtilsObjectNameEXT(m_vkd->device(), &nameInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -97,6 +97,13 @@ namespace dxvk {
|
|||
*/
|
||||
void wait(uint64_t value);
|
||||
|
||||
/**
|
||||
* \brief Sets debug name for this resources when markers are enabled
|
||||
*
|
||||
* \params[in] name Name of the resource to set
|
||||
*/
|
||||
void setDebugName(const char* name);
|
||||
|
||||
private:
|
||||
|
||||
struct QueueItem {
|
||||
|
|
|
@ -283,6 +283,22 @@ namespace dxvk {
|
|||
}
|
||||
|
||||
|
||||
void DxvkImage::setDebugName(
|
||||
const char* name) {
|
||||
if (!m_vkd->vkSetDebugUtilsObjectNameEXT)
|
||||
return;
|
||||
|
||||
VkDebugUtilsObjectNameInfoEXT nameInfo{};
|
||||
nameInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||
nameInfo.pNext = nullptr;
|
||||
nameInfo.objectType = VK_OBJECT_TYPE_IMAGE;
|
||||
nameInfo.objectHandle = (uint64_t)storage()->getImageInfo().image;
|
||||
nameInfo.pObjectName = name;
|
||||
|
||||
m_vkd->vkSetDebugUtilsObjectNameEXT(m_vkd->device(), &nameInfo);
|
||||
}
|
||||
|
||||
|
||||
VkImageCreateInfo DxvkImage::getImageCreateInfo(
|
||||
const DxvkImageUsageInfo& usageInfo) const {
|
||||
VkImageCreateInfo info = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO };
|
||||
|
@ -452,5 +468,20 @@ namespace dxvk {
|
|||
|
||||
m_version = m_image->m_version;
|
||||
}
|
||||
|
||||
|
||||
void DxvkImageView::setDebugName(
|
||||
const char* name) {
|
||||
if (!m_image->m_vkd->vkSetDebugUtilsObjectNameEXT)
|
||||
return;
|
||||
|
||||
VkDebugUtilsObjectNameInfoEXT nameInfo{};
|
||||
nameInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||
nameInfo.pNext = nullptr;
|
||||
nameInfo.objectType = VK_OBJECT_TYPE_IMAGE_VIEW;
|
||||
nameInfo.objectHandle = (uint64_t)handle();
|
||||
nameInfo.pObjectName = name;
|
||||
|
||||
m_image->m_vkd->vkSetDebugUtilsObjectNameEXT(m_image->m_vkd->device(), &nameInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -263,6 +263,13 @@ namespace dxvk {
|
|||
view->imageSubresources());
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Sets debug name for this resources when markers are enabled
|
||||
*
|
||||
* \params[in] name Name of the resource to set
|
||||
*/
|
||||
void setDebugName(const char* name);
|
||||
|
||||
private:
|
||||
|
||||
DxvkImage* m_image = nullptr;
|
||||
|
@ -601,6 +608,13 @@ namespace dxvk {
|
|||
bool isInitialized(
|
||||
const VkImageSubresourceRange& subresources) const;
|
||||
|
||||
/**
|
||||
* \brief Sets debug name for this resources when markers are enabled
|
||||
*
|
||||
* \params[in] name Name of the resource to set
|
||||
*/
|
||||
void setDebugName(const char* name);
|
||||
|
||||
private:
|
||||
|
||||
Rc<vk::DeviceFn> m_vkd;
|
||||
|
|
Loading…
Add table
Reference in a new issue