diff options
Diffstat (limited to 'src/libs/dxvk-native-1.9.2a/src/d3d11/d3d11_annotation.cpp')
-rw-r--r-- | src/libs/dxvk-native-1.9.2a/src/d3d11/d3d11_annotation.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/libs/dxvk-native-1.9.2a/src/d3d11/d3d11_annotation.cpp b/src/libs/dxvk-native-1.9.2a/src/d3d11/d3d11_annotation.cpp new file mode 100644 index 00000000..010acdd8 --- /dev/null +++ b/src/libs/dxvk-native-1.9.2a/src/d3d11/d3d11_annotation.cpp @@ -0,0 +1,92 @@ +#include "d3d11_annotation.h" +#include "d3d11_context.h" +#include "d3d11_device.h" + +namespace dxvk { + + D3D11UserDefinedAnnotation::D3D11UserDefinedAnnotation(D3D11DeviceContext* ctx) + : m_container(ctx), + m_eventDepth(0) { } + + + D3D11UserDefinedAnnotation::~D3D11UserDefinedAnnotation() { + + } + + + ULONG STDMETHODCALLTYPE D3D11UserDefinedAnnotation::AddRef() { + return m_container->AddRef(); + } + + + ULONG STDMETHODCALLTYPE D3D11UserDefinedAnnotation::Release() { + return m_container->Release(); + } + + + HRESULT STDMETHODCALLTYPE D3D11UserDefinedAnnotation::QueryInterface( + REFIID riid, + void** ppvObject) { + return m_container->QueryInterface(riid, ppvObject); + } + + + INT STDMETHODCALLTYPE D3D11UserDefinedAnnotation::BeginEvent( + LPCWSTR Name) { + if (!m_container->IsAnnotationEnabled()) + return -1; + + m_container->EmitCs([labelName = dxvk::str::fromws(Name)](DxvkContext *ctx) { + VkDebugUtilsLabelEXT label; + label.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT; + label.pNext = nullptr; + label.pLabelName = labelName.c_str(); + label.color[0] = 1.0f; + label.color[1] = 1.0f; + label.color[2] = 1.0f; + label.color[3] = 1.0f; + + ctx->beginDebugLabel(&label); + }); + + return m_eventDepth++; + } + + + INT STDMETHODCALLTYPE D3D11UserDefinedAnnotation::EndEvent() { + if (!m_container->IsAnnotationEnabled()) + return -1; + + m_container->EmitCs([](DxvkContext *ctx) { + ctx->endDebugLabel(); + }); + + return m_eventDepth--; + } + + + void STDMETHODCALLTYPE D3D11UserDefinedAnnotation::SetMarker( + LPCWSTR Name) { + if (!m_container->IsAnnotationEnabled()) + return; + + m_container->EmitCs([labelName = dxvk::str::fromws(Name)](DxvkContext *ctx) { + VkDebugUtilsLabelEXT label; + label.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT; + label.pNext = nullptr; + label.pLabelName = labelName.c_str(); + label.color[0] = 1.0f; + label.color[1] = 1.0f; + label.color[2] = 1.0f; + label.color[3] = 1.0f; + + ctx->insertDebugLabel(&label); + }); + } + + + BOOL STDMETHODCALLTYPE D3D11UserDefinedAnnotation::GetStatus() { + return m_container->IsAnnotationEnabled(); + } + +} |