xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/nine/volume9.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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