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 #ifndef _NINE_VOLUME9_H_
7*61046927SAndroid Build Coastguard Worker #define _NINE_VOLUME9_H_
8*61046927SAndroid Build Coastguard Worker
9*61046927SAndroid Build Coastguard Worker #include "iunknown.h"
10*61046927SAndroid Build Coastguard Worker
11*61046927SAndroid Build Coastguard Worker #include "pipe/p_state.h"
12*61046927SAndroid Build Coastguard Worker #include "util/u_inlines.h"
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard Worker struct hash_table;
15*61046927SAndroid Build Coastguard Worker
16*61046927SAndroid Build Coastguard Worker struct NineDevice9;
17*61046927SAndroid Build Coastguard Worker
18*61046927SAndroid Build Coastguard Worker struct NineVolume9
19*61046927SAndroid Build Coastguard Worker {
20*61046927SAndroid Build Coastguard Worker struct NineUnknown base;
21*61046927SAndroid Build Coastguard Worker
22*61046927SAndroid Build Coastguard Worker struct pipe_resource *resource;
23*61046927SAndroid Build Coastguard Worker unsigned level;
24*61046927SAndroid Build Coastguard Worker unsigned level_actual;
25*61046927SAndroid Build Coastguard Worker
26*61046927SAndroid Build Coastguard Worker uint8_t *data; /* system memory backing */
27*61046927SAndroid Build Coastguard Worker uint8_t *data_internal; /* for conversions */
28*61046927SAndroid Build Coastguard Worker
29*61046927SAndroid Build Coastguard Worker D3DVOLUME_DESC desc;
30*61046927SAndroid Build Coastguard Worker struct pipe_resource info;
31*61046927SAndroid Build Coastguard Worker enum pipe_format format_internal;
32*61046927SAndroid Build Coastguard Worker unsigned stride;
33*61046927SAndroid Build Coastguard Worker unsigned stride_internal;
34*61046927SAndroid Build Coastguard Worker unsigned layer_stride;
35*61046927SAndroid Build Coastguard Worker unsigned layer_stride_internal;
36*61046927SAndroid Build Coastguard Worker
37*61046927SAndroid Build Coastguard Worker struct pipe_transfer *transfer;
38*61046927SAndroid Build Coastguard Worker unsigned lock_count;
39*61046927SAndroid Build Coastguard Worker
40*61046927SAndroid Build Coastguard Worker unsigned pending_uploads_counter; /* pending uploads */
41*61046927SAndroid Build Coastguard Worker };
42*61046927SAndroid Build Coastguard Worker static inline struct NineVolume9 *
NineVolume9(void * data)43*61046927SAndroid Build Coastguard Worker NineVolume9( void *data )
44*61046927SAndroid Build Coastguard Worker {
45*61046927SAndroid Build Coastguard Worker return (struct NineVolume9 *)data;
46*61046927SAndroid Build Coastguard Worker }
47*61046927SAndroid Build Coastguard Worker
48*61046927SAndroid Build Coastguard Worker HRESULT
49*61046927SAndroid Build Coastguard Worker NineVolume9_new( struct NineDevice9 *pDevice,
50*61046927SAndroid Build Coastguard Worker struct NineUnknown *pContainer,
51*61046927SAndroid Build Coastguard Worker struct pipe_resource *pResource,
52*61046927SAndroid Build Coastguard Worker unsigned Level,
53*61046927SAndroid Build Coastguard Worker D3DVOLUME_DESC *pDesc,
54*61046927SAndroid Build Coastguard Worker struct NineVolume9 **ppOut );
55*61046927SAndroid Build Coastguard Worker
56*61046927SAndroid Build Coastguard Worker /*** Nine private ***/
57*61046927SAndroid Build Coastguard Worker
58*61046927SAndroid Build Coastguard Worker static inline void
NineVolume9_SetResource(struct NineVolume9 * This,struct pipe_resource * resource,unsigned level)59*61046927SAndroid Build Coastguard Worker NineVolume9_SetResource( struct NineVolume9 *This,
60*61046927SAndroid Build Coastguard Worker struct pipe_resource *resource, unsigned level )
61*61046927SAndroid Build Coastguard Worker {
62*61046927SAndroid Build Coastguard Worker This->level = level;
63*61046927SAndroid Build Coastguard Worker pipe_resource_reference(&This->resource, resource);
64*61046927SAndroid Build Coastguard Worker }
65*61046927SAndroid Build Coastguard Worker
66*61046927SAndroid Build Coastguard Worker void
67*61046927SAndroid Build Coastguard Worker NineVolume9_AddDirtyRegion( struct NineVolume9 *This,
68*61046927SAndroid Build Coastguard Worker const struct pipe_box *box );
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard Worker void
71*61046927SAndroid Build Coastguard Worker NineVolume9_CopyMemToDefault( struct NineVolume9 *This,
72*61046927SAndroid Build Coastguard Worker struct NineVolume9 *From,
73*61046927SAndroid Build Coastguard Worker unsigned dstx, unsigned dsty, unsigned dstz,
74*61046927SAndroid Build Coastguard Worker struct pipe_box *pSrcBox );
75*61046927SAndroid Build Coastguard Worker
76*61046927SAndroid Build Coastguard Worker HRESULT
77*61046927SAndroid Build Coastguard Worker NineVolume9_UploadSelf( struct NineVolume9 *This,
78*61046927SAndroid Build Coastguard Worker const struct pipe_box *damaged );
79*61046927SAndroid Build Coastguard Worker
80*61046927SAndroid Build Coastguard Worker
81*61046927SAndroid Build Coastguard Worker /*** Direct3D public ***/
82*61046927SAndroid Build Coastguard Worker
83*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
84*61046927SAndroid Build Coastguard Worker NineVolume9_GetContainer( struct NineVolume9 *This,
85*61046927SAndroid Build Coastguard Worker REFIID riid,
86*61046927SAndroid Build Coastguard Worker void **ppContainer );
87*61046927SAndroid Build Coastguard Worker
88*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
89*61046927SAndroid Build Coastguard Worker NineVolume9_GetDesc( struct NineVolume9 *This,
90*61046927SAndroid Build Coastguard Worker D3DVOLUME_DESC *pDesc );
91*61046927SAndroid Build Coastguard Worker
92*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
93*61046927SAndroid Build Coastguard Worker NineVolume9_LockBox( struct NineVolume9 *This,
94*61046927SAndroid Build Coastguard Worker D3DLOCKED_BOX *pLockedVolume,
95*61046927SAndroid Build Coastguard Worker const D3DBOX *pBox,
96*61046927SAndroid Build Coastguard Worker DWORD Flags );
97*61046927SAndroid Build Coastguard Worker
98*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
99*61046927SAndroid Build Coastguard Worker NineVolume9_UnlockBox( struct NineVolume9 *This );
100*61046927SAndroid Build Coastguard Worker
101*61046927SAndroid Build Coastguard Worker #endif /* _NINE_VOLUME9_H_ */
102