[PATCH 06/11] d3d11: Implement the ID3DUserDefinedAnnotation interface.
Henri Verbeet
hverbeet at codeweavers.com
Tue Jan 25 04:51:40 CST 2022
From: Andrey Gusev <andrey.goosev at gmail.com>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51354
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/d3d11/d3d11_private.h | 1 +
dlls/d3d11/device.c | 79 ++++++++++++++++++++++++++++++++++++++
2 files changed, 80 insertions(+)
diff --git a/dlls/d3d11/d3d11_private.h b/dlls/d3d11/d3d11_private.h
index 41272d08da8..efe26551258 100644
--- a/dlls/d3d11/d3d11_private.h
+++ b/dlls/d3d11/d3d11_private.h
@@ -545,6 +545,7 @@ struct d3d11_device_context
{
ID3D11DeviceContext1 ID3D11DeviceContext1_iface;
ID3D11Multithread ID3D11Multithread_iface;
+ ID3DUserDefinedAnnotation ID3DUserDefinedAnnotation_iface;
LONG refcount;
D3D11_DEVICE_CONTEXT_TYPE type;
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index cb2969d8cf6..f0cbb1741ab 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -484,6 +484,10 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_context_QueryInterface(ID3D11Devic
{
*out = &context->ID3D11Multithread_iface;
}
+ else if (IsEqualGUID(iid, &IID_ID3DUserDefinedAnnotation))
+ {
+ *out = &context->ID3DUserDefinedAnnotation_iface;
+ }
else
{
WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
@@ -3187,11 +3191,86 @@ static const struct ID3D11MultithreadVtbl d3d11_multithread_vtbl =
d3d11_multithread_GetMultithreadProtected,
};
+/* ID3DUserDefinedAnnotation methods */
+
+static inline struct d3d11_device_context *impl_from_ID3DUserDefinedAnnotation(ID3DUserDefinedAnnotation *iface)
+{
+ return CONTAINING_RECORD(iface, struct d3d11_device_context, ID3DUserDefinedAnnotation_iface);
+}
+
+static HRESULT STDMETHODCALLTYPE d3d11_user_defined_annotation_QueryInterface(ID3DUserDefinedAnnotation *iface,
+ REFIID iid, void **out)
+{
+ struct d3d11_device_context *context = impl_from_ID3DUserDefinedAnnotation(iface);
+
+ TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
+
+ return d3d11_device_context_QueryInterface(&context->ID3D11DeviceContext1_iface, iid, out);
+}
+
+static ULONG STDMETHODCALLTYPE d3d11_user_defined_annotation_AddRef(ID3DUserDefinedAnnotation *iface)
+{
+ struct d3d11_device_context *context = impl_from_ID3DUserDefinedAnnotation(iface);
+
+ TRACE("iface %p.\n", iface);
+
+ return d3d11_device_context_AddRef(&context->ID3D11DeviceContext1_iface);
+}
+
+static ULONG STDMETHODCALLTYPE d3d11_user_defined_annotation_Release(ID3DUserDefinedAnnotation *iface)
+{
+ struct d3d11_device_context *context = impl_from_ID3DUserDefinedAnnotation(iface);
+
+ TRACE("iface %p.\n", iface);
+
+ return d3d11_device_context_Release(&context->ID3D11DeviceContext1_iface);
+}
+
+static int STDMETHODCALLTYPE d3d11_user_defined_annotation_BeginEvent(ID3DUserDefinedAnnotation *iface,
+ const WCHAR *name)
+{
+ TRACE("iface %p, name %s.\n", iface, debugstr_w(name));
+
+ return -1;
+}
+
+static int STDMETHODCALLTYPE d3d11_user_defined_annotation_EndEvent(ID3DUserDefinedAnnotation *iface)
+{
+ TRACE("iface %p.\n", iface);
+
+ return -1;
+}
+
+static void STDMETHODCALLTYPE d3d11_user_defined_annotation_SetMarker(ID3DUserDefinedAnnotation *iface,
+ const WCHAR *name)
+{
+ TRACE("iface %p, name %s.\n", iface, debugstr_w(name));
+}
+
+static BOOL STDMETHODCALLTYPE d3d11_user_defined_annotation_GetStatus(ID3DUserDefinedAnnotation *iface)
+{
+ TRACE("iface %p.\n", iface);
+
+ return FALSE;
+}
+
+static const struct ID3DUserDefinedAnnotationVtbl d3d11_user_defined_annotation_vtbl =
+{
+ d3d11_user_defined_annotation_QueryInterface,
+ d3d11_user_defined_annotation_AddRef,
+ d3d11_user_defined_annotation_Release,
+ d3d11_user_defined_annotation_BeginEvent,
+ d3d11_user_defined_annotation_EndEvent,
+ d3d11_user_defined_annotation_SetMarker,
+ d3d11_user_defined_annotation_GetStatus,
+};
+
static void d3d11_device_context_init(struct d3d11_device_context *context, struct d3d_device *device,
D3D11_DEVICE_CONTEXT_TYPE type)
{
context->ID3D11DeviceContext1_iface.lpVtbl = &d3d11_device_context_vtbl;
context->ID3D11Multithread_iface.lpVtbl = &d3d11_multithread_vtbl;
+ context->ID3DUserDefinedAnnotation_iface.lpVtbl = &d3d11_user_defined_annotation_vtbl;
context->refcount = 1;
context->type = type;
--
2.30.2
More information about the wine-devel
mailing list