Wine-devel
Threads by month
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
October 2021
- 81 participants
- 772 discussions
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
---
dlls/mscoree/tests/comtest.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/mscoree/tests/comtest.c b/dlls/mscoree/tests/comtest.c
index 6c0d081cbd3..f6dc93c1070 100644
--- a/dlls/mscoree/tests/comtest.c
+++ b/dlls/mscoree/tests/comtest.c
@@ -166,7 +166,7 @@ static void run_registry_test(run_type run)
if (run == run_type_exe_directory) result_expected = S_OK;
else result_expected = HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
- sprintf(buffer, "CLSID\\%s", wine_dbgstr_guid(&CLSID_Test), "");
+ sprintf(buffer, "CLSID\\%s", wine_dbgstr_guid(&CLSID_Test));
ret = RegCreateKeyA( HKEY_CLASSES_ROOT, buffer, &hkey );
if (ret == ERROR_ACCESS_DENIED && !IsUserAnAdmin())
{
2
1
[PATCH] user32: Reimplement destroy_thread_windows() on top of WIN_DestroyWindow().
by Paul Gofman 13 Oct '21
by Paul Gofman 13 Oct '21
13 Oct '21
Signed-off-by: Paul Gofman <pgofman(a)codeweavers.com>
---
Supersedes 217103.
USER_Driver->pThreadDetach() destroys thread data part of which
(e. g., display) is still present in window data in winex11.drv
and accessible through hwnd. That causes all sort of hangs
and crashes when, for instance, the windows is still used for Vulkan
rendering (even if only to tear down the device and swapchain).
Besides, the windows destroyed in destroy_thread_windows() are
still considered valid in the server until thread terminates and,
e. g., calling IsWindow() on already destroyed window will still
show that as valid between destroy_thread_windows() and thread
termination. Then, it looks like a few objects referenced in WND
structure are getting leaked.
It looks like WIN_DestroyWindow() does everything which is needed.
The message(s) it may send to the window being destroyed do not matter
as the messages to the thread being destroyed are filtered out anyway.
dlls/user32/user_main.c | 4 +++-
dlls/user32/win.c | 51 +++++++++--------------------------------
2 files changed, 14 insertions(+), 41 deletions(-)
diff --git a/dlls/user32/user_main.c b/dlls/user32/user_main.c
index 30e5d154d3d..f4b0f110dc2 100644
--- a/dlls/user32/user_main.c
+++ b/dlls/user32/user_main.c
@@ -358,9 +358,11 @@ static void thread_detach(void)
exiting_thread_id = GetCurrentThreadId();
WDML_NotifyThreadDetach();
- USER_Driver->pThreadDetach();
destroy_thread_windows();
+
+ USER_Driver->pThreadDetach();
+
CloseHandle( thread_info->server_queue );
HeapFree( GetProcessHeap(), 0, thread_info->wmchar_data );
HeapFree( GetProcessHeap(), 0, thread_info->key_state );
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 5e89f4c2c97..43207484790 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -1181,24 +1181,25 @@ LRESULT WIN_DestroyWindow( HWND hwnd )
/***********************************************************************
* next_thread_window
*/
-static WND *next_thread_window( HWND *hwnd )
+static HWND first_thread_window(void)
{
struct user_object *ptr;
+ HWND ret = NULL;
+ WORD index;
WND *win;
- WORD index = *hwnd ? USER_HANDLE_TO_INDEX( *hwnd ) + 1 : 0;
USER_Lock();
- while (index < NB_USER_HANDLES)
+ for (index = 0; index < NB_USER_HANDLES; ++index)
{
- if (!(ptr = user_handles[index++])) continue;
+ if (!(ptr = user_handles[index])) continue;
if (ptr->type != USER_WINDOW) continue;
win = (WND *)ptr;
if (win->tid != GetCurrentThreadId()) continue;
- *hwnd = ptr->handle;
- return win;
+ ret = ptr->handle;
+ break;
}
USER_Unlock();
- return NULL;
+ return ret;
}
@@ -1209,40 +1210,10 @@ static WND *next_thread_window( HWND *hwnd )
*/
void destroy_thread_windows(void)
{
- WND *wndPtr;
- HWND hwnd = 0, *list;
- HMENU menu, sys_menu;
- struct window_surface *surface;
- int i;
-
- while ((wndPtr = next_thread_window( &hwnd )))
- {
- /* destroy the client-side storage */
+ HWND hwnd;
- list = WIN_ListChildren( hwnd );
- menu = ((wndPtr->dwStyle & (WS_CHILD | WS_POPUP)) != WS_CHILD) ? (HMENU)wndPtr->wIDmenu : 0;
- sys_menu = wndPtr->hSysMenu;
- free_dce( wndPtr->dce, hwnd );
- surface = wndPtr->surface;
- InterlockedCompareExchangePointer( &user_handles[USER_HANDLE_TO_INDEX(hwnd)], NULL, wndPtr );
- WIN_ReleasePtr( wndPtr );
- HeapFree( GetProcessHeap(), 0, wndPtr );
- if (menu) DestroyMenu( menu );
- if (sys_menu) DestroyMenu( sys_menu );
- if (surface)
- {
- register_window_surface( surface, NULL );
- window_surface_release( surface );
- }
-
- /* free child windows */
-
- if (!list) continue;
- for (i = 0; list[i]; i++)
- if (!WIN_IsCurrentThread( list[i] ))
- SendNotifyMessageW( list[i], WM_WINE_DESTROYWINDOW, 0, 0 );
- HeapFree( GetProcessHeap(), 0, list );
- }
+ while ((hwnd = first_thread_window()))
+ WIN_DestroyWindow( hwnd );
}
--
2.31.1
2
2
v3: Use separate implementation from pointer moniker.
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/ole32/moniker.h | 4 +-
dlls/ole32/ole32.spec | 2 +-
dlls/ole32/ole32_objidl.idl | 6 +
dlls/ole32/oleproxy.c | 13 +
dlls/ole32/pointermoniker.c | 531 +++++++++++++++++++++++++++++++++++-
dlls/ole32/tests/moniker.c | 221 ++++++++++++++-
include/objidl.idl | 5 +-
7 files changed, 776 insertions(+), 6 deletions(-)
diff --git a/dlls/ole32/moniker.h b/dlls/ole32/moniker.h
index 8549bd46c1e..2106e374394 100644
--- a/dlls/ole32/moniker.h
+++ b/dlls/ole32/moniker.h
@@ -26,15 +26,17 @@
DEFINE_OLEGUID( CLSID_FileMoniker, 0x303, 0, 0 );
DEFINE_OLEGUID( CLSID_ItemMoniker, 0x304, 0, 0 );
DEFINE_OLEGUID( CLSID_AntiMoniker, 0x305, 0, 0 );
+DEFINE_OLEGUID( CLSID_PointerMoniker, 0x306, 0, 0 );
DEFINE_OLEGUID( CLSID_CompositeMoniker, 0x309, 0, 0 );
DEFINE_OLEGUID( CLSID_ClassMoniker, 0x31a, 0, 0 );
-DEFINE_OLEGUID( CLSID_PointerMoniker, 0x306, 0, 0 );
+DEFINE_OLEGUID( CLSID_ObjrefMoniker, 0x327, 0, 0 );
HRESULT WINAPI FileMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
HRESULT WINAPI ItemMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
HRESULT WINAPI AntiMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
HRESULT WINAPI CompositeMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
HRESULT WINAPI ClassMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
+HRESULT WINAPI ObjrefMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
HRESULT WINAPI PointerMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
HRESULT WINAPI ComCat_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
diff --git a/dlls/ole32/ole32.spec b/dlls/ole32/ole32.spec
index 8e73fdd16b4..d9ffd63585c 100644
--- a/dlls/ole32/ole32.spec
+++ b/dlls/ole32/ole32.spec
@@ -103,7 +103,7 @@
@ stdcall CreateGenericComposite(ptr ptr ptr)
@ stdcall CreateILockBytesOnHGlobal(ptr long ptr)
@ stdcall CreateItemMoniker(wstr wstr ptr)
-@ stub CreateObjrefMoniker
+@ stdcall CreateObjrefMoniker(ptr ptr)
@ stdcall CreateOleAdviseHolder(ptr)
@ stdcall CreatePointerMoniker(ptr ptr)
@ stdcall CreateStreamOnHGlobal(ptr long ptr) combase.CreateStreamOnHGlobal
diff --git a/dlls/ole32/ole32_objidl.idl b/dlls/ole32/ole32_objidl.idl
index 0cc3ccea9e5..97f91224839 100644
--- a/dlls/ole32/ole32_objidl.idl
+++ b/dlls/ole32/ole32_objidl.idl
@@ -105,6 +105,12 @@ coclass ClassMoniker { interface IMoniker; }
]
coclass PSFactoryBuffer { interface IFactoryBuffer; }
+[
+ threading(both),
+ uuid(00000327-0000-0000-c000-000000000046)
+]
+coclass ObjrefMoniker { interface IMoniker; }
+
[
helpstring("Component Categories Manager"),
threading(both),
diff --git a/dlls/ole32/oleproxy.c b/dlls/ole32/oleproxy.c
index e40e2b073e5..c429ce02b3b 100644
--- a/dlls/ole32/oleproxy.c
+++ b/dlls/ole32/oleproxy.c
@@ -137,6 +137,17 @@ static const IClassFactoryVtbl PointerMonikerCFVtbl =
static IClassFactory PointerMonikerCF = { &PointerMonikerCFVtbl };
+static const IClassFactoryVtbl ObjrefMonikerCFVtbl =
+{
+ ClassFactory_QueryInterface,
+ ClassFactory_AddRef,
+ ClassFactory_Release,
+ ObjrefMoniker_CreateInstance,
+ ClassFactory_LockServer
+};
+
+static IClassFactory ObjrefMonikerCF = { &ObjrefMonikerCFVtbl };
+
static const IClassFactoryVtbl ComCatCFVtbl =
{
ClassFactory_QueryInterface,
@@ -198,6 +209,8 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv)
return IClassFactory_QueryInterface(&CompositeMonikerCF, iid, ppv);
if (IsEqualCLSID(rclsid, &CLSID_ClassMoniker))
return IClassFactory_QueryInterface(&ClassMonikerCF, iid, ppv);
+ if (IsEqualCLSID(rclsid, &CLSID_ObjrefMoniker))
+ return IClassFactory_QueryInterface(&ObjrefMonikerCF, iid, ppv);
if (IsEqualCLSID(rclsid, &CLSID_PointerMoniker))
return IClassFactory_QueryInterface(&PointerMonikerCF, iid, ppv);
if (IsEqualGUID(rclsid, &CLSID_StdComponentCategoriesMgr))
diff --git a/dlls/ole32/pointermoniker.c b/dlls/ole32/pointermoniker.c
index 051d42aca6d..f75c2e3f0f4 100644
--- a/dlls/ole32/pointermoniker.c
+++ b/dlls/ole32/pointermoniker.c
@@ -1,5 +1,5 @@
/*
- * Pointer Moniker Implementation
+ * Pointer and Objref Monikers Implementation
*
* Copyright 1999 Noomen Hamza
* Copyright 2008 Robert Shearman (for CodeWeavers)
@@ -641,3 +641,532 @@ HRESULT WINAPI PointerMoniker_CreateInstance(IClassFactory *iface,
return hr;
}
+
+/* ObjrefMoniker implementation */
+
+typedef struct ObjrefMonikerImpl
+{
+ IMoniker IMoniker_iface;
+ IMarshal IMarshal_iface;
+
+ LONG refcount;
+
+ IUnknown *pObject;
+} ObjrefMonikerImpl;
+
+static inline ObjrefMonikerImpl *objref_impl_from_IMoniker(IMoniker *iface)
+{
+ return CONTAINING_RECORD(iface, ObjrefMonikerImpl, IMoniker_iface);
+}
+
+static ObjrefMonikerImpl *objref_impl_from_IMarshal(IMarshal *iface)
+{
+ return CONTAINING_RECORD(iface, ObjrefMonikerImpl, IMarshal_iface);
+}
+
+static ObjrefMonikerImpl *unsafe_objref_impl_from_IMoniker(IMoniker *iface);
+
+static HRESULT WINAPI ObjrefMonikerImpl_QueryInterface(IMoniker *iface, REFIID iid, void **obj)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface);
+
+ TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), obj);
+
+ if (!obj)
+ return E_INVALIDARG;
+
+ *obj = 0;
+
+ if (IsEqualIID(iid, &IID_IUnknown) ||
+ IsEqualIID(iid, &IID_IPersist) ||
+ IsEqualIID(iid, &IID_IPersistStream) ||
+ IsEqualIID(iid, &IID_IMoniker) ||
+ IsEqualGUID(iid, &CLSID_ObjrefMoniker) ||
+ IsEqualGUID(iid, &CLSID_PointerMoniker))
+ {
+ *obj = iface;
+ }
+ else if (IsEqualIID(iid, &IID_IMarshal))
+ *obj = &moniker->IMarshal_iface;
+ else
+ return E_NOINTERFACE;
+
+ IMoniker_AddRef(iface);
+
+ return S_OK;
+}
+
+static ULONG WINAPI ObjrefMonikerImpl_AddRef(IMoniker *iface)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface);
+ ULONG refcount = InterlockedIncrement(&moniker->refcount);
+
+ TRACE("%p, refcount %u\n", iface, refcount);
+
+ return refcount;
+}
+
+static ULONG WINAPI ObjrefMonikerImpl_Release(IMoniker *iface)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface);
+ ULONG refcount = InterlockedDecrement(&moniker->refcount);
+
+ TRACE("%p, refcount %u\n", iface, refcount);
+
+ if (!refcount)
+ {
+ if (moniker->pObject) IUnknown_Release(moniker->pObject);
+ heap_free(moniker);
+ }
+
+ return refcount;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_GetClassID(IMoniker *iface, CLSID *clsid)
+{
+ TRACE("(%p,%p)\n", iface, clsid);
+
+ if (!clsid)
+ return E_POINTER;
+
+ *clsid = CLSID_ObjrefMoniker;
+ return S_OK;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_IsDirty(IMoniker *iface)
+{
+ /* Note that the OLE-provided implementations of the IPersistStream::IsDirty
+ method in the OLE-provided moniker interfaces always return S_FALSE because
+ their internal state never changes. */
+
+ TRACE("(%p)\n",iface);
+
+ return S_FALSE;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_Load(IMoniker *iface, IStream *stream)
+{
+ TRACE("(%p)\n", stream);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_Save(IMoniker *iface, IStream *stream, BOOL dirty)
+{
+ FIXME("(%p,%p,%d): stub\n", iface, stream, dirty);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_GetSizeMax(IMoniker* iface, ULARGE_INTEGER *size)
+{
+ TRACE("(%p,%p)\n", iface, size);
+
+ if (!size)
+ return E_POINTER;
+
+ size->u.LowPart = 0;
+ size->u.HighPart = 0;
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *left,
+ REFIID riid, void **result)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface);
+
+ TRACE("(%p,%p,%p,%s,%p)\n", iface, pbc, left, debugstr_guid(riid), result);
+
+ if (!moniker->pObject)
+ return E_UNEXPECTED;
+
+ return IUnknown_QueryInterface(moniker->pObject, riid, result);
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *left,
+ REFIID riid, void **result)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface);
+
+ TRACE("(%p,%p,%p,%s,%p)\n", iface, pbc, left, debugstr_guid(riid), result);
+
+ if (!moniker->pObject)
+ return E_UNEXPECTED;
+
+ return IUnknown_QueryInterface(moniker->pObject, riid, result);
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD howfar,
+ IMoniker **left, IMoniker **reduced)
+{
+ TRACE("(%p,%p,%d,%p,%p)\n", iface, pbc, howfar, left, reduced);
+
+ if (!reduced)
+ return E_POINTER;
+
+ ObjrefMonikerImpl_AddRef(iface);
+
+ *reduced = iface;
+
+ return MK_S_REDUCED_TO_SELF;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *right,
+ BOOL only_if_not_generic, IMoniker **result)
+{
+ DWORD order;
+
+ TRACE("(%p,%p,%d,%p)\n", iface, right, only_if_not_generic, result);
+
+ if (!result || !right)
+ return E_POINTER;
+
+ *result = NULL;
+
+ if (is_anti_moniker(right, &order))
+ return order > 1 ? create_anti_moniker(order - 1, result) : S_OK;
+
+ return only_if_not_generic ? MK_E_NEEDGENERIC : CreateGenericComposite(iface, right, result);
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_Enum(IMoniker *iface, BOOL forward, IEnumMoniker **enummoniker)
+{
+ TRACE("(%p,%d,%p)\n", iface, forward, enummoniker);
+
+ if (!enummoniker)
+ return E_POINTER;
+
+ *enummoniker = NULL;
+ return S_OK;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_IsEqual(IMoniker *iface, IMoniker *other)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface), *other_moniker;
+
+ TRACE("(%p,%p)\n", iface, other);
+
+ if (!other)
+ return E_INVALIDARG;
+
+ other_moniker = unsafe_objref_impl_from_IMoniker(other);
+ if (!other_moniker)
+ return S_FALSE;
+
+ return moniker->pObject == other_moniker->pObject ? S_OK : S_FALSE;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_Hash(IMoniker *iface, DWORD *hash)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface);
+
+ TRACE("(%p,%p)\n", iface, hash);
+
+ if (!hash)
+ return E_POINTER;
+
+ *hash = PtrToUlong(moniker->pObject);
+
+ return S_OK;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *left,
+ IMoniker *running)
+{
+ TRACE("(%p,%p,%p,%p)\n", iface, pbc, left, running);
+
+ return S_OK;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_GetTimeOfLastChange(IMoniker *iface,
+ IBindCtx *pbc, IMoniker *left, FILETIME *time)
+{
+ TRACE("(%p,%p,%p,%p)\n", iface, pbc, left, time);
+ return MK_E_UNAVAILABLE;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_Inverse(IMoniker *iface, IMoniker **moniker)
+{
+ TRACE("(%p,%p)\n", iface, moniker);
+
+ return CreateAntiMoniker(moniker);
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoniker *other, IMoniker **prefix)
+{
+ TRACE("(%p,%p,%p)\n", iface, other, prefix);
+
+ if (!prefix || !other)
+ return E_INVALIDARG;
+
+ *prefix = NULL;
+
+ if (ObjrefMonikerImpl_IsEqual(iface, other) == S_OK)
+ {
+ IMoniker_AddRef(iface);
+
+ *prefix = iface;
+
+ return MK_S_US;
+ }
+ else
+ return MK_E_NOPREFIX;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *other, IMoniker **result)
+{
+ TRACE("(%p,%p,%p)\n", iface, other, result);
+
+ if (!result)
+ return E_INVALIDARG;
+
+ *result = NULL;
+
+ return other ? E_NOTIMPL : E_INVALIDARG;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc,
+ IMoniker *left, LPOLESTR *name)
+{
+ FIXME("(%p,%p,%p,%p): stub\n", iface, pbc, left, name);
+
+ if (!name)
+ return E_POINTER;
+
+ *name = NULL;
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc,
+ IMoniker *left, LPOLESTR name, ULONG *eaten, IMoniker **out)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface);
+ HRESULT hr;
+ IParseDisplayName *pdn;
+
+ TRACE("(%p,%p,%p,%p,%p,%p)\n", iface, pbc, left, name, eaten, out);
+
+ if (left)
+ return MK_E_SYNTAX;
+
+ if (!moniker->pObject)
+ return E_UNEXPECTED;
+
+ hr = IUnknown_QueryInterface(moniker->pObject, &IID_IParseDisplayName, (void **)&pdn);
+ if (FAILED(hr))
+ return hr;
+
+ hr = IParseDisplayName_ParseDisplayName(pdn, pbc, name, eaten, out);
+ IParseDisplayName_Release(pdn);
+
+ return hr;
+}
+
+static HRESULT WINAPI ObjrefMonikerImpl_IsSystemMoniker(IMoniker *iface, DWORD *mksys)
+{
+ TRACE("(%p,%p)\n", iface, mksys);
+
+ if (!mksys)
+ return E_POINTER;
+
+ *mksys = MKSYS_OBJREFMONIKER;
+ return S_OK;
+}
+
+static const IMonikerVtbl VT_ObjrefMonikerImpl =
+{
+ ObjrefMonikerImpl_QueryInterface,
+ ObjrefMonikerImpl_AddRef,
+ ObjrefMonikerImpl_Release,
+ ObjrefMonikerImpl_GetClassID,
+ ObjrefMonikerImpl_IsDirty,
+ ObjrefMonikerImpl_Load,
+ ObjrefMonikerImpl_Save,
+ ObjrefMonikerImpl_GetSizeMax,
+ ObjrefMonikerImpl_BindToObject,
+ ObjrefMonikerImpl_BindToStorage,
+ ObjrefMonikerImpl_Reduce,
+ ObjrefMonikerImpl_ComposeWith,
+ ObjrefMonikerImpl_Enum,
+ ObjrefMonikerImpl_IsEqual,
+ ObjrefMonikerImpl_Hash,
+ ObjrefMonikerImpl_IsRunning,
+ ObjrefMonikerImpl_GetTimeOfLastChange,
+ ObjrefMonikerImpl_Inverse,
+ ObjrefMonikerImpl_CommonPrefixWith,
+ ObjrefMonikerImpl_RelativePathTo,
+ ObjrefMonikerImpl_GetDisplayName,
+ ObjrefMonikerImpl_ParseDisplayName,
+ ObjrefMonikerImpl_IsSystemMoniker
+};
+
+static ObjrefMonikerImpl *unsafe_objref_impl_from_IMoniker(IMoniker *iface)
+{
+ if (iface->lpVtbl != &VT_ObjrefMonikerImpl)
+ return NULL;
+ return CONTAINING_RECORD(iface, ObjrefMonikerImpl, IMoniker_iface);
+}
+
+static HRESULT WINAPI objref_moniker_marshal_QueryInterface(IMarshal *iface, REFIID riid, LPVOID *ppv)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMarshal(iface);
+
+ TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), ppv);
+
+ return IMoniker_QueryInterface(&moniker->IMoniker_iface, riid, ppv);
+}
+
+static ULONG WINAPI objref_moniker_marshal_AddRef(IMarshal *iface)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMarshal(iface);
+
+ TRACE("%p.\n",iface);
+
+ return IMoniker_AddRef(&moniker->IMoniker_iface);
+}
+
+static ULONG WINAPI objref_moniker_marshal_Release(IMarshal *iface)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMarshal(iface);
+
+ TRACE("%p.\n",iface);
+
+ return IMoniker_Release(&moniker->IMoniker_iface);
+}
+
+static HRESULT WINAPI objref_moniker_marshal_GetUnmarshalClass(IMarshal *iface, REFIID riid, void *pv,
+ DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *clsid)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMarshal(iface);
+
+ TRACE("%p, %s, %p, %x, %p, %x, %p.\n", iface, debugstr_guid(riid), pv, dwDestContext, pvDestContext,
+ mshlflags, clsid);
+
+ return IMoniker_GetClassID(&moniker->IMoniker_iface, clsid);
+}
+
+static HRESULT WINAPI objref_moniker_marshal_GetMarshalSizeMax(IMarshal *iface, REFIID riid, void *pv,
+ DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *size)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMarshal(iface);
+
+ TRACE("%p, %s, %p, %d, %p, %#x, %p.\n", iface, debugstr_guid(riid), pv, dwDestContext, pvDestContext,
+ mshlflags, size);
+
+ return CoGetMarshalSizeMax(size, &IID_IUnknown, moniker->pObject, dwDestContext, pvDestContext, mshlflags);
+}
+
+static HRESULT WINAPI objref_moniker_marshal_MarshalInterface(IMarshal *iface, IStream *stream, REFIID riid,
+ void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMarshal(iface);
+
+ TRACE("%p, %s, %p, %x, %p, %x.\n", stream, debugstr_guid(riid), pv,
+ dwDestContext, pvDestContext, mshlflags);
+
+ return CoMarshalInterface(stream, &IID_IUnknown, moniker->pObject, dwDestContext,
+ pvDestContext, mshlflags);
+}
+
+static HRESULT WINAPI objref_moniker_marshal_UnmarshalInterface(IMarshal *iface, IStream *stream,
+ REFIID riid, void **ppv)
+{
+ ObjrefMonikerImpl *moniker = objref_impl_from_IMarshal(iface);
+ IUnknown *object;
+ HRESULT hr;
+
+ TRACE("%p, %p, %s, %p.\n", iface, stream, debugstr_guid(riid), ppv);
+
+ hr = CoUnmarshalInterface(stream, &IID_IUnknown, (void **)&object);
+ if (FAILED(hr))
+ {
+ ERR("Couldn't unmarshal moniker, hr = %#x.\n", hr);
+ return hr;
+ }
+
+ if (moniker->pObject)
+ IUnknown_Release(moniker->pObject);
+ moniker->pObject = object;
+
+ return IMoniker_QueryInterface(&moniker->IMoniker_iface, riid, ppv);
+}
+
+static HRESULT WINAPI objref_moniker_marshal_ReleaseMarshalData(IMarshal *iface, IStream *stream)
+{
+ TRACE("%p, %p.\n", iface, stream);
+
+ return S_OK;
+}
+
+static HRESULT WINAPI objref_moniker_marshal_DisconnectObject(IMarshal *iface, DWORD reserved)
+{
+ TRACE("%p, %#x.\n", iface, reserved);
+
+ return S_OK;
+}
+
+static const IMarshalVtbl objref_moniker_marshal_vtbl =
+{
+ objref_moniker_marshal_QueryInterface,
+ objref_moniker_marshal_AddRef,
+ objref_moniker_marshal_Release,
+ objref_moniker_marshal_GetUnmarshalClass,
+ objref_moniker_marshal_GetMarshalSizeMax,
+ objref_moniker_marshal_MarshalInterface,
+ objref_moniker_marshal_UnmarshalInterface,
+ objref_moniker_marshal_ReleaseMarshalData,
+ objref_moniker_marshal_DisconnectObject
+};
+
+/***********************************************************************
+ * CreateObjrefMoniker (OLE32.@)
+ */
+HRESULT WINAPI CreateObjrefMoniker(IUnknown *obj, IMoniker **ret)
+{
+ ObjrefMonikerImpl *moniker;
+
+ TRACE("(%p,%p)\n", obj, ret);
+
+ if (!ret)
+ return E_INVALIDARG;
+
+ moniker = heap_alloc(sizeof(*moniker));
+ if (!moniker)
+ {
+ *ret = NULL;
+ return E_OUTOFMEMORY;
+ }
+
+ moniker->IMoniker_iface.lpVtbl = &VT_ObjrefMonikerImpl;
+ moniker->IMarshal_iface.lpVtbl = &objref_moniker_marshal_vtbl;
+ moniker->refcount = 1;
+ moniker->pObject = obj;
+ if (moniker->pObject)
+ IUnknown_AddRef(moniker->pObject);
+
+ *ret = &moniker->IMoniker_iface;
+
+ return S_OK;
+}
+
+HRESULT WINAPI ObjrefMoniker_CreateInstance(IClassFactory *iface, IUnknown *unk, REFIID iid, void **obj)
+{
+ IMoniker *moniker;
+ HRESULT hr;
+
+ TRACE("(%p,%s,%p)\n", unk, debugstr_guid(iid), obj);
+
+ *obj = NULL;
+
+ if (unk)
+ return CLASS_E_NOAGGREGATION;
+
+ hr = CreateObjrefMoniker(NULL, &moniker);
+ if (FAILED(hr))
+ return hr;
+
+ hr = IMoniker_QueryInterface(moniker, iid, obj);
+ IMoniker_Release(moniker);
+
+ return hr;
+}
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index 8d3276651bc..53aa583c1cb 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -82,9 +82,10 @@ static const CLSID CLSID_TestMoniker =
DEFINE_OLEGUID(CLSID_FileMoniker, 0x303, 0, 0);
DEFINE_OLEGUID(CLSID_ItemMoniker, 0x304, 0, 0);
DEFINE_OLEGUID(CLSID_AntiMoniker, 0x305, 0, 0);
+DEFINE_OLEGUID(CLSID_PointerMoniker, 0x306, 0, 0);
DEFINE_OLEGUID(CLSID_CompositeMoniker, 0x309, 0, 0);
DEFINE_OLEGUID(CLSID_ClassMoniker, 0x31a, 0, 0);
-DEFINE_OLEGUID(CLSID_PointerMoniker, 0x306, 0, 0);
+DEFINE_OLEGUID(CLSID_ObjrefMoniker, 0x327, 0, 0);
#define TEST_MONIKER_TYPE_TODO(m,t) _test_moniker_type(m, t, TRUE, __LINE__)
#define TEST_MONIKER_TYPE(m,t) _test_moniker_type(m, t, FALSE, __LINE__)
@@ -3861,7 +3862,7 @@ todo_wine
hr = IMarshal_GetUnmarshalClass(marshal, NULL, NULL, 0, NULL, 0, &clsid);
ok(hr == S_OK, "Failed to get class, hr %#x.\n", hr);
- ok(IsEqualGUID(&clsid, &CLSID_PointerMoniker), "Unexpected class.\n");
+ ok(IsEqualGUID(&clsid, &CLSID_PointerMoniker), "Unexpected class %s.\n", wine_dbgstr_guid(&clsid));
hr = IMarshal_GetMarshalSizeMax(marshal, &IID_IMoniker, NULL, CLSCTX_INPROC, NULL, 0, &size);
ok(hr == S_OK, "Failed to get marshal size, hr %#x.\n", hr);
@@ -4076,6 +4077,221 @@ todo_wine
IMoniker_Release(moniker);
}
+static void test_objref_moniker(void)
+{
+ IMoniker *moniker, *moniker2, *prefix, *inverse, *anti;
+ struct test_factory factory;
+ IEnumMoniker *enummoniker;
+ DWORD hash, size;
+ HRESULT hr;
+ IBindCtx *bindctx;
+ FILETIME filetime;
+ IUnknown *unknown;
+ IStream *stream;
+ IROTData *rotdata;
+ LPOLESTR display_name;
+ IMarshal *marshal;
+ LARGE_INTEGER pos;
+ CLSID clsid;
+
+ test_factory_init(&factory);
+
+ hr = CreateObjrefMoniker((IUnknown *)&factory.IClassFactory_iface, NULL);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+ hr = CreateObjrefMoniker((IUnknown *)&factory.IClassFactory_iface, &moniker);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_QueryInterface(moniker, &IID_IMoniker, NULL);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_QueryInterface(moniker, &CLSID_PointerMoniker, (void **)&unknown);
+ ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+ IUnknown_Release(unknown);
+
+ hr = IMoniker_QueryInterface(moniker, &CLSID_ObjrefMoniker, (void **)&unknown);
+ ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+ IUnknown_Release(unknown);
+
+ hr = IMoniker_QueryInterface(moniker, &IID_IMarshal, (void **)&marshal);
+ ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
+
+ hr = IMarshal_GetUnmarshalClass(marshal, NULL, NULL, 0, NULL, 0, &clsid);
+ ok(hr == S_OK, "Failed to get class, hr %#x.\n", hr);
+ ok(IsEqualGUID(&clsid, &CLSID_ObjrefMoniker), "Unexpected class %s.\n", wine_dbgstr_guid(&clsid));
+
+ hr = IMarshal_GetMarshalSizeMax(marshal, &IID_IMoniker, NULL, CLSCTX_INPROC, NULL, 0, &size);
+ ok(hr == S_OK, "Failed to get marshal size, hr %#x.\n", hr);
+ ok(size > 0, "Unexpected size %d.\n", size);
+
+ hr = CreateStreamOnHGlobal(NULL, TRUE, &stream);
+ ok(hr == S_OK, "Failed to create a stream, hr %#x.\n", hr);
+
+ hr = CoMarshalInterface(stream, &IID_IMoniker, (IUnknown *)moniker, MSHCTX_INPROC, NULL, MSHLFLAGS_NORMAL);
+ ok(hr == S_OK, "Failed to marshal moniker, hr %#x.\n", hr);
+
+ pos.QuadPart = 0;
+ IStream_Seek(stream, pos, STREAM_SEEK_SET, NULL);
+ hr = CoUnmarshalInterface(stream, &IID_IMoniker, (void **)&moniker2);
+ ok(hr == S_OK, "Failed to unmarshal, hr %#x.\n", hr);
+ hr = IMoniker_IsEqual(moniker, moniker2);
+ ok(hr == S_OK, "Expected equal moniker, hr %#x.\n", hr);
+ IMoniker_Release(moniker2);
+
+ IStream_Release(stream);
+
+ IMarshal_Release(marshal);
+
+ ok(factory.refcount > 1, "Unexpected factory refcount %u.\n", factory.refcount);
+
+ /* Display Name */
+
+ hr = CreateBindCtx(0, &bindctx);
+ ok(hr == S_OK, "CreateBindCtx failed: 0x%08x\n", hr);
+
+ hr = IMoniker_GetDisplayName(moniker, bindctx, NULL, &display_name);
+todo_wine
+ ok(hr == S_OK, "IMoniker_GetDisplayName failed: 0x%08x\n", hr);
+
+ IBindCtx_Release(bindctx);
+
+ hr = IMoniker_IsDirty(moniker);
+ ok(hr == S_FALSE, "IMoniker_IsDirty should return S_FALSE, not 0x%08x\n", hr);
+
+ /* IROTData::GetComparisonData test */
+
+ hr = IMoniker_QueryInterface(moniker, &IID_IROTData, (void **)&rotdata);
+ ok(hr == E_NOINTERFACE, "IMoniker_QueryInterface(IID_IROTData) should have returned E_NOINTERFACE instead of 0x%08x\n", hr);
+
+ /* Saving */
+
+ hr = CreateStreamOnHGlobal(NULL, TRUE, &stream);
+ ok(hr == S_OK, "CreateStreamOnHGlobal failed: 0x%08x\n", hr);
+
+ hr = IMoniker_Save(moniker, stream, TRUE);
+todo_wine
+ ok(hr == S_OK, "IMoniker_Save failed: 0x%08x\n", hr);
+
+ IStream_Release(stream);
+
+ /* Hashing */
+ hr = IMoniker_Hash(moniker, &hash);
+ ok(hr == S_OK, "IMoniker_Hash failed: 0x%08x\n", hr);
+ ok(hash == PtrToUlong(&factory.IClassFactory_iface), "Unexpected hash value %#x.\n", hash);
+
+ /* IsSystemMoniker test */
+ TEST_MONIKER_TYPE(moniker, MKSYS_OBJREFMONIKER);
+
+ hr = IMoniker_Inverse(moniker, &inverse);
+ ok(hr == S_OK, "Failed to get inverse, hr %#x.\n", hr);
+ TEST_MONIKER_TYPE(inverse, MKSYS_ANTIMONIKER);
+ IMoniker_Release(inverse);
+
+ hr = CreateBindCtx(0, &bindctx);
+ ok(hr == S_OK, "CreateBindCtx failed: 0x%08x\n", hr);
+
+ /* IsRunning test */
+ hr = IMoniker_IsRunning(moniker, bindctx, NULL, NULL);
+ ok(hr == S_OK, "IMoniker_IsRunning should return S_OK, not 0x%08x\n", hr);
+
+ hr = IMoniker_GetTimeOfLastChange(moniker, bindctx, NULL, &filetime);
+ ok(hr == MK_E_UNAVAILABLE, "IMoniker_GetTimeOfLastChange should return MK_E_UNAVAILABLE, not 0x%08x\n", hr);
+
+ hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
+ ok(hr == S_OK, "IMoniker_BindToObject failed: 0x%08x\n", hr);
+ IUnknown_Release(unknown);
+
+ hr = IMoniker_BindToStorage(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
+ ok(hr == S_OK, "IMoniker_BindToObject failed: 0x%08x\n", hr);
+ IUnknown_Release(unknown);
+
+ IMoniker_Release(moniker);
+
+todo_wine
+ ok(factory.refcount > 1, "Unexpected factory refcount %u.\n", factory.refcount);
+
+ hr = CreateObjrefMoniker(NULL, &moniker);
+ ok(hr == S_OK, "CreateObjrefMoniker failed, hr %#x.\n", hr);
+
+ hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
+ ok(hr == E_UNEXPECTED, "IMoniker_BindToObject should have returned E_UNEXPECTED instead of 0x%08x\n", hr);
+
+ hr = IMoniker_BindToStorage(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
+ ok(hr == E_UNEXPECTED, "IMoniker_BindToStorage should have returned E_UNEXPECTED instead of 0x%08x\n", hr);
+
+ IBindCtx_Release(bindctx);
+
+ /* Enum() */
+ enummoniker = (void *)0xdeadbeef;
+ hr = IMoniker_Enum(moniker, TRUE, &enummoniker);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(enummoniker == NULL, "got %p\n", enummoniker);
+
+ enummoniker = (void *)0xdeadbeef;
+ hr = IMoniker_Enum(moniker, FALSE, &enummoniker);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(enummoniker == NULL, "got %p\n", enummoniker);
+
+ IMoniker_Release(moniker);
+
+ /* CommonPrefixWith() */
+ hr = CreateObjrefMoniker((IUnknown *)&factory.IClassFactory_iface, &moniker);
+ ok(hr == S_OK, "CreateObjrefMoniker failed: hr %#x.\n", hr);
+
+ hr = CreateObjrefMoniker((IUnknown *)&factory.IClassFactory_iface, &moniker2);
+ ok(hr == S_OK, "CreateObjrefMoniker failed: hr %#x.\n", hr);
+
+ hr = IMoniker_IsEqual(moniker, NULL);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_IsEqual(moniker, moniker2);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_CommonPrefixWith(moniker, moniker2, NULL);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_CommonPrefixWith(moniker, NULL, &prefix);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_CommonPrefixWith(moniker, moniker2, &prefix);
+ ok(hr == MK_S_US, "Unexpected hr %#x.\n", hr);
+ ok(prefix == moniker, "Unexpected pointer.\n");
+ IMoniker_Release(prefix);
+
+ IMoniker_Release(moniker2);
+
+ hr = CreateObjrefMoniker((IUnknown *)moniker, &moniker2);
+ ok(hr == S_OK, "Failed to create moniker, hr %#x.\n", hr);
+
+ hr = IMoniker_IsEqual(moniker, moniker2);
+ ok(hr == S_FALSE, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_CommonPrefixWith(moniker, moniker2, &prefix);
+ ok(hr == MK_E_NOPREFIX, "Unexpected hr %#x.\n", hr);
+
+ IMoniker_Release(moniker2);
+
+ /* ComposeWith() */
+
+ /* P + A -> () */
+ anti = create_antimoniker(1);
+ hr = IMoniker_ComposeWith(moniker, anti, TRUE, &moniker2);
+ ok(hr == S_OK, "Failed to compose, hr %#x.\n", hr);
+ ok(!moniker2, "Unexpected pointer.\n");
+ IMoniker_Release(anti);
+
+ /* P + A2 -> A */
+ anti = create_antimoniker(2);
+ hr = IMoniker_ComposeWith(moniker, anti, TRUE, &moniker2);
+ ok(hr == S_OK, "Failed to compose, hr %#x.\n", hr);
+ TEST_MONIKER_TYPE(moniker2, MKSYS_ANTIMONIKER);
+ IMoniker_Release(moniker2);
+
+ IMoniker_Release(anti);
+
+ IMoniker_Release(moniker);
+}
+
static void test_bind_context(void)
{
IRunningObjectTable *rot, *rot2;
@@ -4385,6 +4601,7 @@ START_TEST(moniker)
test_anti_moniker();
test_generic_composite_moniker();
test_pointer_moniker();
+ test_objref_moniker();
test_save_load_filemoniker();
test_MonikerCommonPrefixWith();
diff --git a/include/objidl.idl b/include/objidl.idl
index 7576a686aeb..cd11729b292 100644
--- a/include/objidl.idl
+++ b/include/objidl.idl
@@ -330,7 +330,10 @@ interface IMoniker : IPersistStream
MKSYS_ITEMMONIKER = 4,
MKSYS_POINTERMONIKER = 5,
/* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
- MKSYS_CLASSMONIKER = 7
+ MKSYS_CLASSMONIKER = 7,
+ MKSYS_OBJREFMONIKER = 8,
+ MKSYS_SESSIONMONIKER = 9,
+ MKSYS_LUAMONIKER = 10
} MKSYS;
typedef [v1_enum] enum tagMKREDUCE {
--
2.31.1
2
2
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
tools/make_unicode | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
2
1
Hi,
I'm trying to run Diablo II: Resurrected for 3 days now and it keeps
failing with the:
"Failed to initialize graphics device. Please ensure your PC meets the
minimum system requirements and your drivers are up to date."
I use openSUSE 15.3 with:
1. Wine updated to the 6.19
2. vkd3d 1.2 (installed as Wine dependency)
3. Mesa updated to the 21.2.3
I suspect that Direct3D 12 simply doesn't work for some reason. I
decided to verify that using vkd3d tests. I downloaded vkd3d 1.2
sources and exectued:
./configure
make check
That gave me a failing tests/d3d12 and a lot of fixme-s & some d3d12
debugging messages in the test-suite.log .
My laptop is AMD Ryzen 5 PRO 2500U (so integrated GPU).
> glxinfo | grep --max-count=4 OpenGL
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon(TM) Vega 8 Graphics (RAVEN, DRM 3.39.0, 5.3.18-59.24-default, LLVM 11.0.1)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 21.2.3
OpenGL core profile shading language version string: 4.60
I would like to kindly ask for your help and some suggestion on what
may I be missing in my system that breaks vkd3d.
=================================
vkd3d 1.2: ./test-suite.log
=================================
# TOTAL: 5
# PASS: 4
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: tests/d3d12
=================
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_device_CheckFeatureSupport: Multi-adapter not supported.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x42.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x43.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x44.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x45.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x55.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x56.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x59.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x64.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x65.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x66.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x67.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x68.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x69.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x6a.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x6b.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x6c.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x6d.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x6e.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x6f.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x70.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x71.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x72.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x73.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_device_get_vkd3d_queue: Unhandled command list type 0x1.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_device_get_vkd3d_queue: Unhandled command list type 0x1.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:blend_attachment_from_d3d12: Ignoring LogicOpEnable 0x1.
fixme:d3d12_pipeline_state_init_graphics: Format 0x1c is not depth/stencil format.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
d3d12:579: Driver name: radv, driver info: Mesa 21.2.3.
d3d12:1043: Node count: 1.
d3d12:1111: UMA 0, cache coherent UMA 0, tile based renderer 0.
d3d12:1135: Max supported feature level 0xb100.
d3d12:1227:format 0x43: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x43: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x44: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x44: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x45: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x45: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x55: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x55: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x56: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x56: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x59: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x59: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x64: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x64: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x65: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x65: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x66: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x66: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x67: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x67: Todo: Got plane count 0, expected 2.
d3d12:1227:format 0x68: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x68: Todo: Got plane count 0, expected 2.
d3d12:1227:format 0x69: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x69: Todo: Got plane count 0, expected 2.
d3d12:1227:format 0x6a: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x6a: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x6b: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x6b: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x6c: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x6c: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x6d: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x6d: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x6e: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x6e: Todo: Got plane count 0, expected 2.
d3d12:1227:format 0x6f: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x6f: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x70: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x70: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x71: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x71: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x72: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x72: Todo: Got plane count 0, expected 1.
d3d12:1227:format 0x73: Todo: Failed to get format info, hr 0x80070057.
d3d12:1230:format 0x73: Todo: Got plane count 0, expected 1.
d3d12:1240: GPU virtual address bits per resource: 40.
d3d12:1242: GPU virtual address bits per process: 40.
d3d12:1293: Todo: Got unexpected hr 0x80070057.
d3d12:1294: Todo: Got unexpected support1 0.
d3d12:1866: Todo: Got unexpected hr 0.
d3d12:2432: Test skipped: Tiled resources are not supported.
d3d12:2645: Sampler descriptor handle increment size: 32.
d3d12:2672: MinMaxFiltering: 0.
d3d12:2713: CBV/SRV/UAV descriptor size: 32.
d3d12:2848: Todo: Got unexpected hr 0.
d3d12:2883: Todo: Got unexpected hr 0.
d3d12:4476: DSV descriptor handle increment size: 48.
d3d12:4610: RTV descriptor handle increment size: 48.
d3d12:4983:Test 20: Todo: Got 0x0000ffff, expected 0x00000000 at (0, 0, 0).
d3d12:4983:Test 28: Todo: Got 0x000000ff, expected 0x00000000 at (0, 0, 0).
d3d12:5257:Dim 0, Test 13: Todo: At layer 0, (0,0,0), expected 0x2345, got 0xffff.
d3d12:5257:Dim 0, Test 17: Todo: At layer 0, (0,0,0), expected 0x23, got 0xff.
d3d12:5257:Dim 1, Test 13: Todo: At lafixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_rtv_desc_create_rtv: NULL resource RTV not implemented.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_resource_Map: Not implemented for textures.
fixme:d3d12_resource_Map: Not implemented for textures.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_desc_create_srv: Ignoring plane slice 1.
fixme:d3d12_desc_create_srv: Ignoring plane slice 1.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_dsv_desc_create_dsv: Ignoring flags 0x1.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_desc_create_srv: Ignoring plane slice 1.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_dxbc_compiler_emit_dcl_resource_structured: Unhandled UAV flags 0x100.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:vkd3d_dxbc_compiler_emit_dcl_resource_structured: Unhandled UAV flags 0x100.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_dxbc_compiler_emit_dcl_resource_structured: Unhandled UAV flags 0x100.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_command_list_ResolveQueryData: D3D12 guarantees binary occlusion queries result in only 0 and 1.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 3.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 2.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 4.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 2.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 3.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 4.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 2.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:vkd3d_dxbc_compiler_check_index_range: Unhandled index range write mask 0x1 (0xf).
fixme:vkd3d_dxbc_compiler_emit_dcl_index_range: Ignoring dcl_index_range 0x6 3.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_set_view_swizzle_for_format: Alpha swizzle is not supported.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_command_list_check_index_buffer_strip_cut_value: Strip cut value 0xffff is not supported with index buffer format 0x2a.
fixme:d3d12_command_list_check_index_buffer_strip_cut_value: Strip cut value 0xffff is not supported with index buffer format 0x2a.
fixme:d3d12_command_list_check_index_buffer_strip_cut_value: Strip cut value 0xffffffff is not supported with index buffer format 0x39.
fixme:d3d12_command_list_check_index_buffer_strip_cut_value: Strip cut value 0xffffffff is not supported with index buffer format 0x39.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_command_list_SetPredication: Predication doesn't support clear and copy commands, and predication values are treated as 32-bit values.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xb.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:shader_sm4_read_instruction_modifier: Unhandled resource type 0xc.
fixme:shader_sm4_read_instruction_modifier: Unhandled data type 0x6.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:d3d12_command_list_WriteBufferImmediate: iface 0x4631ef0, count 2, parameters 0x7fffb04ec600, modes (nil) stub!
fixme:d3d12_command_list_WriteBufferImmediate: iface 0x4631ef0, count 2, parameters 0x7fffb04ec600, modes 0x7fffb04ec5f8 stub!
fixme:d3d12_command_list_WriteBufferImmediate: iface 0x4631ef0, count 2, parameters 0x7fffb04ec600, modes 0x7fffb04ec5f8 stub!
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:vkd3d_dxbc_compiler_emit_dcl_resource_structured: Unhandled UAV flags 0x100.
fixme:vkd3d_dxbc_compiler_emit_dcl_resource_structured: Unhandled UAV flags 0x100.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
fixme:debug_vk_memory_property_flags: Unrecognized flag(s) 0xc0.
yer 0, (0,0,0), expected 0x2345, got 0xffff.
d3d12:5257:Dim 1, Test 17: Todo: At layer 0, (0,0,0), expected 0x23, got 0xff.
d3d12:5257:Dim 2, Test 13: Todo: At layer 0, (0,0,0), expected 0x2345, got 0xffff.
d3d12:5257:Dim 2, Test 17: Todo: At layer 0, (0,0,0), expected 0x23, got 0xff.
d3d12:6956: Fixed bug: Got 0x000001f4, expected 0x000001f4 at (1, 1, 1).
d3d12:7113: Todo: Got unexpected hr 0.
d3d12:7190: Todo: Got unexpected hr 0x80070057.
d3d12:7452: Test skipped: Bundles are not implemented yet.
d3d12:9967:31:if_return: Fixed bug: Got {1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00} at (32, 32).
d3d12:9967:34:if_return: Fixed bug: Got {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00} at (32, 32).
d3d12:9967:37:if_return: Fixed bug: Got {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00} at (32, 32).
d3d12:9967:41:if_return: Fixed bug: Got {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00} at (32, 32).
d3d12:9967:48:if_return: Fixed bug: Got {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00} at (32, 32).
d3d12:16235: Todo: Got unexpected value 0xff0000ff.
d3d12:22297: Todo succeeded: Test 0: Got 0 (0), expected 0 (0) for 'atomic_imax' with inputs (1, 0), (-1), 0 (0).
d3d12:22297: Todo succeeded: Test 0: Got 0xffffffff (-1), expected 0xffffffff (-1) for 'atomic_imin' with inputs (1, 0), (-1), 0 (0).
d3d12:22317: Todo succeeded: Test 0: Got 0 (0), expected 0 (0) for 'imm_atomic_imax' with inputs (1, 0), (-1), 0 (0).
d3d12:22317: Todo succeeded: Test 0: Got 0xffffffff (-1), expected 0xffffffff (-1) for 'imm_atomic_imin' with inputs (1, 0), (-1), 0 (0).
d3d12:23209: Todo: Got unexpected result 0.
d3d12:29617: Size 4096, alignment 4096.
d3d12:30894:Test 8: Todo: Got 0xff00ff00, expected 0xffffffff at (16, 0, 0).
d3d12:30888:Test 10: Todo: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0).
d3d12:31443: Test skipped: Wait() is not implemented yet.
d3d12:32059: Bug: Got 0xffffffff, expected 0xffffffff at (32, 32, 1).
d3d12:32111: Todo: Got 0xff00ff00, expected 0xffffffff at (0, 0, 0).
d3d12:32228: Todo: Got 0x28384858, expected 0x39495969 at (0, 0, 0).
d3d12:32294: Bug: Got 0x39495969, expected 0x39495969 at (1, 1, 1).
d3d12:32791: Todo: Got unexpected value 0xdeadbeef, expected 0x1020304.
d3d12:32793: Todo: Got unexpected value 0xf00baa, expected 0xc0d0e0f.
d3d12:32810: Todo: Got unexpected value 0xdeadbeef, expected 0x2030405.
d3d12:32812: Todo: Got unexpected value 0xf00baa, expected 0xb0c0d0e.
d3d12:32819: Todo: Got unexpected hr 0.
d3d12: 2452893 tests executed (4 failures, 3 skipped, 70 todo, 8 bugs).
FAIL tests/d3d12 (exit status: 1)
2
4
13 Oct '21
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/tests/win.c | 29 ++++++++++++++++----
dlls/user32/win.c | 59 ++++++++++++++++++++++++++++++-----------
2 files changed, 67 insertions(+), 21 deletions(-)
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index 6b13d93be14..2679ea0813f 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -7923,17 +7923,36 @@ static void test_gettext(void)
if (0)
{
r = SendMessageA( hwnd, WM_GETTEXT, 0x10, 0x1000);
- ok( r == 0, "settext should return zero\n");
+ ok(r == 0, "WM_GETTEXT should return zero (%ld)\n", r);
r = SendMessageA( hwnd, WM_GETTEXT, 0x10000, 0);
- ok( r == 0, "settext should return zero (%ld)\n", r);
+ ok(r == 0, "WM_GETTEXT should return zero (%ld)\n", r);
r = SendMessageA( hwnd, WM_GETTEXT, 0xff000000, 0x1000);
- ok( r == 0, "settext should return zero (%ld)\n", r);
+ ok(r == 0, "WM_GETTEXT should return zero (%ld)\n", r);
r = SendMessageA( hwnd, WM_GETTEXT, 0x1000, 0xff000000);
- ok( r == 0, "settext should return zero (%ld)\n", r);
- }
+ ok(r == 0, "WM_GETTEXT should return zero (%ld)\n", r);
+ }
+
+ /* GetWindowText doesn't crash */
+ r = GetWindowTextA(hwnd, (LPSTR)0x10, 0x1000);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
+ r = GetWindowTextA(hwnd, (LPSTR)0x10000, 0);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
+ r = GetWindowTextA(hwnd, (LPSTR)0xff000000, 0x1000);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
+ r = GetWindowTextA(hwnd, (LPSTR)0x1000, 0xff000000);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
+
+ r = GetWindowTextW(hwnd, (LPWSTR)0x10, 0x1000);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
+ r = GetWindowTextW(hwnd, (LPWSTR)0x10000, 0);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
+ r = GetWindowTextW(hwnd, (LPWSTR)0xff000000, 0x1000);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
+ r = GetWindowTextW(hwnd, (LPWSTR)0x1000, 0xff000000);
+ ok(r == 0, "GetWindowText should return zero (%ld)\n", r);
DestroyWindow(hwnd);
}
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 5e89f4c2c97..e57f291be35 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -35,6 +35,7 @@
#include "controls.h"
#include "winerror.h"
#include "wine/gdi_driver.h"
+#include "wine/exception.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(win);
@@ -3001,22 +3002,34 @@ LONG WINAPI DECLSPEC_HOTPATCH SetWindowLongW(
INT WINAPI GetWindowTextA( HWND hwnd, LPSTR lpString, INT nMaxCount )
{
WCHAR *buffer;
+ int ret = 0;
if (!lpString || nMaxCount <= 0) return 0;
- if (WIN_IsCurrentProcess( hwnd ))
+ __TRY
{
- lpString[0] = 0;
- return (INT)SendMessageA( hwnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString );
+ if (WIN_IsCurrentProcess( hwnd ))
+ {
+ lpString[0] = 0;
+ ret = (INT)SendMessageA( hwnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString );
+ }
+ else if ((buffer = HeapAlloc( GetProcessHeap(), 0, nMaxCount * sizeof(WCHAR) )))
+ {
+ /* when window belongs to other process, don't send a message */
+ get_server_window_text( hwnd, buffer, nMaxCount );
+ if (!WideCharToMultiByte( CP_ACP, 0, buffer, -1, lpString, nMaxCount, NULL, NULL ))
+ lpString[nMaxCount-1] = 0;
+ HeapFree( GetProcessHeap(), 0, buffer );
+ ret = strlen(lpString);
+ }
+ }
+ __EXCEPT_ALL
+ {
+ ret = 0;
}
+ __ENDTRY
- /* when window belongs to other process, don't send a message */
- if (!(buffer = HeapAlloc( GetProcessHeap(), 0, nMaxCount * sizeof(WCHAR) ))) return 0;
- get_server_window_text( hwnd, buffer, nMaxCount );
- if (!WideCharToMultiByte( CP_ACP, 0, buffer, -1, lpString, nMaxCount, NULL, NULL ))
- lpString[nMaxCount-1] = 0;
- HeapFree( GetProcessHeap(), 0, buffer );
- return strlen(lpString);
+ return ret;
}
@@ -3049,17 +3062,31 @@ INT WINAPI InternalGetWindowText(HWND hwnd,LPWSTR lpString,INT nMaxCount )
*/
INT WINAPI GetWindowTextW( HWND hwnd, LPWSTR lpString, INT nMaxCount )
{
+ int ret;
+
if (!lpString || nMaxCount <= 0) return 0;
- if (WIN_IsCurrentProcess( hwnd ))
+ __TRY
{
- lpString[0] = 0;
- return (INT)SendMessageW( hwnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString );
+ if (WIN_IsCurrentProcess( hwnd ))
+ {
+ lpString[0] = 0;
+ ret = (INT)SendMessageW( hwnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString );
+ }
+ else
+ {
+ /* when window belongs to other process, don't send a message */
+ get_server_window_text( hwnd, lpString, nMaxCount );
+ ret = lstrlenW(lpString);
+ }
}
+ __EXCEPT_ALL
+ {
+ ret = 0;
+ }
+ __ENDTRY
- /* when window belongs to other process, don't send a message */
- get_server_window_text( hwnd, lpString, nMaxCount );
- return lstrlenW(lpString);
+ return ret;
}
--
2.31.1
4
8
[PATCH 6/8] win32u: Move NtUserOpenInputDesktop implementation from user32.
by Jacek Caban 13 Oct '21
by Jacek Caban 13 Oct '21
13 Oct '21
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/user32/user32.spec | 2 +-
dlls/user32/winstation.c | 25 -------------------------
dlls/win32u/syscall.c | 1 +
dlls/win32u/win32u.spec | 2 +-
dlls/win32u/winstation.c | 28 ++++++++++++++++++++++++++++
dlls/wow64win/syscall.h | 1 +
dlls/wow64win/user.c | 9 +++++++++
include/ntuser.h | 1 +
8 files changed, 42 insertions(+), 27 deletions(-)
2
1
[PATCH 5/8] win32u: Move NtUserSetThreadDesktop implementation from user32.
by Jacek Caban 13 Oct '21
by Jacek Caban 13 Oct '21
13 Oct '21
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/user32/user_main.c | 2 +-
dlls/user32/winstation.c | 8 +-------
dlls/win32u/syscall.c | 1 +
dlls/win32u/win32u.spec | 2 +-
dlls/win32u/winstation.c | 18 ++++++++++++++++++
dlls/wow64win/syscall.h | 3 ++-
dlls/wow64win/user.c | 7 +++++++
include/ntuser.h | 1 +
8 files changed, 32 insertions(+), 10 deletions(-)
2
1
[PATCH v4] winex11.drv: Add video adapter description to the registry.
by Dmitry Timoshkov 13 Oct '21
by Dmitry Timoshkov 13 Oct '21
13 Oct '21
v2: Without setting "HardwareInformation.MemorySize" key.
v3: strlen() -> sizeof().
v4: Perform string size calculation ealier.
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/winex11.drv/display.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/display.c b/dlls/winex11.drv/display.c
index c8c216c8302..65336888c13 100644
--- a/dlls/winex11.drv/display.c
+++ b/dlls/winex11.drv/display.c
@@ -463,6 +463,11 @@ static BOOL link_device(const WCHAR *instance, const GUID *guid)
static BOOL X11DRV_InitGpu(HDEVINFO devinfo, const struct x11drv_gpu *gpu, INT gpu_index, WCHAR *guid_string,
WCHAR *driver, LUID *gpu_luid)
{
+ static const WCHAR adapter_stringW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','A','d','a','p','t','e','r','S','t','r','i','n','g',0};
+ static const WCHAR bios_stringW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','B','i','o','s','S','t','r','i','n','g',0};
+ static const WCHAR chip_typeW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','C','h','i','p','T','y','p','e',0};
+ static const WCHAR dac_typeW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','D','a','c','T','y','p','e',0};
+ static const WCHAR ramdacW[] = {'I','n','t','e','r','g','r','a','t','e','d',' ','R','A','M','D','A','C',0};
static const BOOL present = TRUE;
SP_DEVINFO_DATA device_data = {sizeof(device_data)};
WCHAR instanceW[MAX_PATH];
@@ -538,9 +543,9 @@ static BOOL X11DRV_InitGpu(HDEVINFO devinfo, const struct x11drv_gpu *gpu, INT g
* This is where HKLM\System\CurrentControlSet\Control\Video\{GPU GUID}\{Adapter Index} links to */
hkey = SetupDiCreateDevRegKeyW(devinfo, &device_data, DICS_FLAG_GLOBAL, 0, DIREG_DRV, NULL, NULL);
+ size = (strlenW(gpu->name) + 1) * sizeof(WCHAR);
/* Write DriverDesc value */
- if (RegSetValueExW(hkey, driver_descW, 0, REG_SZ, (const BYTE *)gpu->name,
- (strlenW(gpu->name) + 1) * sizeof(WCHAR)))
+ if (RegSetValueExW(hkey, driver_descW, 0, REG_SZ, (const BYTE *)gpu->name, size))
goto done;
/* Write DriverDateData value, using current time as driver date, needed by Evoland */
GetSystemTimeAsFileTime(&filetime);
@@ -551,6 +556,14 @@ static BOOL X11DRV_InitGpu(HDEVINFO devinfo, const struct x11drv_gpu *gpu, INT g
sprintfW(bufferW, driver_date_fmtW, systemtime.wMonth, systemtime.wDay, systemtime.wYear);
if (RegSetValueExW(hkey, driver_dateW, 0, REG_SZ, (BYTE *)bufferW, (strlenW(bufferW) + 1) * sizeof(WCHAR)))
goto done;
+ if (RegSetValueExW(hkey, adapter_stringW, 0, REG_SZ, (const BYTE *)gpu->name, size))
+ goto done;
+ if (RegSetValueExW(hkey, bios_stringW, 0, REG_SZ, (const BYTE *)gpu->name, size))
+ goto done;
+ if (RegSetValueExW(hkey, chip_typeW, 0, REG_SZ, (const BYTE *)gpu->name, size))
+ goto done;
+ if (RegSetValueExW(hkey, dac_typeW, 0, REG_SZ, (const BYTE *)ramdacW, sizeof(ramdacW)))
+ goto done;
RegCloseKey(hkey);
--
2.31.1
1
0
[PATCH v3] winex11.drv: Add video adapter description to the registry.
by Dmitry Timoshkov 13 Oct '21
by Dmitry Timoshkov 13 Oct '21
13 Oct '21
v2: Without setting "HardwareInformation.MemorySize" key.
v3: strlen() -> sizeof().
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/winex11.drv/display.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/dlls/winex11.drv/display.c b/dlls/winex11.drv/display.c
index c8c216c8302..2930f6062c7 100644
--- a/dlls/winex11.drv/display.c
+++ b/dlls/winex11.drv/display.c
@@ -463,6 +463,11 @@ static BOOL link_device(const WCHAR *instance, const GUID *guid)
static BOOL X11DRV_InitGpu(HDEVINFO devinfo, const struct x11drv_gpu *gpu, INT gpu_index, WCHAR *guid_string,
WCHAR *driver, LUID *gpu_luid)
{
+ static const WCHAR adapter_stringW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','A','d','a','p','t','e','r','S','t','r','i','n','g',0};
+ static const WCHAR bios_stringW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','B','i','o','s','S','t','r','i','n','g',0};
+ static const WCHAR chip_typeW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','C','h','i','p','T','y','p','e',0};
+ static const WCHAR dac_typeW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','D','a','c','T','y','p','e',0};
+ static const WCHAR ramdacW[] = {'I','n','t','e','r','g','r','a','t','e','d',' ','R','A','M','D','A','C',0};
static const BOOL present = TRUE;
SP_DEVINFO_DATA device_data = {sizeof(device_data)};
WCHAR instanceW[MAX_PATH];
@@ -551,6 +556,15 @@ static BOOL X11DRV_InitGpu(HDEVINFO devinfo, const struct x11drv_gpu *gpu, INT g
sprintfW(bufferW, driver_date_fmtW, systemtime.wMonth, systemtime.wDay, systemtime.wYear);
if (RegSetValueExW(hkey, driver_dateW, 0, REG_SZ, (BYTE *)bufferW, (strlenW(bufferW) + 1) * sizeof(WCHAR)))
goto done;
+ size = (strlenW(gpu->name) + 1) * sizeof(WCHAR);
+ if (RegSetValueExW(hkey, adapter_stringW, 0, REG_SZ, (const BYTE *)gpu->name, size))
+ goto done;
+ if (RegSetValueExW(hkey, bios_stringW, 0, REG_SZ, (const BYTE *)gpu->name, size))
+ goto done;
+ if (RegSetValueExW(hkey, chip_typeW, 0, REG_SZ, (const BYTE *)gpu->name, size))
+ goto done;
+ if (RegSetValueExW(hkey, dac_typeW, 0, REG_SZ, (const BYTE *)ramdacW, sizeof(ramdacW)))
+ goto done;
RegCloseKey(hkey);
--
2.31.1
3
3