1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker * Copyright 2011 Joakim Sindholt <[email protected]>
3*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker */
5*61046927SAndroid Build Coastguard Worker
6*61046927SAndroid Build Coastguard Worker #include "device9.h"
7*61046927SAndroid Build Coastguard Worker #include "volumetexture9.h"
8*61046927SAndroid Build Coastguard Worker #include "nine_helpers.h"
9*61046927SAndroid Build Coastguard Worker #include "nine_pipe.h"
10*61046927SAndroid Build Coastguard Worker
11*61046927SAndroid Build Coastguard Worker #define DBG_CHANNEL DBG_VOLUMETEXTURE
12*61046927SAndroid Build Coastguard Worker
13*61046927SAndroid Build Coastguard Worker static HRESULT
NineVolumeTexture9_ctor(struct NineVolumeTexture9 * This,struct NineUnknownParams * pParams,UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,HANDLE * pSharedHandle)14*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_ctor( struct NineVolumeTexture9 *This,
15*61046927SAndroid Build Coastguard Worker struct NineUnknownParams *pParams,
16*61046927SAndroid Build Coastguard Worker UINT Width, UINT Height, UINT Depth, UINT Levels,
17*61046927SAndroid Build Coastguard Worker DWORD Usage,
18*61046927SAndroid Build Coastguard Worker D3DFORMAT Format,
19*61046927SAndroid Build Coastguard Worker D3DPOOL Pool,
20*61046927SAndroid Build Coastguard Worker HANDLE *pSharedHandle )
21*61046927SAndroid Build Coastguard Worker {
22*61046927SAndroid Build Coastguard Worker struct pipe_resource *info = &This->base.base.info;
23*61046927SAndroid Build Coastguard Worker struct pipe_screen *screen = pParams->device->screen;
24*61046927SAndroid Build Coastguard Worker enum pipe_format pf;
25*61046927SAndroid Build Coastguard Worker unsigned l;
26*61046927SAndroid Build Coastguard Worker D3DVOLUME_DESC voldesc;
27*61046927SAndroid Build Coastguard Worker HRESULT hr;
28*61046927SAndroid Build Coastguard Worker
29*61046927SAndroid Build Coastguard Worker DBG("This=%p pParams=%p Width=%u Height=%u Depth=%u Levels=%u "
30*61046927SAndroid Build Coastguard Worker "Usage=%d Format=%d Pool=%d pSharedHandle=%p\n",
31*61046927SAndroid Build Coastguard Worker This, pParams, Width, Height, Depth, Levels,
32*61046927SAndroid Build Coastguard Worker Usage, Format, Pool, pSharedHandle);
33*61046927SAndroid Build Coastguard Worker
34*61046927SAndroid Build Coastguard Worker user_assert(Width && Height && Depth, D3DERR_INVALIDCALL);
35*61046927SAndroid Build Coastguard Worker
36*61046927SAndroid Build Coastguard Worker /* user_assert(!pSharedHandle || Pool == D3DPOOL_DEFAULT, D3DERR_INVALIDCALL); */
37*61046927SAndroid Build Coastguard Worker user_assert(!pSharedHandle, D3DERR_INVALIDCALL); /* TODO */
38*61046927SAndroid Build Coastguard Worker
39*61046927SAndroid Build Coastguard Worker /* An IDirect3DVolume9 cannot be bound as a render target can it ? */
40*61046927SAndroid Build Coastguard Worker user_assert(!(Usage & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL)),
41*61046927SAndroid Build Coastguard Worker D3DERR_INVALIDCALL);
42*61046927SAndroid Build Coastguard Worker user_assert(!(Usage & D3DUSAGE_AUTOGENMIPMAP), D3DERR_INVALIDCALL);
43*61046927SAndroid Build Coastguard Worker
44*61046927SAndroid Build Coastguard Worker pf = d3d9_to_pipe_format_checked(screen, Format, PIPE_TEXTURE_3D, 0,
45*61046927SAndroid Build Coastguard Worker PIPE_BIND_SAMPLER_VIEW, false,
46*61046927SAndroid Build Coastguard Worker Pool == D3DPOOL_SCRATCH);
47*61046927SAndroid Build Coastguard Worker
48*61046927SAndroid Build Coastguard Worker if (pf == PIPE_FORMAT_NONE)
49*61046927SAndroid Build Coastguard Worker return D3DERR_INVALIDCALL;
50*61046927SAndroid Build Coastguard Worker
51*61046927SAndroid Build Coastguard Worker /* We support ATI1 and ATI2 hacks only for 2D and Cube textures */
52*61046927SAndroid Build Coastguard Worker if (Format == D3DFMT_ATI1 || Format == D3DFMT_ATI2)
53*61046927SAndroid Build Coastguard Worker return D3DERR_INVALIDCALL;
54*61046927SAndroid Build Coastguard Worker
55*61046927SAndroid Build Coastguard Worker if (compressed_format(Format)) {
56*61046927SAndroid Build Coastguard Worker const unsigned w = util_format_get_blockwidth(pf);
57*61046927SAndroid Build Coastguard Worker const unsigned h = util_format_get_blockheight(pf);
58*61046927SAndroid Build Coastguard Worker /* Compressed formats are not compressed on depth component */
59*61046927SAndroid Build Coastguard Worker user_assert(!(Width % w) && !(Height % h), D3DERR_INVALIDCALL);
60*61046927SAndroid Build Coastguard Worker }
61*61046927SAndroid Build Coastguard Worker
62*61046927SAndroid Build Coastguard Worker info->screen = pParams->device->screen;
63*61046927SAndroid Build Coastguard Worker info->target = PIPE_TEXTURE_3D;
64*61046927SAndroid Build Coastguard Worker info->format = pf;
65*61046927SAndroid Build Coastguard Worker info->width0 = Width;
66*61046927SAndroid Build Coastguard Worker info->height0 = Height;
67*61046927SAndroid Build Coastguard Worker info->depth0 = Depth;
68*61046927SAndroid Build Coastguard Worker if (Levels)
69*61046927SAndroid Build Coastguard Worker info->last_level = Levels - 1;
70*61046927SAndroid Build Coastguard Worker else
71*61046927SAndroid Build Coastguard Worker info->last_level = util_logbase2(MAX2(MAX2(Width, Height), Depth));
72*61046927SAndroid Build Coastguard Worker info->array_size = 1;
73*61046927SAndroid Build Coastguard Worker info->nr_samples = 0;
74*61046927SAndroid Build Coastguard Worker info->nr_storage_samples = 0;
75*61046927SAndroid Build Coastguard Worker info->bind = PIPE_BIND_SAMPLER_VIEW;
76*61046927SAndroid Build Coastguard Worker info->usage = PIPE_USAGE_DEFAULT;
77*61046927SAndroid Build Coastguard Worker info->flags = 0;
78*61046927SAndroid Build Coastguard Worker
79*61046927SAndroid Build Coastguard Worker if (Usage & D3DUSAGE_DYNAMIC) {
80*61046927SAndroid Build Coastguard Worker info->usage = PIPE_USAGE_DYNAMIC;
81*61046927SAndroid Build Coastguard Worker }
82*61046927SAndroid Build Coastguard Worker if (Usage & D3DUSAGE_SOFTWAREPROCESSING)
83*61046927SAndroid Build Coastguard Worker DBG("Application asked for Software Vertex Processing, "
84*61046927SAndroid Build Coastguard Worker "but this is unimplemented\n");
85*61046927SAndroid Build Coastguard Worker
86*61046927SAndroid Build Coastguard Worker This->base.pstype = 3;
87*61046927SAndroid Build Coastguard Worker
88*61046927SAndroid Build Coastguard Worker hr = NineBaseTexture9_ctor(&This->base, pParams, NULL,
89*61046927SAndroid Build Coastguard Worker D3DRTYPE_VOLUMETEXTURE, Format, Pool, Usage);
90*61046927SAndroid Build Coastguard Worker if (FAILED(hr))
91*61046927SAndroid Build Coastguard Worker return hr;
92*61046927SAndroid Build Coastguard Worker
93*61046927SAndroid Build Coastguard Worker This->volumes = CALLOC(This->base.level_count, sizeof(*This->volumes));
94*61046927SAndroid Build Coastguard Worker if (!This->volumes)
95*61046927SAndroid Build Coastguard Worker return E_OUTOFMEMORY;
96*61046927SAndroid Build Coastguard Worker
97*61046927SAndroid Build Coastguard Worker voldesc.Format = Format;
98*61046927SAndroid Build Coastguard Worker voldesc.Type = D3DRTYPE_VOLUME;
99*61046927SAndroid Build Coastguard Worker voldesc.Usage = Usage;
100*61046927SAndroid Build Coastguard Worker voldesc.Pool = Pool;
101*61046927SAndroid Build Coastguard Worker for (l = 0; l < This->base.level_count; ++l) {
102*61046927SAndroid Build Coastguard Worker voldesc.Width = u_minify(Width, l);
103*61046927SAndroid Build Coastguard Worker voldesc.Height = u_minify(Height, l);
104*61046927SAndroid Build Coastguard Worker voldesc.Depth = u_minify(Depth, l);
105*61046927SAndroid Build Coastguard Worker
106*61046927SAndroid Build Coastguard Worker hr = NineVolume9_new(This->base.base.base.device, NineUnknown(This),
107*61046927SAndroid Build Coastguard Worker This->base.base.resource, l,
108*61046927SAndroid Build Coastguard Worker &voldesc, &This->volumes[l]);
109*61046927SAndroid Build Coastguard Worker if (FAILED(hr))
110*61046927SAndroid Build Coastguard Worker return hr;
111*61046927SAndroid Build Coastguard Worker }
112*61046927SAndroid Build Coastguard Worker
113*61046927SAndroid Build Coastguard Worker /* Textures start initially dirty */
114*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_AddDirtyBox(This, NULL);
115*61046927SAndroid Build Coastguard Worker
116*61046927SAndroid Build Coastguard Worker return D3D_OK;
117*61046927SAndroid Build Coastguard Worker }
118*61046927SAndroid Build Coastguard Worker
119*61046927SAndroid Build Coastguard Worker static void
NineVolumeTexture9_dtor(struct NineVolumeTexture9 * This)120*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_dtor( struct NineVolumeTexture9 *This )
121*61046927SAndroid Build Coastguard Worker {
122*61046927SAndroid Build Coastguard Worker unsigned l;
123*61046927SAndroid Build Coastguard Worker
124*61046927SAndroid Build Coastguard Worker DBG("This=%p\n", This);
125*61046927SAndroid Build Coastguard Worker
126*61046927SAndroid Build Coastguard Worker if (This->volumes) {
127*61046927SAndroid Build Coastguard Worker for (l = 0; l < This->base.level_count; ++l)
128*61046927SAndroid Build Coastguard Worker if (This->volumes[l])
129*61046927SAndroid Build Coastguard Worker NineUnknown_Destroy(&This->volumes[l]->base);
130*61046927SAndroid Build Coastguard Worker FREE(This->volumes);
131*61046927SAndroid Build Coastguard Worker }
132*61046927SAndroid Build Coastguard Worker
133*61046927SAndroid Build Coastguard Worker NineBaseTexture9_dtor(&This->base);
134*61046927SAndroid Build Coastguard Worker }
135*61046927SAndroid Build Coastguard Worker
136*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineVolumeTexture9_GetLevelDesc(struct NineVolumeTexture9 * This,UINT Level,D3DVOLUME_DESC * pDesc)137*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_GetLevelDesc( struct NineVolumeTexture9 *This,
138*61046927SAndroid Build Coastguard Worker UINT Level,
139*61046927SAndroid Build Coastguard Worker D3DVOLUME_DESC *pDesc )
140*61046927SAndroid Build Coastguard Worker {
141*61046927SAndroid Build Coastguard Worker user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
142*61046927SAndroid Build Coastguard Worker
143*61046927SAndroid Build Coastguard Worker *pDesc = This->volumes[Level]->desc;
144*61046927SAndroid Build Coastguard Worker
145*61046927SAndroid Build Coastguard Worker return D3D_OK;
146*61046927SAndroid Build Coastguard Worker }
147*61046927SAndroid Build Coastguard Worker
148*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineVolumeTexture9_GetVolumeLevel(struct NineVolumeTexture9 * This,UINT Level,IDirect3DVolume9 ** ppVolumeLevel)149*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_GetVolumeLevel( struct NineVolumeTexture9 *This,
150*61046927SAndroid Build Coastguard Worker UINT Level,
151*61046927SAndroid Build Coastguard Worker IDirect3DVolume9 **ppVolumeLevel )
152*61046927SAndroid Build Coastguard Worker {
153*61046927SAndroid Build Coastguard Worker user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
154*61046927SAndroid Build Coastguard Worker
155*61046927SAndroid Build Coastguard Worker NineUnknown_AddRef(NineUnknown(This->volumes[Level]));
156*61046927SAndroid Build Coastguard Worker *ppVolumeLevel = (IDirect3DVolume9 *)This->volumes[Level];
157*61046927SAndroid Build Coastguard Worker
158*61046927SAndroid Build Coastguard Worker return D3D_OK;
159*61046927SAndroid Build Coastguard Worker }
160*61046927SAndroid Build Coastguard Worker
161*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineVolumeTexture9_LockBox(struct NineVolumeTexture9 * This,UINT Level,D3DLOCKED_BOX * pLockedVolume,const D3DBOX * pBox,DWORD Flags)162*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_LockBox( struct NineVolumeTexture9 *This,
163*61046927SAndroid Build Coastguard Worker UINT Level,
164*61046927SAndroid Build Coastguard Worker D3DLOCKED_BOX *pLockedVolume,
165*61046927SAndroid Build Coastguard Worker const D3DBOX *pBox,
166*61046927SAndroid Build Coastguard Worker DWORD Flags )
167*61046927SAndroid Build Coastguard Worker {
168*61046927SAndroid Build Coastguard Worker DBG("This=%p Level=%u pLockedVolume=%p pBox=%p Flags=%d\n",
169*61046927SAndroid Build Coastguard Worker This, Level, pLockedVolume, pBox, Flags);
170*61046927SAndroid Build Coastguard Worker
171*61046927SAndroid Build Coastguard Worker user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
172*61046927SAndroid Build Coastguard Worker
173*61046927SAndroid Build Coastguard Worker return NineVolume9_LockBox(This->volumes[Level], pLockedVolume, pBox,
174*61046927SAndroid Build Coastguard Worker Flags);
175*61046927SAndroid Build Coastguard Worker }
176*61046927SAndroid Build Coastguard Worker
177*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineVolumeTexture9_UnlockBox(struct NineVolumeTexture9 * This,UINT Level)178*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_UnlockBox( struct NineVolumeTexture9 *This,
179*61046927SAndroid Build Coastguard Worker UINT Level )
180*61046927SAndroid Build Coastguard Worker {
181*61046927SAndroid Build Coastguard Worker DBG("This=%p Level=%u\n", This, Level);
182*61046927SAndroid Build Coastguard Worker
183*61046927SAndroid Build Coastguard Worker user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
184*61046927SAndroid Build Coastguard Worker
185*61046927SAndroid Build Coastguard Worker return NineVolume9_UnlockBox(This->volumes[Level]);
186*61046927SAndroid Build Coastguard Worker }
187*61046927SAndroid Build Coastguard Worker
188*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineVolumeTexture9_AddDirtyBox(struct NineVolumeTexture9 * This,const D3DBOX * pDirtyBox)189*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_AddDirtyBox( struct NineVolumeTexture9 *This,
190*61046927SAndroid Build Coastguard Worker const D3DBOX *pDirtyBox )
191*61046927SAndroid Build Coastguard Worker {
192*61046927SAndroid Build Coastguard Worker DBG("This=%p pDirtybox=%p\n", This, pDirtyBox);
193*61046927SAndroid Build Coastguard Worker
194*61046927SAndroid Build Coastguard Worker if (This->base.base.pool == D3DPOOL_DEFAULT) {
195*61046927SAndroid Build Coastguard Worker return D3D_OK;
196*61046927SAndroid Build Coastguard Worker }
197*61046927SAndroid Build Coastguard Worker
198*61046927SAndroid Build Coastguard Worker if (This->base.base.pool == D3DPOOL_MANAGED) {
199*61046927SAndroid Build Coastguard Worker This->base.managed.dirty = true;
200*61046927SAndroid Build Coastguard Worker BASETEX_REGISTER_UPDATE(&This->base);
201*61046927SAndroid Build Coastguard Worker }
202*61046927SAndroid Build Coastguard Worker
203*61046927SAndroid Build Coastguard Worker if (!pDirtyBox) {
204*61046927SAndroid Build Coastguard Worker This->dirty_box.x = 0;
205*61046927SAndroid Build Coastguard Worker This->dirty_box.y = 0;
206*61046927SAndroid Build Coastguard Worker This->dirty_box.z = 0;
207*61046927SAndroid Build Coastguard Worker This->dirty_box.width = This->base.base.info.width0;
208*61046927SAndroid Build Coastguard Worker This->dirty_box.height = This->base.base.info.height0;
209*61046927SAndroid Build Coastguard Worker This->dirty_box.depth = This->base.base.info.depth0;
210*61046927SAndroid Build Coastguard Worker } else {
211*61046927SAndroid Build Coastguard Worker if (This->dirty_box.width == 0) {
212*61046927SAndroid Build Coastguard Worker d3dbox_to_pipe_box(&This->dirty_box, pDirtyBox);
213*61046927SAndroid Build Coastguard Worker } else {
214*61046927SAndroid Build Coastguard Worker struct pipe_box box;
215*61046927SAndroid Build Coastguard Worker d3dbox_to_pipe_box(&box, pDirtyBox);
216*61046927SAndroid Build Coastguard Worker u_box_union_3d(&This->dirty_box, &This->dirty_box, &box);
217*61046927SAndroid Build Coastguard Worker }
218*61046927SAndroid Build Coastguard Worker This->dirty_box.x = MAX2(This->dirty_box.x, 0);
219*61046927SAndroid Build Coastguard Worker This->dirty_box.y = MAX2(This->dirty_box.y, 0);
220*61046927SAndroid Build Coastguard Worker This->dirty_box.z = MAX2(This->dirty_box.z, 0);
221*61046927SAndroid Build Coastguard Worker This->dirty_box.width = MIN2(This->dirty_box.width,
222*61046927SAndroid Build Coastguard Worker This->base.base.info.width0 - This->dirty_box.x);
223*61046927SAndroid Build Coastguard Worker This->dirty_box.height = MIN2(This->dirty_box.height,
224*61046927SAndroid Build Coastguard Worker This->base.base.info.height0 - This->dirty_box.y);
225*61046927SAndroid Build Coastguard Worker This->dirty_box.depth = MIN2(This->dirty_box.depth,
226*61046927SAndroid Build Coastguard Worker This->base.base.info.depth0 - This->dirty_box.z);
227*61046927SAndroid Build Coastguard Worker }
228*61046927SAndroid Build Coastguard Worker return D3D_OK;
229*61046927SAndroid Build Coastguard Worker }
230*61046927SAndroid Build Coastguard Worker
231*61046927SAndroid Build Coastguard Worker IDirect3DVolumeTexture9Vtbl NineVolumeTexture9_vtable = {
232*61046927SAndroid Build Coastguard Worker (void *)NineUnknown_QueryInterface,
233*61046927SAndroid Build Coastguard Worker (void *)NineUnknown_AddRef,
234*61046927SAndroid Build Coastguard Worker (void *)NineUnknown_Release,
235*61046927SAndroid Build Coastguard Worker (void *)NineUnknown_GetDevice, /* actually part of Resource9 iface */
236*61046927SAndroid Build Coastguard Worker (void *)NineUnknown_SetPrivateData,
237*61046927SAndroid Build Coastguard Worker (void *)NineUnknown_GetPrivateData,
238*61046927SAndroid Build Coastguard Worker (void *)NineUnknown_FreePrivateData,
239*61046927SAndroid Build Coastguard Worker (void *)NineResource9_SetPriority,
240*61046927SAndroid Build Coastguard Worker (void *)NineResource9_GetPriority,
241*61046927SAndroid Build Coastguard Worker (void *)NineBaseTexture9_PreLoad,
242*61046927SAndroid Build Coastguard Worker (void *)NineResource9_GetType,
243*61046927SAndroid Build Coastguard Worker (void *)NineBaseTexture9_SetLOD,
244*61046927SAndroid Build Coastguard Worker (void *)NineBaseTexture9_GetLOD,
245*61046927SAndroid Build Coastguard Worker (void *)NineBaseTexture9_GetLevelCount,
246*61046927SAndroid Build Coastguard Worker (void *)NineBaseTexture9_SetAutoGenFilterType,
247*61046927SAndroid Build Coastguard Worker (void *)NineBaseTexture9_GetAutoGenFilterType,
248*61046927SAndroid Build Coastguard Worker (void *)NineBaseTexture9_GenerateMipSubLevels,
249*61046927SAndroid Build Coastguard Worker (void *)NineVolumeTexture9_GetLevelDesc,
250*61046927SAndroid Build Coastguard Worker (void *)NineVolumeTexture9_GetVolumeLevel,
251*61046927SAndroid Build Coastguard Worker (void *)NineVolumeTexture9_LockBox,
252*61046927SAndroid Build Coastguard Worker (void *)NineVolumeTexture9_UnlockBox,
253*61046927SAndroid Build Coastguard Worker (void *)NineVolumeTexture9_AddDirtyBox
254*61046927SAndroid Build Coastguard Worker };
255*61046927SAndroid Build Coastguard Worker
256*61046927SAndroid Build Coastguard Worker static const GUID *NineVolumeTexture9_IIDs[] = {
257*61046927SAndroid Build Coastguard Worker &IID_IDirect3DVolumeTexture9,
258*61046927SAndroid Build Coastguard Worker &IID_IDirect3DBaseTexture9,
259*61046927SAndroid Build Coastguard Worker &IID_IDirect3DResource9,
260*61046927SAndroid Build Coastguard Worker &IID_IUnknown,
261*61046927SAndroid Build Coastguard Worker NULL
262*61046927SAndroid Build Coastguard Worker };
263*61046927SAndroid Build Coastguard Worker
264*61046927SAndroid Build Coastguard Worker HRESULT
NineVolumeTexture9_new(struct NineDevice9 * pDevice,UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,struct NineVolumeTexture9 ** ppOut,HANDLE * pSharedHandle)265*61046927SAndroid Build Coastguard Worker NineVolumeTexture9_new( struct NineDevice9 *pDevice,
266*61046927SAndroid Build Coastguard Worker UINT Width, UINT Height, UINT Depth, UINT Levels,
267*61046927SAndroid Build Coastguard Worker DWORD Usage,
268*61046927SAndroid Build Coastguard Worker D3DFORMAT Format,
269*61046927SAndroid Build Coastguard Worker D3DPOOL Pool,
270*61046927SAndroid Build Coastguard Worker struct NineVolumeTexture9 **ppOut,
271*61046927SAndroid Build Coastguard Worker HANDLE *pSharedHandle )
272*61046927SAndroid Build Coastguard Worker {
273*61046927SAndroid Build Coastguard Worker NINE_DEVICE_CHILD_NEW(VolumeTexture9, ppOut, pDevice,
274*61046927SAndroid Build Coastguard Worker Width, Height, Depth, Levels,
275*61046927SAndroid Build Coastguard Worker Usage, Format, Pool, pSharedHandle);
276*61046927SAndroid Build Coastguard Worker }
277*61046927SAndroid Build Coastguard Worker
278