1*61046927SAndroid Build Coastguard Worker /**************************************************************************
2*61046927SAndroid Build Coastguard Worker *
3*61046927SAndroid Build Coastguard Worker * Copyright 2012-2021 VMware, Inc.
4*61046927SAndroid Build Coastguard Worker * All Rights Reserved.
5*61046927SAndroid Build Coastguard Worker *
6*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a
7*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the
8*61046927SAndroid Build Coastguard Worker * "Software"), to deal in the Software without restriction, including
9*61046927SAndroid Build Coastguard Worker * without limitation the rights to use, copy, modify, merge, publish,
10*61046927SAndroid Build Coastguard Worker * distribute, sub license, and/or sell copies of the Software, and to
11*61046927SAndroid Build Coastguard Worker * permit persons to whom the Software is furnished to do so, subject to
12*61046927SAndroid Build Coastguard Worker * the following conditions:
13*61046927SAndroid Build Coastguard Worker *
14*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*61046927SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*61046927SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17*61046927SAndroid Build Coastguard Worker * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18*61046927SAndroid Build Coastguard Worker * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19*61046927SAndroid Build Coastguard Worker * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20*61046927SAndroid Build Coastguard Worker * USE OR OTHER DEALINGS IN THE SOFTWARE.
21*61046927SAndroid Build Coastguard Worker *
22*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the
23*61046927SAndroid Build Coastguard Worker * next paragraph) shall be included in all copies or substantial portions
24*61046927SAndroid Build Coastguard Worker * of the Software.
25*61046927SAndroid Build Coastguard Worker *
26*61046927SAndroid Build Coastguard Worker **************************************************************************/
27*61046927SAndroid Build Coastguard Worker
28*61046927SAndroid Build Coastguard Worker /*
29*61046927SAndroid Build Coastguard Worker * Device.cpp --
30*61046927SAndroid Build Coastguard Worker * Functions that provide the 3D device functionality.
31*61046927SAndroid Build Coastguard Worker */
32*61046927SAndroid Build Coastguard Worker
33*61046927SAndroid Build Coastguard Worker
34*61046927SAndroid Build Coastguard Worker #include "Draw.h"
35*61046927SAndroid Build Coastguard Worker #include "DxgiFns.h"
36*61046927SAndroid Build Coastguard Worker #include "InputAssembly.h"
37*61046927SAndroid Build Coastguard Worker #include "OutputMerger.h"
38*61046927SAndroid Build Coastguard Worker #include "Query.h"
39*61046927SAndroid Build Coastguard Worker #include "Rasterizer.h"
40*61046927SAndroid Build Coastguard Worker #include "Resource.h"
41*61046927SAndroid Build Coastguard Worker #include "Shader.h"
42*61046927SAndroid Build Coastguard Worker #include "State.h"
43*61046927SAndroid Build Coastguard Worker #include "Format.h"
44*61046927SAndroid Build Coastguard Worker
45*61046927SAndroid Build Coastguard Worker #include "Debug.h"
46*61046927SAndroid Build Coastguard Worker
47*61046927SAndroid Build Coastguard Worker #include "util/u_sampler.h"
48*61046927SAndroid Build Coastguard Worker
49*61046927SAndroid Build Coastguard Worker
50*61046927SAndroid Build Coastguard Worker static void APIENTRY DestroyDevice(D3D10DDI_HDEVICE hDevice);
51*61046927SAndroid Build Coastguard Worker static void APIENTRY RelocateDeviceFuncs(D3D10DDI_HDEVICE hDevice,
52*61046927SAndroid Build Coastguard Worker __in struct D3D10DDI_DEVICEFUNCS *pDeviceFunctions);
53*61046927SAndroid Build Coastguard Worker static void APIENTRY RelocateDeviceFuncs1(D3D10DDI_HDEVICE hDevice,
54*61046927SAndroid Build Coastguard Worker __in struct D3D10_1DDI_DEVICEFUNCS *pDeviceFunctions);
55*61046927SAndroid Build Coastguard Worker static void APIENTRY Flush(D3D10DDI_HDEVICE hDevice);
56*61046927SAndroid Build Coastguard Worker static void APIENTRY CheckFormatSupport(D3D10DDI_HDEVICE hDevice, DXGI_FORMAT Format,
57*61046927SAndroid Build Coastguard Worker __out UINT *pFormatCaps);
58*61046927SAndroid Build Coastguard Worker static void APIENTRY CheckMultisampleQualityLevels(D3D10DDI_HDEVICE hDevice,
59*61046927SAndroid Build Coastguard Worker DXGI_FORMAT Format,
60*61046927SAndroid Build Coastguard Worker UINT SampleCount,
61*61046927SAndroid Build Coastguard Worker __out UINT *pNumQualityLevels);
62*61046927SAndroid Build Coastguard Worker static void APIENTRY SetTextFilterSize(D3D10DDI_HDEVICE hDevice, UINT Width, UINT Height);
63*61046927SAndroid Build Coastguard Worker
64*61046927SAndroid Build Coastguard Worker
65*61046927SAndroid Build Coastguard Worker /*
66*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
67*61046927SAndroid Build Coastguard Worker *
68*61046927SAndroid Build Coastguard Worker * CalcPrivateDeviceSize --
69*61046927SAndroid Build Coastguard Worker *
70*61046927SAndroid Build Coastguard Worker * The CalcPrivateDeviceSize function determines the size of a memory
71*61046927SAndroid Build Coastguard Worker * region that the user-mode display driver requires from the Microsoft
72*61046927SAndroid Build Coastguard Worker * Direct3D runtime to store frequently-accessed data.
73*61046927SAndroid Build Coastguard Worker *
74*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
75*61046927SAndroid Build Coastguard Worker */
76*61046927SAndroid Build Coastguard Worker
77*61046927SAndroid Build Coastguard Worker SIZE_T APIENTRY
CalcPrivateDeviceSize(D3D10DDI_HADAPTER hAdapter,__in const D3D10DDIARG_CALCPRIVATEDEVICESIZE * pData)78*61046927SAndroid Build Coastguard Worker CalcPrivateDeviceSize(D3D10DDI_HADAPTER hAdapter, // IN
79*61046927SAndroid Build Coastguard Worker __in const D3D10DDIARG_CALCPRIVATEDEVICESIZE *pData) // IN
80*61046927SAndroid Build Coastguard Worker {
81*61046927SAndroid Build Coastguard Worker return sizeof(Device);
82*61046927SAndroid Build Coastguard Worker }
83*61046927SAndroid Build Coastguard Worker
84*61046927SAndroid Build Coastguard Worker /*
85*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
86*61046927SAndroid Build Coastguard Worker *
87*61046927SAndroid Build Coastguard Worker * CreateDevice --
88*61046927SAndroid Build Coastguard Worker *
89*61046927SAndroid Build Coastguard Worker * The CreateDevice function creates a graphics context that is
90*61046927SAndroid Build Coastguard Worker * referenced in subsequent calls.
91*61046927SAndroid Build Coastguard Worker *
92*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
93*61046927SAndroid Build Coastguard Worker */
94*61046927SAndroid Build Coastguard Worker
95*61046927SAndroid Build Coastguard Worker HRESULT APIENTRY
CreateDevice(D3D10DDI_HADAPTER hAdapter,__in D3D10DDIARG_CREATEDEVICE * pCreateData)96*61046927SAndroid Build Coastguard Worker CreateDevice(D3D10DDI_HADAPTER hAdapter, // IN
97*61046927SAndroid Build Coastguard Worker __in D3D10DDIARG_CREATEDEVICE *pCreateData) // IN
98*61046927SAndroid Build Coastguard Worker {
99*61046927SAndroid Build Coastguard Worker LOG_ENTRYPOINT();
100*61046927SAndroid Build Coastguard Worker
101*61046927SAndroid Build Coastguard Worker if (0) {
102*61046927SAndroid Build Coastguard Worker DebugPrintf("hAdapter = %p\n", hAdapter);
103*61046927SAndroid Build Coastguard Worker DebugPrintf("pKTCallbacks = %p\n", pCreateData->pKTCallbacks);
104*61046927SAndroid Build Coastguard Worker DebugPrintf("p10_1DeviceFuncs = %p\n", pCreateData->p10_1DeviceFuncs);
105*61046927SAndroid Build Coastguard Worker DebugPrintf("hDrvDevice = %p\n", pCreateData->hDrvDevice);
106*61046927SAndroid Build Coastguard Worker DebugPrintf("DXGIBaseDDI = %p\n", pCreateData->DXGIBaseDDI);
107*61046927SAndroid Build Coastguard Worker DebugPrintf("hRTCoreLayer = %p\n", pCreateData->hRTCoreLayer);
108*61046927SAndroid Build Coastguard Worker DebugPrintf("pUMCallbacks = %p\n", pCreateData->pUMCallbacks);
109*61046927SAndroid Build Coastguard Worker }
110*61046927SAndroid Build Coastguard Worker
111*61046927SAndroid Build Coastguard Worker switch (pCreateData->Interface) {
112*61046927SAndroid Build Coastguard Worker case D3D10_0_DDI_INTERFACE_VERSION:
113*61046927SAndroid Build Coastguard Worker case D3D10_0_x_DDI_INTERFACE_VERSION:
114*61046927SAndroid Build Coastguard Worker case D3D10_0_7_DDI_INTERFACE_VERSION:
115*61046927SAndroid Build Coastguard Worker #if SUPPORT_D3D10_1
116*61046927SAndroid Build Coastguard Worker case D3D10_1_DDI_INTERFACE_VERSION:
117*61046927SAndroid Build Coastguard Worker case D3D10_1_x_DDI_INTERFACE_VERSION:
118*61046927SAndroid Build Coastguard Worker case D3D10_1_7_DDI_INTERFACE_VERSION:
119*61046927SAndroid Build Coastguard Worker #endif
120*61046927SAndroid Build Coastguard Worker break;
121*61046927SAndroid Build Coastguard Worker default:
122*61046927SAndroid Build Coastguard Worker DebugPrintf("%s: unsupported interface version 0x%08x\n",
123*61046927SAndroid Build Coastguard Worker __func__, pCreateData->Interface);
124*61046927SAndroid Build Coastguard Worker return E_FAIL;
125*61046927SAndroid Build Coastguard Worker }
126*61046927SAndroid Build Coastguard Worker
127*61046927SAndroid Build Coastguard Worker Adapter *pAdapter = CastAdapter(hAdapter);
128*61046927SAndroid Build Coastguard Worker
129*61046927SAndroid Build Coastguard Worker Device *pDevice = CastDevice(pCreateData->hDrvDevice);
130*61046927SAndroid Build Coastguard Worker memset(pDevice, 0, sizeof *pDevice);
131*61046927SAndroid Build Coastguard Worker
132*61046927SAndroid Build Coastguard Worker struct pipe_screen *screen = pAdapter->screen;
133*61046927SAndroid Build Coastguard Worker struct pipe_context *pipe = screen->context_create(screen, NULL, 0);
134*61046927SAndroid Build Coastguard Worker pDevice->pipe = pipe;
135*61046927SAndroid Build Coastguard Worker pDevice->cso = cso_create_context(pipe, CSO_NO_VBUF);
136*61046927SAndroid Build Coastguard Worker
137*61046927SAndroid Build Coastguard Worker pDevice->empty_vs = CreateEmptyShader(pDevice, PIPE_SHADER_VERTEX);
138*61046927SAndroid Build Coastguard Worker pDevice->empty_fs = CreateEmptyShader(pDevice, PIPE_SHADER_FRAGMENT);
139*61046927SAndroid Build Coastguard Worker
140*61046927SAndroid Build Coastguard Worker pipe->bind_vs_state(pipe, pDevice->empty_vs);
141*61046927SAndroid Build Coastguard Worker pipe->bind_fs_state(pipe, pDevice->empty_fs);
142*61046927SAndroid Build Coastguard Worker
143*61046927SAndroid Build Coastguard Worker pDevice->max_dual_source_render_targets =
144*61046927SAndroid Build Coastguard Worker screen->get_param(screen, PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS);
145*61046927SAndroid Build Coastguard Worker
146*61046927SAndroid Build Coastguard Worker pDevice->hRTCoreLayer = pCreateData->hRTCoreLayer;
147*61046927SAndroid Build Coastguard Worker pDevice->hDevice = (HANDLE)pCreateData->hRTDevice.handle;
148*61046927SAndroid Build Coastguard Worker pDevice->KTCallbacks = *pCreateData->pKTCallbacks;
149*61046927SAndroid Build Coastguard Worker pDevice->UMCallbacks = *pCreateData->pUMCallbacks;
150*61046927SAndroid Build Coastguard Worker pDevice->pDXGIBaseCallbacks = pCreateData->DXGIBaseDDI.pDXGIBaseCallbacks;
151*61046927SAndroid Build Coastguard Worker
152*61046927SAndroid Build Coastguard Worker pDevice->draw_so_target = NULL;
153*61046927SAndroid Build Coastguard Worker
154*61046927SAndroid Build Coastguard Worker if (0) {
155*61046927SAndroid Build Coastguard Worker DebugPrintf("pDevice = %p\n", pDevice);
156*61046927SAndroid Build Coastguard Worker }
157*61046927SAndroid Build Coastguard Worker
158*61046927SAndroid Build Coastguard Worker st_debug_parse();
159*61046927SAndroid Build Coastguard Worker
160*61046927SAndroid Build Coastguard Worker /*
161*61046927SAndroid Build Coastguard Worker * Fill in the D3D10 DDI functions
162*61046927SAndroid Build Coastguard Worker */
163*61046927SAndroid Build Coastguard Worker D3D10DDI_DEVICEFUNCS *pDeviceFuncs = pCreateData->pDeviceFuncs;
164*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDefaultConstantBufferUpdateSubresourceUP = ResourceUpdateSubResourceUP;
165*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnVsSetConstantBuffers = VsSetConstantBuffers;
166*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnPsSetShaderResources = PsSetShaderResources;
167*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnPsSetShader = PsSetShader;
168*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnPsSetSamplers = PsSetSamplers;
169*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnVsSetShader = VsSetShader;
170*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDrawIndexed = DrawIndexed;
171*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDraw = Draw;
172*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDynamicIABufferMapNoOverwrite = ResourceMap;
173*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDynamicIABufferUnmap = ResourceUnmap;
174*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDynamicConstantBufferMapDiscard = ResourceMap;
175*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDynamicIABufferMapDiscard = ResourceMap;
176*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDynamicConstantBufferUnmap = ResourceUnmap;
177*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnPsSetConstantBuffers = PsSetConstantBuffers;
178*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnIaSetInputLayout = IaSetInputLayout;
179*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnIaSetVertexBuffers = IaSetVertexBuffers;
180*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnIaSetIndexBuffer = IaSetIndexBuffer;
181*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDrawIndexedInstanced = DrawIndexedInstanced;
182*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDrawInstanced = DrawInstanced;
183*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDynamicResourceMapDiscard = ResourceMap;
184*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDynamicResourceUnmap = ResourceUnmap;
185*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnGsSetConstantBuffers = GsSetConstantBuffers;
186*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnGsSetShader = GsSetShader;
187*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnIaSetTopology = IaSetTopology;
188*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnStagingResourceMap = ResourceMap;
189*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnStagingResourceUnmap = ResourceUnmap;
190*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnVsSetShaderResources = VsSetShaderResources;
191*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnVsSetSamplers = VsSetSamplers;
192*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnGsSetShaderResources = GsSetShaderResources;
193*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnGsSetSamplers = GsSetSamplers;
194*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetRenderTargets = SetRenderTargets;
195*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnShaderResourceViewReadAfterWriteHazard = ShaderResourceViewReadAfterWriteHazard;
196*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceReadAfterWriteHazard = ResourceReadAfterWriteHazard;
197*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetBlendState = SetBlendState;
198*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetDepthStencilState = SetDepthStencilState;
199*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetRasterizerState = SetRasterizerState;
200*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnQueryEnd = QueryEnd;
201*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnQueryBegin = QueryBegin;
202*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceCopyRegion = ResourceCopyRegion;
203*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceUpdateSubresourceUP = ResourceUpdateSubResourceUP;
204*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSoSetTargets = SoSetTargets;
205*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDrawAuto = DrawAuto;
206*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetViewports = SetViewports;
207*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetScissorRects = SetScissorRects;
208*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnClearRenderTargetView = ClearRenderTargetView;
209*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnClearDepthStencilView = ClearDepthStencilView;
210*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetPredication = SetPredication;
211*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnQueryGetData = QueryGetData;
212*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnFlush = Flush;
213*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnGenMips = GenMips;
214*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceCopy = ResourceCopy;
215*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceResolveSubresource = ResourceResolveSubResource;
216*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceMap = ResourceMap;
217*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceUnmap = ResourceUnmap;
218*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnResourceIsStagingBusy = ResourceIsStagingBusy;
219*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnRelocateDeviceFuncs = RelocateDeviceFuncs;
220*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateResourceSize = CalcPrivateResourceSize;
221*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateOpenedResourceSize = CalcPrivateOpenedResourceSize;
222*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateResource = CreateResource;
223*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnOpenResource = OpenResource;
224*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyResource = DestroyResource;
225*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateShaderResourceViewSize = CalcPrivateShaderResourceViewSize;
226*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateShaderResourceView = CreateShaderResourceView;
227*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyShaderResourceView = DestroyShaderResourceView;
228*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateRenderTargetViewSize = CalcPrivateRenderTargetViewSize;
229*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateRenderTargetView = CreateRenderTargetView;
230*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyRenderTargetView = DestroyRenderTargetView;
231*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateDepthStencilViewSize = CalcPrivateDepthStencilViewSize;
232*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateDepthStencilView = CreateDepthStencilView;
233*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyDepthStencilView = DestroyDepthStencilView;
234*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateElementLayoutSize = CalcPrivateElementLayoutSize;
235*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateElementLayout = CreateElementLayout;
236*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyElementLayout = DestroyElementLayout;
237*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateBlendStateSize = CalcPrivateBlendStateSize;
238*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateBlendState = CreateBlendState;
239*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyBlendState = DestroyBlendState;
240*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateDepthStencilStateSize = CalcPrivateDepthStencilStateSize;
241*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateDepthStencilState = CreateDepthStencilState;
242*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyDepthStencilState = DestroyDepthStencilState;
243*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateRasterizerStateSize = CalcPrivateRasterizerStateSize;
244*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateRasterizerState = CreateRasterizerState;
245*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyRasterizerState = DestroyRasterizerState;
246*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateShaderSize = CalcPrivateShaderSize;
247*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateVertexShader = CreateVertexShader;
248*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateGeometryShader = CreateGeometryShader;
249*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreatePixelShader = CreatePixelShader;
250*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateGeometryShaderWithStreamOutput = CalcPrivateGeometryShaderWithStreamOutput;
251*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateGeometryShaderWithStreamOutput = CreateGeometryShaderWithStreamOutput;
252*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyShader = DestroyShader;
253*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateSamplerSize = CalcPrivateSamplerSize;
254*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateSampler = CreateSampler;
255*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroySampler = DestroySampler;
256*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCalcPrivateQuerySize = CalcPrivateQuerySize;
257*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCreateQuery = CreateQuery;
258*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyQuery = DestroyQuery;
259*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCheckFormatSupport = CheckFormatSupport;
260*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCheckMultisampleQualityLevels = CheckMultisampleQualityLevels;
261*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCheckCounterInfo = CheckCounterInfo;
262*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnCheckCounter = CheckCounter;
263*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnDestroyDevice = DestroyDevice;
264*61046927SAndroid Build Coastguard Worker pDeviceFuncs->pfnSetTextFilterSize = SetTextFilterSize;
265*61046927SAndroid Build Coastguard Worker if (pCreateData->Interface == D3D10_1_DDI_INTERFACE_VERSION ||
266*61046927SAndroid Build Coastguard Worker pCreateData->Interface == D3D10_1_x_DDI_INTERFACE_VERSION ||
267*61046927SAndroid Build Coastguard Worker pCreateData->Interface == D3D10_1_7_DDI_INTERFACE_VERSION) {
268*61046927SAndroid Build Coastguard Worker D3D10_1DDI_DEVICEFUNCS *p10_1DeviceFuncs = pCreateData->p10_1DeviceFuncs;
269*61046927SAndroid Build Coastguard Worker p10_1DeviceFuncs->pfnRelocateDeviceFuncs = RelocateDeviceFuncs1;
270*61046927SAndroid Build Coastguard Worker p10_1DeviceFuncs->pfnCalcPrivateShaderResourceViewSize = CalcPrivateShaderResourceViewSize1;
271*61046927SAndroid Build Coastguard Worker p10_1DeviceFuncs->pfnCreateShaderResourceView = CreateShaderResourceView1;
272*61046927SAndroid Build Coastguard Worker p10_1DeviceFuncs->pfnCalcPrivateBlendStateSize = CalcPrivateBlendStateSize1;
273*61046927SAndroid Build Coastguard Worker p10_1DeviceFuncs->pfnCreateBlendState = CreateBlendState1;
274*61046927SAndroid Build Coastguard Worker p10_1DeviceFuncs->pfnResourceConvert = ResourceCopy;
275*61046927SAndroid Build Coastguard Worker p10_1DeviceFuncs->pfnResourceConvertRegion = ResourceCopyRegion;
276*61046927SAndroid Build Coastguard Worker }
277*61046927SAndroid Build Coastguard Worker
278*61046927SAndroid Build Coastguard Worker /*
279*61046927SAndroid Build Coastguard Worker * Fill in DXGI DDI functions
280*61046927SAndroid Build Coastguard Worker */
281*61046927SAndroid Build Coastguard Worker pCreateData->DXGIBaseDDI.pDXGIDDIBaseFunctions->pfnPresent =
282*61046927SAndroid Build Coastguard Worker _Present;
283*61046927SAndroid Build Coastguard Worker pCreateData->DXGIBaseDDI.pDXGIDDIBaseFunctions->pfnGetGammaCaps =
284*61046927SAndroid Build Coastguard Worker _GetGammaCaps;
285*61046927SAndroid Build Coastguard Worker pCreateData->DXGIBaseDDI.pDXGIDDIBaseFunctions->pfnSetDisplayMode =
286*61046927SAndroid Build Coastguard Worker _SetDisplayMode;
287*61046927SAndroid Build Coastguard Worker pCreateData->DXGIBaseDDI.pDXGIDDIBaseFunctions->pfnSetResourcePriority =
288*61046927SAndroid Build Coastguard Worker _SetResourcePriority;
289*61046927SAndroid Build Coastguard Worker pCreateData->DXGIBaseDDI.pDXGIDDIBaseFunctions->pfnQueryResourceResidency =
290*61046927SAndroid Build Coastguard Worker _QueryResourceResidency;
291*61046927SAndroid Build Coastguard Worker pCreateData->DXGIBaseDDI.pDXGIDDIBaseFunctions->pfnRotateResourceIdentities =
292*61046927SAndroid Build Coastguard Worker _RotateResourceIdentities;
293*61046927SAndroid Build Coastguard Worker pCreateData->DXGIBaseDDI.pDXGIDDIBaseFunctions->pfnBlt =
294*61046927SAndroid Build Coastguard Worker _Blt;
295*61046927SAndroid Build Coastguard Worker
296*61046927SAndroid Build Coastguard Worker if (0) {
297*61046927SAndroid Build Coastguard Worker return S_OK;
298*61046927SAndroid Build Coastguard Worker } else {
299*61046927SAndroid Build Coastguard Worker // Tell DXGI to not use the shared resource presentation path when
300*61046927SAndroid Build Coastguard Worker // communicating with DWM:
301*61046927SAndroid Build Coastguard Worker // http://msdn.microsoft.com/en-us/library/windows/hardware/ff569887(v=vs.85).aspx
302*61046927SAndroid Build Coastguard Worker return DXGI_STATUS_NO_REDIRECTION;
303*61046927SAndroid Build Coastguard Worker }
304*61046927SAndroid Build Coastguard Worker }
305*61046927SAndroid Build Coastguard Worker
306*61046927SAndroid Build Coastguard Worker
307*61046927SAndroid Build Coastguard Worker /*
308*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
309*61046927SAndroid Build Coastguard Worker *
310*61046927SAndroid Build Coastguard Worker * DestroyDevice --
311*61046927SAndroid Build Coastguard Worker *
312*61046927SAndroid Build Coastguard Worker * The DestroyDevice function destroys a graphics context.
313*61046927SAndroid Build Coastguard Worker *
314*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
315*61046927SAndroid Build Coastguard Worker */
316*61046927SAndroid Build Coastguard Worker
317*61046927SAndroid Build Coastguard Worker void APIENTRY
DestroyDevice(D3D10DDI_HDEVICE hDevice)318*61046927SAndroid Build Coastguard Worker DestroyDevice(D3D10DDI_HDEVICE hDevice) // IN
319*61046927SAndroid Build Coastguard Worker {
320*61046927SAndroid Build Coastguard Worker unsigned i;
321*61046927SAndroid Build Coastguard Worker
322*61046927SAndroid Build Coastguard Worker LOG_ENTRYPOINT();
323*61046927SAndroid Build Coastguard Worker
324*61046927SAndroid Build Coastguard Worker Device *pDevice = CastDevice(hDevice);
325*61046927SAndroid Build Coastguard Worker struct pipe_context *pipe = pDevice->pipe;
326*61046927SAndroid Build Coastguard Worker
327*61046927SAndroid Build Coastguard Worker pipe->flush(pipe, NULL, 0);
328*61046927SAndroid Build Coastguard Worker
329*61046927SAndroid Build Coastguard Worker for (i = 0; i < PIPE_MAX_SO_BUFFERS; ++i) {
330*61046927SAndroid Build Coastguard Worker pipe_so_target_reference(&pDevice->so_targets[i], NULL);
331*61046927SAndroid Build Coastguard Worker }
332*61046927SAndroid Build Coastguard Worker if (pDevice->draw_so_target) {
333*61046927SAndroid Build Coastguard Worker pipe_so_target_reference(&pDevice->draw_so_target, NULL);
334*61046927SAndroid Build Coastguard Worker }
335*61046927SAndroid Build Coastguard Worker
336*61046927SAndroid Build Coastguard Worker pipe->bind_fs_state(pipe, NULL);
337*61046927SAndroid Build Coastguard Worker pipe->bind_vs_state(pipe, NULL);
338*61046927SAndroid Build Coastguard Worker cso_destroy_context(pDevice->cso);
339*61046927SAndroid Build Coastguard Worker
340*61046927SAndroid Build Coastguard Worker DeleteEmptyShader(pDevice, PIPE_SHADER_FRAGMENT, pDevice->empty_fs);
341*61046927SAndroid Build Coastguard Worker DeleteEmptyShader(pDevice, PIPE_SHADER_VERTEX, pDevice->empty_vs);
342*61046927SAndroid Build Coastguard Worker
343*61046927SAndroid Build Coastguard Worker pipe_surface_reference(&pDevice->fb.zsbuf, NULL);
344*61046927SAndroid Build Coastguard Worker for (i = 0; i < PIPE_MAX_COLOR_BUFS; ++i) {
345*61046927SAndroid Build Coastguard Worker pipe_surface_reference(&pDevice->fb.cbufs[i], NULL);
346*61046927SAndroid Build Coastguard Worker }
347*61046927SAndroid Build Coastguard Worker
348*61046927SAndroid Build Coastguard Worker for (i = 0; i < PIPE_MAX_ATTRIBS; ++i) {
349*61046927SAndroid Build Coastguard Worker if (!pDevice->vertex_buffers[i].is_user_buffer) {
350*61046927SAndroid Build Coastguard Worker pipe_resource_reference(&pDevice->vertex_buffers[i].buffer.resource, NULL);
351*61046927SAndroid Build Coastguard Worker }
352*61046927SAndroid Build Coastguard Worker }
353*61046927SAndroid Build Coastguard Worker
354*61046927SAndroid Build Coastguard Worker pipe_resource_reference(&pDevice->index_buffer, NULL);
355*61046927SAndroid Build Coastguard Worker
356*61046927SAndroid Build Coastguard Worker static struct pipe_sampler_view * sampler_views[PIPE_MAX_SHADER_SAMPLER_VIEWS];
357*61046927SAndroid Build Coastguard Worker memset(sampler_views, 0, sizeof sampler_views);
358*61046927SAndroid Build Coastguard Worker pipe->set_sampler_views(pipe, PIPE_SHADER_FRAGMENT, 0,
359*61046927SAndroid Build Coastguard Worker PIPE_MAX_SHADER_SAMPLER_VIEWS, 0, false, sampler_views);
360*61046927SAndroid Build Coastguard Worker pipe->set_sampler_views(pipe, PIPE_SHADER_VERTEX, 0,
361*61046927SAndroid Build Coastguard Worker PIPE_MAX_SHADER_SAMPLER_VIEWS, 0, false, sampler_views);
362*61046927SAndroid Build Coastguard Worker pipe->set_sampler_views(pipe, PIPE_SHADER_GEOMETRY, 0,
363*61046927SAndroid Build Coastguard Worker PIPE_MAX_SHADER_SAMPLER_VIEWS, 0, false, sampler_views);
364*61046927SAndroid Build Coastguard Worker
365*61046927SAndroid Build Coastguard Worker pipe->destroy(pipe);
366*61046927SAndroid Build Coastguard Worker }
367*61046927SAndroid Build Coastguard Worker
368*61046927SAndroid Build Coastguard Worker
369*61046927SAndroid Build Coastguard Worker /*
370*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
371*61046927SAndroid Build Coastguard Worker *
372*61046927SAndroid Build Coastguard Worker * RelocateDeviceFuncs --
373*61046927SAndroid Build Coastguard Worker *
374*61046927SAndroid Build Coastguard Worker * The RelocateDeviceFuncs function notifies the user-mode
375*61046927SAndroid Build Coastguard Worker * display driver about the new location of the driver function table.
376*61046927SAndroid Build Coastguard Worker *
377*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
378*61046927SAndroid Build Coastguard Worker */
379*61046927SAndroid Build Coastguard Worker
380*61046927SAndroid Build Coastguard Worker void APIENTRY
RelocateDeviceFuncs(D3D10DDI_HDEVICE hDevice,__in struct D3D10DDI_DEVICEFUNCS * pDeviceFunctions)381*61046927SAndroid Build Coastguard Worker RelocateDeviceFuncs(D3D10DDI_HDEVICE hDevice, // IN
382*61046927SAndroid Build Coastguard Worker __in struct D3D10DDI_DEVICEFUNCS *pDeviceFunctions) // IN
383*61046927SAndroid Build Coastguard Worker {
384*61046927SAndroid Build Coastguard Worker LOG_ENTRYPOINT();
385*61046927SAndroid Build Coastguard Worker
386*61046927SAndroid Build Coastguard Worker /*
387*61046927SAndroid Build Coastguard Worker * Nothing to do as we don't store a pointer to this entity.
388*61046927SAndroid Build Coastguard Worker */
389*61046927SAndroid Build Coastguard Worker }
390*61046927SAndroid Build Coastguard Worker
391*61046927SAndroid Build Coastguard Worker
392*61046927SAndroid Build Coastguard Worker /*
393*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
394*61046927SAndroid Build Coastguard Worker *
395*61046927SAndroid Build Coastguard Worker * RelocateDeviceFuncs1 --
396*61046927SAndroid Build Coastguard Worker *
397*61046927SAndroid Build Coastguard Worker * The RelocateDeviceFuncs function notifies the user-mode
398*61046927SAndroid Build Coastguard Worker * display driver about the new location of the driver function table.
399*61046927SAndroid Build Coastguard Worker *
400*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
401*61046927SAndroid Build Coastguard Worker */
402*61046927SAndroid Build Coastguard Worker
403*61046927SAndroid Build Coastguard Worker void APIENTRY
RelocateDeviceFuncs1(D3D10DDI_HDEVICE hDevice,__in struct D3D10_1DDI_DEVICEFUNCS * pDeviceFunctions)404*61046927SAndroid Build Coastguard Worker RelocateDeviceFuncs1(D3D10DDI_HDEVICE hDevice, // IN
405*61046927SAndroid Build Coastguard Worker __in struct D3D10_1DDI_DEVICEFUNCS *pDeviceFunctions) // IN
406*61046927SAndroid Build Coastguard Worker {
407*61046927SAndroid Build Coastguard Worker LOG_ENTRYPOINT();
408*61046927SAndroid Build Coastguard Worker
409*61046927SAndroid Build Coastguard Worker /*
410*61046927SAndroid Build Coastguard Worker * Nothing to do as we don't store a pointer to this entity.
411*61046927SAndroid Build Coastguard Worker */
412*61046927SAndroid Build Coastguard Worker }
413*61046927SAndroid Build Coastguard Worker
414*61046927SAndroid Build Coastguard Worker
415*61046927SAndroid Build Coastguard Worker /*
416*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
417*61046927SAndroid Build Coastguard Worker *
418*61046927SAndroid Build Coastguard Worker * Flush --
419*61046927SAndroid Build Coastguard Worker *
420*61046927SAndroid Build Coastguard Worker * The Flush function submits outstanding hardware commands that
421*61046927SAndroid Build Coastguard Worker * are in the hardware command buffer to the display miniport driver.
422*61046927SAndroid Build Coastguard Worker *
423*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
424*61046927SAndroid Build Coastguard Worker */
425*61046927SAndroid Build Coastguard Worker
426*61046927SAndroid Build Coastguard Worker void APIENTRY
Flush(D3D10DDI_HDEVICE hDevice)427*61046927SAndroid Build Coastguard Worker Flush(D3D10DDI_HDEVICE hDevice) // IN
428*61046927SAndroid Build Coastguard Worker {
429*61046927SAndroid Build Coastguard Worker LOG_ENTRYPOINT();
430*61046927SAndroid Build Coastguard Worker
431*61046927SAndroid Build Coastguard Worker struct pipe_context *pipe = CastPipeContext(hDevice);
432*61046927SAndroid Build Coastguard Worker
433*61046927SAndroid Build Coastguard Worker pipe->flush(pipe, NULL, 0);
434*61046927SAndroid Build Coastguard Worker }
435*61046927SAndroid Build Coastguard Worker
436*61046927SAndroid Build Coastguard Worker
437*61046927SAndroid Build Coastguard Worker /*
438*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
439*61046927SAndroid Build Coastguard Worker *
440*61046927SAndroid Build Coastguard Worker * CheckFormatSupport --
441*61046927SAndroid Build Coastguard Worker *
442*61046927SAndroid Build Coastguard Worker * The CheckFormatSupport function retrieves the capabilites that
443*61046927SAndroid Build Coastguard Worker * the device has with the specified format.
444*61046927SAndroid Build Coastguard Worker *
445*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
446*61046927SAndroid Build Coastguard Worker */
447*61046927SAndroid Build Coastguard Worker
448*61046927SAndroid Build Coastguard Worker void APIENTRY
CheckFormatSupport(D3D10DDI_HDEVICE hDevice,DXGI_FORMAT Format,__out UINT * pFormatCaps)449*61046927SAndroid Build Coastguard Worker CheckFormatSupport(D3D10DDI_HDEVICE hDevice, // IN
450*61046927SAndroid Build Coastguard Worker DXGI_FORMAT Format, // IN
451*61046927SAndroid Build Coastguard Worker __out UINT *pFormatCaps) // OUT
452*61046927SAndroid Build Coastguard Worker {
453*61046927SAndroid Build Coastguard Worker //LOG_ENTRYPOINT();
454*61046927SAndroid Build Coastguard Worker
455*61046927SAndroid Build Coastguard Worker struct pipe_context *pipe = CastPipeContext(hDevice);
456*61046927SAndroid Build Coastguard Worker struct pipe_screen *screen = pipe->screen;
457*61046927SAndroid Build Coastguard Worker
458*61046927SAndroid Build Coastguard Worker *pFormatCaps = 0;
459*61046927SAndroid Build Coastguard Worker
460*61046927SAndroid Build Coastguard Worker enum pipe_format format = FormatTranslate(Format, false);
461*61046927SAndroid Build Coastguard Worker if (format == PIPE_FORMAT_NONE) {
462*61046927SAndroid Build Coastguard Worker *pFormatCaps = D3D10_DDI_FORMAT_SUPPORT_NOT_SUPPORTED;
463*61046927SAndroid Build Coastguard Worker return;
464*61046927SAndroid Build Coastguard Worker }
465*61046927SAndroid Build Coastguard Worker
466*61046927SAndroid Build Coastguard Worker if (Format == DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM) {
467*61046927SAndroid Build Coastguard Worker /*
468*61046927SAndroid Build Coastguard Worker * We only need to support creation.
469*61046927SAndroid Build Coastguard Worker * http://msdn.microsoft.com/en-us/library/windows/hardware/ff552818.aspx
470*61046927SAndroid Build Coastguard Worker */
471*61046927SAndroid Build Coastguard Worker return;
472*61046927SAndroid Build Coastguard Worker }
473*61046927SAndroid Build Coastguard Worker
474*61046927SAndroid Build Coastguard Worker if (screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, 0,
475*61046927SAndroid Build Coastguard Worker PIPE_BIND_RENDER_TARGET)) {
476*61046927SAndroid Build Coastguard Worker *pFormatCaps |= D3D10_DDI_FORMAT_SUPPORT_RENDERTARGET;
477*61046927SAndroid Build Coastguard Worker *pFormatCaps |= D3D10_DDI_FORMAT_SUPPORT_BLENDABLE;
478*61046927SAndroid Build Coastguard Worker
479*61046927SAndroid Build Coastguard Worker #if SUPPORT_MSAA
480*61046927SAndroid Build Coastguard Worker if (screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 4, 4,
481*61046927SAndroid Build Coastguard Worker PIPE_BIND_RENDER_TARGET)) {
482*61046927SAndroid Build Coastguard Worker *pFormatCaps |= D3D10_DDI_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET;
483*61046927SAndroid Build Coastguard Worker }
484*61046927SAndroid Build Coastguard Worker #endif
485*61046927SAndroid Build Coastguard Worker }
486*61046927SAndroid Build Coastguard Worker
487*61046927SAndroid Build Coastguard Worker if (screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, 0,
488*61046927SAndroid Build Coastguard Worker PIPE_BIND_SAMPLER_VIEW)) {
489*61046927SAndroid Build Coastguard Worker *pFormatCaps |= D3D10_DDI_FORMAT_SUPPORT_SHADER_SAMPLE;
490*61046927SAndroid Build Coastguard Worker
491*61046927SAndroid Build Coastguard Worker #if SUPPORT_MSAA
492*61046927SAndroid Build Coastguard Worker if (screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 4, 4,
493*61046927SAndroid Build Coastguard Worker PIPE_BIND_RENDER_TARGET)) {
494*61046927SAndroid Build Coastguard Worker *pFormatCaps |= D3D10_DDI_FORMAT_SUPPORT_MULTISAMPLE_LOAD;
495*61046927SAndroid Build Coastguard Worker }
496*61046927SAndroid Build Coastguard Worker #endif
497*61046927SAndroid Build Coastguard Worker }
498*61046927SAndroid Build Coastguard Worker }
499*61046927SAndroid Build Coastguard Worker
500*61046927SAndroid Build Coastguard Worker
501*61046927SAndroid Build Coastguard Worker /*
502*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
503*61046927SAndroid Build Coastguard Worker *
504*61046927SAndroid Build Coastguard Worker * CheckMultisampleQualityLevels --
505*61046927SAndroid Build Coastguard Worker *
506*61046927SAndroid Build Coastguard Worker * The CheckMultisampleQualityLevels function retrieves the number
507*61046927SAndroid Build Coastguard Worker * of quality levels that the device supports for the specified
508*61046927SAndroid Build Coastguard Worker * number of samples.
509*61046927SAndroid Build Coastguard Worker *
510*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
511*61046927SAndroid Build Coastguard Worker */
512*61046927SAndroid Build Coastguard Worker
513*61046927SAndroid Build Coastguard Worker void APIENTRY
CheckMultisampleQualityLevels(D3D10DDI_HDEVICE hDevice,DXGI_FORMAT Format,UINT SampleCount,__out UINT * pNumQualityLevels)514*61046927SAndroid Build Coastguard Worker CheckMultisampleQualityLevels(D3D10DDI_HDEVICE hDevice, // IN
515*61046927SAndroid Build Coastguard Worker DXGI_FORMAT Format, // IN
516*61046927SAndroid Build Coastguard Worker UINT SampleCount, // IN
517*61046927SAndroid Build Coastguard Worker __out UINT *pNumQualityLevels) // OUT
518*61046927SAndroid Build Coastguard Worker {
519*61046927SAndroid Build Coastguard Worker //LOG_ENTRYPOINT();
520*61046927SAndroid Build Coastguard Worker
521*61046927SAndroid Build Coastguard Worker /* XXX: Disable MSAA */
522*61046927SAndroid Build Coastguard Worker *pNumQualityLevels = 0;
523*61046927SAndroid Build Coastguard Worker }
524*61046927SAndroid Build Coastguard Worker
525*61046927SAndroid Build Coastguard Worker
526*61046927SAndroid Build Coastguard Worker /*
527*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
528*61046927SAndroid Build Coastguard Worker *
529*61046927SAndroid Build Coastguard Worker * SetTextFilterSize --
530*61046927SAndroid Build Coastguard Worker *
531*61046927SAndroid Build Coastguard Worker * The SetTextFilterSize function sets the width and height
532*61046927SAndroid Build Coastguard Worker * of the monochrome convolution filter.
533*61046927SAndroid Build Coastguard Worker *
534*61046927SAndroid Build Coastguard Worker * ----------------------------------------------------------------------
535*61046927SAndroid Build Coastguard Worker */
536*61046927SAndroid Build Coastguard Worker
537*61046927SAndroid Build Coastguard Worker void APIENTRY
SetTextFilterSize(D3D10DDI_HDEVICE hDevice,UINT Width,UINT Height)538*61046927SAndroid Build Coastguard Worker SetTextFilterSize(D3D10DDI_HDEVICE hDevice, // IN
539*61046927SAndroid Build Coastguard Worker UINT Width, // IN
540*61046927SAndroid Build Coastguard Worker UINT Height) // IN
541*61046927SAndroid Build Coastguard Worker {
542*61046927SAndroid Build Coastguard Worker LOG_ENTRYPOINT();
543*61046927SAndroid Build Coastguard Worker
544*61046927SAndroid Build Coastguard Worker LOG_UNSUPPORTED(Width != 1 || Height != 1);
545*61046927SAndroid Build Coastguard Worker }
546