xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/d3d10umd/Device.cpp (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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