GRS_D3D12_Utility.h 2.4 KB
Newer Older
1 2 3 4
#pragma once
#include <SDKDDKVer.h>
#define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
#include <windows.h>
5
#include <dxgi1_6.h>
6 7 8 9
#include <d3d12.h> //for d3d12

//------------------------------------------------------------------------------------------------------------
// 为了调试加入下面的内联函数和宏定义,为每个接口对象设置名称,方便查看调试输出
10

11
#if defined(_DEBUG)
12
__inline void GRS_SetDXGIDebugName(IDXGIObject* pObject, LPCWSTR name)
13
{
14 15 16
	size_t szLen = 0;
	StringCchLengthW(name, MAX_PATH, &szLen);
	pObject->SetPrivateData(WKPDID_D3DDebugObjectName, static_cast<UINT>(szLen - 1), name);
17 18
}

19
__inline void GRS_SetDXGIDebugNameIndexed(IDXGIObject* pObject, LPCWSTR name, UINT index)
20
{
21
	size_t szLen = 0;
22 23 24
	WCHAR _DebugName[MAX_PATH] = {};
	if (SUCCEEDED(StringCchPrintfW(_DebugName, _countof(_DebugName), L"%s[%u]", name, index)))
	{
25 26
		StringCchLengthW(_DebugName, _countof(_DebugName), &szLen);
		pObject->SetPrivateData(WKPDID_D3DDebugObjectName, static_cast<UINT>(szLen), _DebugName);
27 28 29 30
	}
}
#else

31
__inline void GRS_SetDXGIDebugName(IDXGIObject*, LPCWSTR)
32 33
{
}
34
__inline void GRS_SetDXGIDebugNameIndexed(IDXGIObject*, LPCWSTR, UINT)
35 36 37 38 39
{
}

#endif

40 41
#define GRS_SET_DXGI_DEBUGNAME(x)						GRS_SetDXGIDebugName(x, L#x)
#define GRS_SET_DXGI_DEBUGNAME_INDEXED(x, n)			GRS_SetDXGIDebugNameIndexed(x[n], L#x, n)
42

43 44
#define GRS_SET_DXGI_DEBUGNAME_COMPTR(x)				GRS_SetDXGIDebugName(x.Get(), L#x)
#define GRS_SET_DXGI_DEBUGNAME_INDEXED_COMPTR(x, n)		GRS_SetDXGIDebugNameIndexed(x[n].Get(), L#x, n)
45 46

#if defined(_DEBUG)
47
__inline void GRS_SetD3D12DebugName(ID3D12Object* pObject, LPCWSTR name)
48
{
49
	pObject->SetName(name);
50 51
}

52
__inline void GRS_SetD3D12DebugNameIndexed(ID3D12Object* pObject, LPCWSTR name, UINT index)
53 54 55 56
{
	WCHAR _DebugName[MAX_PATH] = {};
	if (SUCCEEDED(StringCchPrintfW(_DebugName, _countof(_DebugName), L"%s[%u]", name, index)))
	{
57
		pObject->SetName(_DebugName);
58 59 60 61
	}
}
#else

62
__inline void GRS_SetD3D12DebugName(ID3D12Object*, LPCWSTR)
63 64
{
}
65
__inline void GRS_SetD3D12DebugNameIndexed(ID3D12Object*, LPCWSTR, UINT)
66 67 68 69 70
{
}

#endif

71 72 73 74 75 76
#define GRS_SET_D3D12_DEBUGNAME(x)						GRS_SetD3D12DebugName(x, L#x)
#define GRS_SET_D3D12_DEBUGNAME_INDEXED(x, n)			GRS_SetD3D12DebugNameIndexed(x[n], L#x, n)

#define GRS_SET_D3D12_DEBUGNAME_COMPTR(x)				GRS_SetD3D12DebugName(x.Get(), L#x)
#define GRS_SET_D3D12_DEBUGNAME_INDEXED_COMPTR(x, n)	GRS_SetD3D12DebugNameIndexed(x[n].Get(), L#x, n)

77 78

//------------------------------------------------------------------------------------------------------------