From: José Fonseca Date: Wed, 5 Dec 2012 19:42:07 +0000 (+0000) Subject: Update examples to use DXGI. X-Git-Url: https://git.cworth.org/git?p=apitrace-tests;a=commitdiff_plain;h=716cd83ce5cc7bd696451ff60c52d4e7443e168a Update examples to use DXGI. That's more common and challenging for apitrace. --- diff --git a/apps/d3d10/CMakeLists.txt b/apps/d3d10/CMakeLists.txt index 75d110b..226cd49 100644 --- a/apps/d3d10/CMakeLists.txt +++ b/apps/d3d10/CMakeLists.txt @@ -4,6 +4,7 @@ include_directories ( ) link_libraries ( + ${DirectX_DXGI_LIBRARY} ${DirectX_D3D10_LIBRARY} ) diff --git a/apps/d3d10/tri.cpp b/apps/d3d10/tri.cpp index 1821342..1029be9 100644 --- a/apps/d3d10/tri.cpp +++ b/apps/d3d10/tri.cpp @@ -38,6 +38,8 @@ #include "tri_ps_4_0.h" +static IDXGIFactory *g_pFactory = NULL; +static IDXGIAdapter *g_pAdapter = NULL; static IDXGISwapChain* g_pSwapChain = NULL; static ID3D10Device * g_pDevice = NULL; @@ -95,6 +97,26 @@ main(int argc, char *argv[]) Flags |= D3D10_CREATE_DEVICE_DEBUG; } + hr = CreateDXGIFactory(IID_IDXGIFactory, (void**)(&g_pFactory) ); + if (FAILED(hr)) { + return 1; + } + + hr = g_pFactory->EnumAdapters(0, &g_pAdapter); + if (FAILED(hr)) { + return 1; + } + + hr = D3D10CreateDevice(g_pAdapter, + D3D10_DRIVER_TYPE_HARDWARE, + NULL, + Flags, + D3D10_SDK_VERSION, + &g_pDevice); + if (FAILED(hr)) { + return 1; + } + DXGI_SWAP_CHAIN_DESC SwapChainDesc; ZeroMemory(&SwapChainDesc, sizeof SwapChainDesc); SwapChainDesc.BufferDesc.Width = WindowWidth; @@ -109,14 +131,7 @@ main(int argc, char *argv[]) SwapChainDesc.OutputWindow = hWnd; SwapChainDesc.Windowed = true; - hr = D3D10CreateDeviceAndSwapChain(NULL, - D3D10_DRIVER_TYPE_HARDWARE, - NULL, - Flags, - D3D10_SDK_VERSION, - &SwapChainDesc, - &g_pSwapChain, - &g_pDevice); + hr = g_pFactory->CreateSwapChain(g_pDevice, &SwapChainDesc, &g_pSwapChain); if (FAILED(hr)) { return 1; } diff --git a/apps/d3d10/tri.ref.txt b/apps/d3d10/tri.ref.txt index e5d7356..66ab019 100644 --- a/apps/d3d10/tri.ref.txt +++ b/apps/d3d10/tri.ref.txt @@ -1,4 +1,7 @@ -D3D10CreateDeviceAndSwapChain(pAdapter = NULL, DriverType = D3D10_DRIVER_TYPE_HARDWARE, Software = NULL, Flags = <>, SDKVersion = 29, pSwapChainDesc = &{BufferDesc = {Width = 250, Height = 250, RefreshRate = {Numerator = 60, Denominator = 1}, Format = DXGI_FORMAT_R8G8B8A8_UNORM, ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, Scaling = DXGI_MODE_SCALING_UNSPECIFIED}, SampleDesc = {Count = 1, Quality = 0}, BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT, BufferCount = 2, OutputWindow = , Windowed = TRUE, SwapEffect = DXGI_SWAP_EFFECT_DISCARD, Flags = 0x0}, ppSwapChain = &, ppDevice = &) = S_OK +CreateDXGIFactory(riid = {Data1 = 2071029484, Data2 = 8647, Data3 = 17582, Data4 = {178, 26, 201, 174, 50, 26, 227, 105}}, ppFactory = &) = S_OK +IDXGIFactory::EnumAdapters(this = , Adapter = 0, ppAdapter = &) = S_OK +D3D10CreateDevice(pAdapter = , DriverType = D3D10_DRIVER_TYPE_HARDWARE, Software = NULL, Flags = <>, SDKVersion = 29, ppDevice = &) = S_OK +IDXGIFactory::CreateSwapChain(this = , pDevice = , pDesc = &{BufferDesc = {Width = 250, Height = 250, RefreshRate = {Numerator = 60, Denominator = 1}, Format = DXGI_FORMAT_R8G8B8A8_UNORM, ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, Scaling = DXGI_MODE_SCALING_UNSPECIFIED}, SampleDesc = {Count = 1, Quality = 0}, BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT, BufferCount = 2, OutputWindow = , Windowed = TRUE, SwapEffect = DXGI_SWAP_EFFECT_DISCARD, Flags = 0x0}, ppSwapChain = &) = S_OK IDXGISwapChain::GetBuffer(this = , Buffer = 0, riid = {Data1 = 2608745476, Data2 = 13356, Data3 = 16646, Data4 = {161, 159, 79, 39, 4, 246, 137, 240}}, ppSurface = &) = S_OK ID3D10Device::CreateRenderTargetView(this = , pResource = , pDesc = &{Format = DXGI_FORMAT_R8G8B8A8_UNORM, ViewDimension = D3D10_RTV_DIMENSION_TEXTURE2D, Texture2D = {MipSlice = 0}}, ppRTView = &) = S_OK ID3D10Texture2D::Release(this = ) = 0 diff --git a/apps/d3d10_1/CMakeLists.txt b/apps/d3d10_1/CMakeLists.txt index 83455bc..ccd3dbc 100644 --- a/apps/d3d10_1/CMakeLists.txt +++ b/apps/d3d10_1/CMakeLists.txt @@ -4,6 +4,7 @@ include_directories ( ) link_libraries ( + ${DirectX_DXGI_LIBRARY} ${DirectX_D3D10_1_LIBRARY} ) diff --git a/apps/d3d10_1/tri.cpp b/apps/d3d10_1/tri.cpp index 4aed350..b9ed7d5 100644 --- a/apps/d3d10_1/tri.cpp +++ b/apps/d3d10_1/tri.cpp @@ -38,11 +38,15 @@ #include "tri_ps_4_0.h" +static IDXGIFactory1 *g_pFactory = NULL; +static IDXGIAdapter *g_pAdapter = NULL; static IDXGISwapChain* g_pSwapChain = NULL; static ID3D10Device1 * g_pDevice = NULL; -int main(int argc, char *argv[]){ +int +main(int argc, char *argv[]) +{ HRESULT hr; HINSTANCE hInstance = GetModuleHandle(NULL); @@ -93,6 +97,27 @@ int main(int argc, char *argv[]){ Flags |= D3D10_CREATE_DEVICE_DEBUG; } + hr = CreateDXGIFactory1(IID_IDXGIFactory1, (void**)(&g_pFactory) ); + if (FAILED(hr)) { + return 1; + } + + hr = g_pFactory->EnumAdapters(0, &g_pAdapter); + if (FAILED(hr)) { + return 1; + } + + hr = D3D10CreateDevice1(g_pAdapter, + D3D10_DRIVER_TYPE_HARDWARE, + NULL, + Flags, + D3D10_FEATURE_LEVEL_10_0, + D3D10_1_SDK_VERSION, + &g_pDevice); + if (FAILED(hr)) { + return 1; + } + DXGI_SWAP_CHAIN_DESC SwapChainDesc; ZeroMemory(&SwapChainDesc, sizeof SwapChainDesc); SwapChainDesc.BufferDesc.Width = WindowWidth; @@ -107,15 +132,7 @@ int main(int argc, char *argv[]){ SwapChainDesc.OutputWindow = hWnd; SwapChainDesc.Windowed = true; - hr = D3D10CreateDeviceAndSwapChain1(NULL, - D3D10_DRIVER_TYPE_HARDWARE, - NULL, - Flags, - D3D10_FEATURE_LEVEL_10_0, - D3D10_1_SDK_VERSION, - &SwapChainDesc, - &g_pSwapChain, - &g_pDevice); + hr = g_pFactory->CreateSwapChain(g_pDevice, &SwapChainDesc, &g_pSwapChain); if (FAILED(hr)) { return 1; } diff --git a/apps/d3d10_1/tri.ref.txt b/apps/d3d10_1/tri.ref.txt index 35fcd88..aeae9bd 100644 --- a/apps/d3d10_1/tri.ref.txt +++ b/apps/d3d10_1/tri.ref.txt @@ -1,4 +1,7 @@ -D3D10CreateDeviceAndSwapChain1(pAdapter = NULL, DriverType = D3D10_DRIVER_TYPE_HARDWARE, Software = NULL, Flags = <>, HardwareLevel = D3D10_FEATURE_LEVEL_10_0, SDKVersion = 32, pSwapChainDesc = &{BufferDesc = {Width = 250, Height = 250, RefreshRate = {Numerator = 60, Denominator = 1}, Format = DXGI_FORMAT_R8G8B8A8_UNORM, ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, Scaling = DXGI_MODE_SCALING_UNSPECIFIED}, SampleDesc = {Count = 1, Quality = 0}, BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT, BufferCount = 2, OutputWindow = , Windowed = TRUE, SwapEffect = DXGI_SWAP_EFFECT_DISCARD, Flags = 0x0}, ppSwapChain = &, ppDevice = &) = S_OK +CreateDXGIFactory1(riid = {Data1 = 1997188728, Data2 = 62063, Data3 = 19898, Data4 = {168, 41, 37, 60, 131, 209, 179, 135}}, ppFactory = &) = S_OK +IDXGIFactory1::EnumAdapters(this = , Adapter = 0, ppAdapter = &) = S_OK +D3D10CreateDevice1(pAdapter = , DriverType = D3D10_DRIVER_TYPE_HARDWARE, Software = NULL, Flags = <>, HardwareLevel = D3D10_FEATURE_LEVEL_10_0, SDKVersion = 32, ppDevice = &) = S_OK +IDXGIFactory1::CreateSwapChain(this = , pDevice = , pDesc = &{BufferDesc = {Width = 250, Height = 250, RefreshRate = {Numerator = 60, Denominator = 1}, Format = DXGI_FORMAT_R8G8B8A8_UNORM, ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, Scaling = DXGI_MODE_SCALING_UNSPECIFIED}, SampleDesc = {Count = 1, Quality = 0}, BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT, BufferCount = 2, OutputWindow = , Windowed = TRUE, SwapEffect = DXGI_SWAP_EFFECT_DISCARD, Flags = 0x0}, ppSwapChain = &) = S_OK IDXGISwapChain::GetBuffer(this = , Buffer = 0, riid = {Data1 = 2608745476, Data2 = 13356, Data3 = 16646, Data4 = {161, 159, 79, 39, 4, 246, 137, 240}}, ppSurface = &) = S_OK ID3D10Device1::CreateRenderTargetView(this = , pResource = , pDesc = &{Format = DXGI_FORMAT_R8G8B8A8_UNORM, ViewDimension = D3D10_RTV_DIMENSION_TEXTURE2D, Texture2D = {MipSlice = 0}}, ppRTView = &) = S_OK ID3D10Texture2D::Release(this = ) = 0 diff --git a/apps/d3d11_1/tri.cpp b/apps/d3d11_1/tri.cpp index f86ab7c..ff297ed 100644 --- a/apps/d3d11_1/tri.cpp +++ b/apps/d3d11_1/tri.cpp @@ -149,7 +149,12 @@ int main(int argc, char *argv[]){ if (FAILED(hr)) { return 1; } - hr = g_pDevice1->CreateRenderTargetView(pBackBuffer, NULL, &pRenderTargetView); + D3D11_RENDER_TARGET_VIEW_DESC RenderTargetViewDesc; + ZeroMemory(&RenderTargetViewDesc, sizeof RenderTargetViewDesc); + RenderTargetViewDesc.Format = SwapChainDesc.BufferDesc.Format; + RenderTargetViewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; + RenderTargetViewDesc.Texture2D.MipSlice = 0; + hr = g_pDevice1->CreateRenderTargetView(pBackBuffer, &RenderTargetViewDesc, &pRenderTargetView); if (FAILED(hr)) { return 1; } diff --git a/cmake/FindDirectX.cmake b/cmake/FindDirectX.cmake index cbbe4f1..6eb684e 100644 --- a/cmake/FindDirectX.cmake +++ b/cmake/FindDirectX.cmake @@ -138,6 +138,11 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") endif () + find_library (DirectX_DXGI_LIBRARY dxgi + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where dxgi resides") + + find_path (DirectX_D3D10_INCLUDE_DIR d3d10.h PATHS ${DirectX_INC_SEARCH_PATH} DOC "The directory where d3d10.h resides")