summaryrefslogtreecommitdiffstats
path: root/src/libs/dxvk-native-1.9.2a/src/d3d11/d3d11_annotation.cpp
diff options
context:
space:
mode:
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.cpp92
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();
+ }
+
+}