forked from MoonsideGames/Refresh
Fixed uniform offsets, removed a bunch of code from cdefines.h
parent
53128e0b66
commit
641abe4bb5
|
@ -30,7 +30,9 @@
|
||||||
#define CINTERFACE
|
#define CINTERFACE
|
||||||
#define COBJMACROS
|
#define COBJMACROS
|
||||||
#include <d3d11.h>
|
#include <d3d11.h>
|
||||||
|
#include <d3d11_1.h>
|
||||||
#include <dxgi.h>
|
#include <dxgi.h>
|
||||||
|
#include <dxgi1_6.h>
|
||||||
#include <d3dcompiler.h>
|
#include <d3dcompiler.h>
|
||||||
|
|
||||||
#include "Refresh_Driver.h"
|
#include "Refresh_Driver.h"
|
||||||
|
@ -429,7 +431,7 @@ typedef struct D3D11UniformBuffer
|
||||||
typedef struct D3D11CommandBuffer
|
typedef struct D3D11CommandBuffer
|
||||||
{
|
{
|
||||||
/* D3D11 Object References */
|
/* D3D11 Object References */
|
||||||
ID3D11DeviceContext *context;
|
ID3D11DeviceContext1 *context;
|
||||||
D3D11SwapchainData *swapchainData;
|
D3D11SwapchainData *swapchainData;
|
||||||
|
|
||||||
/* Render Pass */
|
/* Render Pass */
|
||||||
|
@ -457,7 +459,7 @@ typedef struct D3D11Sampler
|
||||||
|
|
||||||
typedef struct D3D11Renderer
|
typedef struct D3D11Renderer
|
||||||
{
|
{
|
||||||
ID3D11Device *device;
|
ID3D11Device1 *device;
|
||||||
ID3D11DeviceContext *immediateContext;
|
ID3D11DeviceContext *immediateContext;
|
||||||
IDXGIFactory1 *factory;
|
IDXGIFactory1 *factory;
|
||||||
IDXGIAdapter1 *adapter;
|
IDXGIAdapter1 *adapter;
|
||||||
|
@ -493,7 +495,7 @@ typedef struct D3D11Renderer
|
||||||
/* Logging */
|
/* Logging */
|
||||||
|
|
||||||
static void D3D11_INTERNAL_LogError(
|
static void D3D11_INTERNAL_LogError(
|
||||||
ID3D11Device *device,
|
ID3D11Device1 *device,
|
||||||
const char *msg,
|
const char *msg,
|
||||||
HRESULT res
|
HRESULT res
|
||||||
) {
|
) {
|
||||||
|
@ -631,24 +633,32 @@ static void D3D11_DrawInstancedPrimitives(
|
||||||
uint32_t fragmentParamOffset
|
uint32_t fragmentParamOffset
|
||||||
) {
|
) {
|
||||||
D3D11CommandBuffer *d3d11CommandBuffer = (D3D11CommandBuffer*) commandBuffer;
|
D3D11CommandBuffer *d3d11CommandBuffer = (D3D11CommandBuffer*) commandBuffer;
|
||||||
|
uint32_t vertexOffsetInConstants = vertexParamOffset / 16;
|
||||||
|
uint32_t fragmentOffsetInConstants = fragmentParamOffset / 16;
|
||||||
|
uint32_t vertexBlockSizeInConstants = d3d11CommandBuffer->graphicsPipeline->vertexUniformBlockSize / 16;
|
||||||
|
uint32_t fragmentBlockSizeInConstants = d3d11CommandBuffer->graphicsPipeline->fragmentUniformBlockSize / 16;
|
||||||
|
|
||||||
if (d3d11CommandBuffer->vertexUniformBuffer != NULL)
|
if (d3d11CommandBuffer->vertexUniformBuffer != NULL)
|
||||||
{
|
{
|
||||||
ID3D11DeviceContext_VSSetConstantBuffers(
|
ID3D11DeviceContext1_VSSetConstantBuffers1(
|
||||||
d3d11CommandBuffer->context,
|
d3d11CommandBuffer->context,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
&d3d11CommandBuffer->vertexUniformBuffer->d3d11Buffer->handle
|
&d3d11CommandBuffer->vertexUniformBuffer->d3d11Buffer->handle,
|
||||||
|
&vertexOffsetInConstants,
|
||||||
|
&vertexBlockSizeInConstants
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d3d11CommandBuffer->fragmentUniformBuffer != NULL)
|
if (d3d11CommandBuffer->fragmentUniformBuffer != NULL)
|
||||||
{
|
{
|
||||||
ID3D11DeviceContext_PSSetConstantBuffers(
|
ID3D11DeviceContext1_PSSetConstantBuffers1(
|
||||||
d3d11CommandBuffer->context,
|
d3d11CommandBuffer->context,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
&d3d11CommandBuffer->fragmentUniformBuffer->d3d11Buffer->handle
|
&d3d11CommandBuffer->fragmentUniformBuffer->d3d11Buffer->handle,
|
||||||
|
&fragmentOffsetInConstants,
|
||||||
|
&fragmentBlockSizeInConstants
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -660,8 +670,6 @@ static void D3D11_DrawInstancedPrimitives(
|
||||||
baseVertex,
|
baseVertex,
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
/* FIXME: vertex/fragment param offsets */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void D3D11_DrawIndexedPrimitives(
|
static void D3D11_DrawIndexedPrimitives(
|
||||||
|
@ -694,24 +702,32 @@ static void D3D11_DrawPrimitives(
|
||||||
uint32_t fragmentParamOffset
|
uint32_t fragmentParamOffset
|
||||||
) {
|
) {
|
||||||
D3D11CommandBuffer *d3d11CommandBuffer = (D3D11CommandBuffer*) commandBuffer;
|
D3D11CommandBuffer *d3d11CommandBuffer = (D3D11CommandBuffer*) commandBuffer;
|
||||||
|
uint32_t vertexOffsetInConstants = vertexParamOffset / 16;
|
||||||
|
uint32_t fragmentOffsetInConstants = fragmentParamOffset / 16;
|
||||||
|
uint32_t vertexBlockSizeInConstants = d3d11CommandBuffer->graphicsPipeline->vertexUniformBlockSize / 16;
|
||||||
|
uint32_t fragmentBlockSizeInConstants = d3d11CommandBuffer->graphicsPipeline->fragmentUniformBlockSize / 16;
|
||||||
|
|
||||||
if (d3d11CommandBuffer->vertexUniformBuffer != NULL)
|
if (d3d11CommandBuffer->vertexUniformBuffer != NULL)
|
||||||
{
|
{
|
||||||
ID3D11DeviceContext_VSSetConstantBuffers(
|
ID3D11DeviceContext1_VSSetConstantBuffers1(
|
||||||
d3d11CommandBuffer->context,
|
d3d11CommandBuffer->context,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
&d3d11CommandBuffer->vertexUniformBuffer->d3d11Buffer->handle
|
&d3d11CommandBuffer->vertexUniformBuffer->d3d11Buffer->handle,
|
||||||
|
&vertexOffsetInConstants,
|
||||||
|
&vertexBlockSizeInConstants
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d3d11CommandBuffer->fragmentUniformBuffer != NULL)
|
if (d3d11CommandBuffer->fragmentUniformBuffer != NULL)
|
||||||
{
|
{
|
||||||
ID3D11DeviceContext_PSSetConstantBuffers(
|
ID3D11DeviceContext1_PSSetConstantBuffers1(
|
||||||
d3d11CommandBuffer->context,
|
d3d11CommandBuffer->context,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
&d3d11CommandBuffer->fragmentUniformBuffer->d3d11Buffer->handle
|
&d3d11CommandBuffer->fragmentUniformBuffer->d3d11Buffer->handle,
|
||||||
|
&fragmentOffsetInConstants,
|
||||||
|
&fragmentBlockSizeInConstants
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,6 +991,13 @@ static Refresh_ComputePipeline* D3D11_CreateComputePipeline(
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint32_t D3D11_INTERNAL_NextHighestAlignment(
|
||||||
|
uint32_t n,
|
||||||
|
uint32_t align
|
||||||
|
) {
|
||||||
|
return align * ((n + align - 1) / align);
|
||||||
|
}
|
||||||
|
|
||||||
static Refresh_GraphicsPipeline* D3D11_CreateGraphicsPipeline(
|
static Refresh_GraphicsPipeline* D3D11_CreateGraphicsPipeline(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_GraphicsPipelineCreateInfo *pipelineCreateInfo
|
Refresh_GraphicsPipelineCreateInfo *pipelineCreateInfo
|
||||||
|
@ -1068,7 +1091,10 @@ static Refresh_GraphicsPipeline* D3D11_CreateGraphicsPipeline(
|
||||||
}
|
}
|
||||||
pipeline->vertexShader = (ID3D11VertexShader*) vertShaderModule->shader;
|
pipeline->vertexShader = (ID3D11VertexShader*) vertShaderModule->shader;
|
||||||
pipeline->numVertexSamplers = pipelineCreateInfo->vertexShaderInfo.samplerBindingCount;
|
pipeline->numVertexSamplers = pipelineCreateInfo->vertexShaderInfo.samplerBindingCount;
|
||||||
pipeline->vertexUniformBlockSize = (uint32_t) pipelineCreateInfo->vertexShaderInfo.uniformBufferSize;
|
pipeline->vertexUniformBlockSize = D3D11_INTERNAL_NextHighestAlignment(
|
||||||
|
(uint32_t) pipelineCreateInfo->vertexShaderInfo.uniformBufferSize,
|
||||||
|
256
|
||||||
|
);
|
||||||
|
|
||||||
/* Input Layout */
|
/* Input Layout */
|
||||||
|
|
||||||
|
@ -1131,7 +1157,10 @@ static Refresh_GraphicsPipeline* D3D11_CreateGraphicsPipeline(
|
||||||
}
|
}
|
||||||
pipeline->fragmentShader = (ID3D11PixelShader*) fragShaderModule->shader;
|
pipeline->fragmentShader = (ID3D11PixelShader*) fragShaderModule->shader;
|
||||||
pipeline->numFragmentSamplers = pipelineCreateInfo->fragmentShaderInfo.samplerBindingCount;
|
pipeline->numFragmentSamplers = pipelineCreateInfo->fragmentShaderInfo.samplerBindingCount;
|
||||||
pipeline->fragmentUniformBlockSize = (uint32_t) pipelineCreateInfo->fragmentShaderInfo.uniformBufferSize;
|
pipeline->fragmentUniformBlockSize = D3D11_INTERNAL_NextHighestAlignment(
|
||||||
|
(uint32_t) pipelineCreateInfo->vertexShaderInfo.uniformBufferSize,
|
||||||
|
256
|
||||||
|
);
|
||||||
|
|
||||||
return (Refresh_GraphicsPipeline*) pipeline;
|
return (Refresh_GraphicsPipeline*) pipeline;
|
||||||
}
|
}
|
||||||
|
@ -1681,7 +1710,7 @@ static uint32_t D3D11_PushVertexShaderUniforms(
|
||||||
d3d11CommandBuffer->vertexUniformBuffer->offset,
|
d3d11CommandBuffer->vertexUniformBuffer->offset,
|
||||||
data,
|
data,
|
||||||
dataLengthInBytes,
|
dataLengthInBytes,
|
||||||
0
|
0 /* FIXME: Should be NoOverwrite! */
|
||||||
);
|
);
|
||||||
|
|
||||||
d3d11CommandBuffer->vertexUniformBuffer->offset += graphicsPipeline->vertexUniformBlockSize;
|
d3d11CommandBuffer->vertexUniformBuffer->offset += graphicsPipeline->vertexUniformBlockSize;
|
||||||
|
@ -1722,7 +1751,7 @@ static uint32_t D3D11_PushFragmentShaderUniforms(
|
||||||
d3d11CommandBuffer->fragmentUniformBuffer->offset,
|
d3d11CommandBuffer->fragmentUniformBuffer->offset,
|
||||||
data,
|
data,
|
||||||
dataLengthInBytes,
|
dataLengthInBytes,
|
||||||
0
|
0 /* FIXME: Should be NoOverwrite! */
|
||||||
);
|
);
|
||||||
|
|
||||||
d3d11CommandBuffer->fragmentUniformBuffer->offset += graphicsPipeline->fragmentUniformBlockSize;
|
d3d11CommandBuffer->fragmentUniformBuffer->offset += graphicsPipeline->fragmentUniformBlockSize;
|
||||||
|
@ -1893,7 +1922,7 @@ static void D3D11_INTERNAL_AllocateCommandBuffers(
|
||||||
commandBuffer = SDL_malloc(sizeof(D3D11CommandBuffer));
|
commandBuffer = SDL_malloc(sizeof(D3D11CommandBuffer));
|
||||||
|
|
||||||
/* Deferred Device Context */
|
/* Deferred Device Context */
|
||||||
res = ID3D11Device_CreateDeferredContext(
|
res = ID3D11Device1_CreateDeferredContext1(
|
||||||
renderer->device,
|
renderer->device,
|
||||||
0,
|
0,
|
||||||
&commandBuffer->context
|
&commandBuffer->context
|
||||||
|
@ -1958,6 +1987,7 @@ static Refresh_CommandBuffer* D3D11_AcquireCommandBuffer(
|
||||||
commandBuffer->swapchainData = NULL;
|
commandBuffer->swapchainData = NULL;
|
||||||
commandBuffer->graphicsPipeline = NULL;
|
commandBuffer->graphicsPipeline = NULL;
|
||||||
commandBuffer->vertexUniformBuffer = NULL;
|
commandBuffer->vertexUniformBuffer = NULL;
|
||||||
|
commandBuffer->fragmentUniformBuffer = NULL;
|
||||||
commandBuffer->dsView = NULL;
|
commandBuffer->dsView = NULL;
|
||||||
for (i = 0; i < MAX_COLOR_TARGET_BINDINGS; i += 1)
|
for (i = 0; i < MAX_COLOR_TARGET_BINDINGS; i += 1)
|
||||||
{
|
{
|
||||||
|
@ -3122,6 +3152,7 @@ static Refresh_Device* D3D11_CreateDevice(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the device */
|
/* Create the device */
|
||||||
|
ID3D11Device *d3d11Device;
|
||||||
tryCreateDevice:
|
tryCreateDevice:
|
||||||
res = D3D11CreateDeviceFunc(
|
res = D3D11CreateDeviceFunc(
|
||||||
(IDXGIAdapter*) renderer->adapter,
|
(IDXGIAdapter*) renderer->adapter,
|
||||||
|
@ -3131,7 +3162,7 @@ tryCreateDevice:
|
||||||
levels,
|
levels,
|
||||||
SDL_arraysize(levels),
|
SDL_arraysize(levels),
|
||||||
D3D11_SDK_VERSION,
|
D3D11_SDK_VERSION,
|
||||||
&renderer->device,
|
&d3d11Device,
|
||||||
&renderer->featureLevel,
|
&renderer->featureLevel,
|
||||||
&renderer->immediateContext
|
&renderer->immediateContext
|
||||||
);
|
);
|
||||||
|
@ -3146,6 +3177,14 @@ tryCreateDevice:
|
||||||
|
|
||||||
ERROR_CHECK_RETURN("Could not create D3D11 device", NULL);
|
ERROR_CHECK_RETURN("Could not create D3D11 device", NULL);
|
||||||
|
|
||||||
|
/* The actual device we want is the ID3D11Device1 interface... */
|
||||||
|
res = ID3D11Device_QueryInterface(
|
||||||
|
d3d11Device,
|
||||||
|
&D3D_IID_ID3D11Device1,
|
||||||
|
&renderer->device
|
||||||
|
);
|
||||||
|
ERROR_CHECK_RETURN("Could not get ID3D11Device1 interface", NULL);
|
||||||
|
|
||||||
/* Print driver info */
|
/* Print driver info */
|
||||||
Refresh_LogInfo("Refresh Driver: D3D11");
|
Refresh_LogInfo("Refresh Driver: D3D11");
|
||||||
Refresh_LogInfo("D3D11 Adapter: %S", adapterDesc.Description);
|
Refresh_LogInfo("D3D11 Adapter: %S", adapterDesc.Description);
|
||||||
|
|
|
@ -33,183 +33,4 @@ static const IID D3D_IID_IDXGIFactory1 = { 0x770aae78,0xf26f,0x4dba,{0xa8,0x29,0
|
||||||
static const IID D3D_IID_IDXGIFactory6 = { 0xc1b6694f,0xff09,0x44a9,{0xb0,0x3c,0x77,0x90,0x0a,0x0a,0x1d,0x17} };
|
static const IID D3D_IID_IDXGIFactory6 = { 0xc1b6694f,0xff09,0x44a9,{0xb0,0x3c,0x77,0x90,0x0a,0x0a,0x1d,0x17} };
|
||||||
static const IID D3D_IID_IDXGIAdapter1 = { 0x29038f61,0x3839,0x4626,{0x91,0xfd,0x08,0x68,0x79,0x01,0x1a,0x05} };
|
static const IID D3D_IID_IDXGIAdapter1 = { 0x29038f61,0x3839,0x4626,{0x91,0xfd,0x08,0x68,0x79,0x01,0x1a,0x05} };
|
||||||
static const IID D3D_IID_ID3D11Texture2D = { 0x6f15aaf2,0xd208,0x4e89,{0x9a,0xb4,0x48,0x95,0x35,0xd3,0x4f,0x9c} };
|
static const IID D3D_IID_ID3D11Texture2D = { 0x6f15aaf2,0xd208,0x4e89,{0x9a,0xb4,0x48,0x95,0x35,0xd3,0x4f,0x9c} };
|
||||||
|
static const IID D3D_IID_ID3D11Device1 = { 0xa04bfb29,0x08ef,0x43d6,{0xa4,0x9c,0xa9,0xbd,0xbd,0xcb,0xe6,0x86} };
|
||||||
/* IDXGIFactory6 (taken from dxgi1_6.h, cleaned up a bit) */
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
DXGI_FEATURE_PRESENT_ALLOW_TEARING = 0
|
|
||||||
} DXGI_FEATURE;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
DXGI_GPU_PREFERENCE_UNSPECIFIED = 0,
|
|
||||||
DXGI_GPU_PREFERENCE_MINIMUM_POWER = (DXGI_GPU_PREFERENCE_UNSPECIFIED + 1),
|
|
||||||
DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = (DXGI_GPU_PREFERENCE_MINIMUM_POWER + 1)
|
|
||||||
} DXGI_GPU_PREFERENCE;
|
|
||||||
|
|
||||||
typedef struct IDXGIFactory6 IDXGIFactory6;
|
|
||||||
typedef struct IDXGIFactory6Vtbl
|
|
||||||
{
|
|
||||||
HRESULT(STDMETHODCALLTYPE* QueryInterface)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
REFIID riid,
|
|
||||||
void** ppvObject);
|
|
||||||
|
|
||||||
ULONG(STDMETHODCALLTYPE* AddRef)(
|
|
||||||
IDXGIFactory6* This);
|
|
||||||
|
|
||||||
ULONG(STDMETHODCALLTYPE* Release)(
|
|
||||||
IDXGIFactory6* This);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* SetPrivateData)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
REFGUID Name,
|
|
||||||
UINT DataSize,
|
|
||||||
const void* pData);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* SetPrivateDataInterface)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
REFGUID Name,
|
|
||||||
const IUnknown* pUnknown);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* GetPrivateData)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
REFGUID Name,
|
|
||||||
UINT* pDataSize,
|
|
||||||
void* pData);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* GetParent)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
REFIID riid,
|
|
||||||
void** ppParent);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* EnumAdapters)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
UINT Adapter,
|
|
||||||
IDXGIAdapter** ppAdapter);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* MakeWindowAssociation)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HWND WindowHandle,
|
|
||||||
UINT Flags);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* GetWindowAssociation)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HWND* pWindowHandle);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* CreateSwapChain)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
IUnknown* pDevice,
|
|
||||||
DXGI_SWAP_CHAIN_DESC* pDesc,
|
|
||||||
IDXGISwapChain** ppSwapChain);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* CreateSoftwareAdapter)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HMODULE Module,
|
|
||||||
IDXGIAdapter** ppAdapter);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* EnumAdapters1)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
UINT Adapter,
|
|
||||||
IDXGIAdapter1** ppAdapter);
|
|
||||||
|
|
||||||
BOOL(STDMETHODCALLTYPE* IsCurrent)(
|
|
||||||
IDXGIFactory6* This);
|
|
||||||
|
|
||||||
BOOL(STDMETHODCALLTYPE* IsWindowedStereoEnabled)(
|
|
||||||
IDXGIFactory6* This);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* CreateSwapChainForHwnd)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
IUnknown* pDevice,
|
|
||||||
HWND hWnd,
|
|
||||||
void* pDesc,
|
|
||||||
void* pFullscreenDesc,
|
|
||||||
void* pRestrictToOutput,
|
|
||||||
void** ppSwapChain);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* CreateSwapChainForCoreWindow)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
IUnknown* pDevice,
|
|
||||||
IUnknown* pWindow,
|
|
||||||
void* pDesc,
|
|
||||||
void* pRestrictToOutput,
|
|
||||||
void** ppSwapChain);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* GetSharedResourceAdapterLuid)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HANDLE hResource,
|
|
||||||
LUID* pLuid);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* RegisterStereoStatusWindow)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HWND WindowHandle,
|
|
||||||
UINT wMsg,
|
|
||||||
DWORD* pdwCookie);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* RegisterStereoStatusEvent)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HANDLE hEvent,
|
|
||||||
DWORD* pdwCookie);
|
|
||||||
|
|
||||||
void (STDMETHODCALLTYPE* UnregisterStereoStatus)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
DWORD dwCookie);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* RegisterOcclusionStatusWindow)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HWND WindowHandle,
|
|
||||||
UINT wMsg,
|
|
||||||
DWORD* pdwCookie);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* RegisterOcclusionStatusEvent)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
HANDLE hEvent,
|
|
||||||
DWORD* pdwCookie);
|
|
||||||
|
|
||||||
void (STDMETHODCALLTYPE* UnregisterOcclusionStatus)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
DWORD dwCookie);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* CreateSwapChainForComposition)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
IUnknown* pDevice,
|
|
||||||
void* pDesc,
|
|
||||||
void* pRestrictToOutput,
|
|
||||||
void** ppSwapChain);
|
|
||||||
|
|
||||||
UINT(STDMETHODCALLTYPE* GetCreationFlags)(
|
|
||||||
IDXGIFactory6* This);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* EnumAdapterByLuid)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
LUID AdapterLuid,
|
|
||||||
REFIID riid,
|
|
||||||
void** ppvAdapter);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* EnumWarpAdapter)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
REFIID riid,
|
|
||||||
void** ppvAdapter);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* CheckFeatureSupport)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
DXGI_FEATURE Feature,
|
|
||||||
void* pFeatureSupportData,
|
|
||||||
UINT FeatureSupportDataSize);
|
|
||||||
|
|
||||||
HRESULT(STDMETHODCALLTYPE* EnumAdapterByGpuPreference)(
|
|
||||||
IDXGIFactory6* This,
|
|
||||||
UINT Adapter,
|
|
||||||
DXGI_GPU_PREFERENCE GpuPreference,
|
|
||||||
REFIID riid,
|
|
||||||
void** ppvAdapter);
|
|
||||||
} IDXGIFactory6Vtbl;
|
|
||||||
|
|
||||||
struct IDXGIFactory6
|
|
||||||
{
|
|
||||||
struct IDXGIFactory6Vtbl* lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define IDXGIFactory6_EnumAdapterByGpuPreference(This,Adapter,GpuPreference,riid,ppvAdapter) \
|
|
||||||
( (This)->lpVtbl -> EnumAdapterByGpuPreference(This,Adapter,GpuPreference,riid,ppvAdapter) )
|
|
||||||
|
|
Loading…
Reference in New Issue