1*d83cc019SAndroid Build Coastguard Worker #ifndef GEN4_RENDER_H 2*d83cc019SAndroid Build Coastguard Worker #define GEN4_RENDER_H 3*d83cc019SAndroid Build Coastguard Worker 4*d83cc019SAndroid Build Coastguard Worker #include <stdint.h> 5*d83cc019SAndroid Build Coastguard Worker 6*d83cc019SAndroid Build Coastguard Worker #define GEN4_3D(Pipeline, Opcode, Subopcode) ((3 << 29) | \ 7*d83cc019SAndroid Build Coastguard Worker ((Pipeline) << 27) | \ 8*d83cc019SAndroid Build Coastguard Worker ((Opcode) << 24) | \ 9*d83cc019SAndroid Build Coastguard Worker ((Subopcode) << 16)) 10*d83cc019SAndroid Build Coastguard Worker 11*d83cc019SAndroid Build Coastguard Worker #define GEN4_URB_FENCE GEN4_3D(0, 0, 0) 12*d83cc019SAndroid Build Coastguard Worker # define UF0_CS_REALLOC (1 << 13) 13*d83cc019SAndroid Build Coastguard Worker # define UF0_VFE_REALLOC (1 << 12) 14*d83cc019SAndroid Build Coastguard Worker # define UF0_SF_REALLOC (1 << 11) 15*d83cc019SAndroid Build Coastguard Worker # define UF0_CLIP_REALLOC (1 << 10) 16*d83cc019SAndroid Build Coastguard Worker # define UF0_GS_REALLOC (1 << 9) 17*d83cc019SAndroid Build Coastguard Worker # define UF0_VS_REALLOC (1 << 8) 18*d83cc019SAndroid Build Coastguard Worker # define UF1_CLIP_FENCE_SHIFT 20 19*d83cc019SAndroid Build Coastguard Worker # define UF1_GS_FENCE_SHIFT 10 20*d83cc019SAndroid Build Coastguard Worker # define UF1_VS_FENCE_SHIFT 0 21*d83cc019SAndroid Build Coastguard Worker # define UF2_CS_FENCE_SHIFT 20 22*d83cc019SAndroid Build Coastguard Worker # define UF2_VFE_FENCE_SHIFT 10 23*d83cc019SAndroid Build Coastguard Worker # define UF2_SF_FENCE_SHIFT 0 24*d83cc019SAndroid Build Coastguard Worker 25*d83cc019SAndroid Build Coastguard Worker #define GEN4_CS_URB_STATE GEN4_3D(0, 0, 1) 26*d83cc019SAndroid Build Coastguard Worker 27*d83cc019SAndroid Build Coastguard Worker #define GEN4_STATE_BASE_ADDRESS GEN4_3D(0, 1, 1) 28*d83cc019SAndroid Build Coastguard Worker # define BASE_ADDRESS_MODIFY (1 << 0) 29*d83cc019SAndroid Build Coastguard Worker 30*d83cc019SAndroid Build Coastguard Worker #define GEN4_STATE_SIP GEN4_3D(0, 1, 2) 31*d83cc019SAndroid Build Coastguard Worker 32*d83cc019SAndroid Build Coastguard Worker #define GEN4_PIPELINE_SELECT GEN4_3D(0, 1, 4) 33*d83cc019SAndroid Build Coastguard Worker #define G4X_PIPELINE_SELECT GEN4_3D(1, 1, 4) 34*d83cc019SAndroid Build Coastguard Worker # define PIPELINE_SELECT_3D 0 35*d83cc019SAndroid Build Coastguard Worker # define PIPELINE_SELECT_MEDIA 1 36*d83cc019SAndroid Build Coastguard Worker 37*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_PIPELINED_POINTERS GEN4_3D(3, 0, 0) 38*d83cc019SAndroid Build Coastguard Worker # define GEN4_GS_DISABLE 0 39*d83cc019SAndroid Build Coastguard Worker # define GEN4_GS_ENABLE 1 40*d83cc019SAndroid Build Coastguard Worker # define GEN4_CLIP_DISABLE 0 41*d83cc019SAndroid Build Coastguard Worker # define GEN4_CLIP_ENABLE 1 42*d83cc019SAndroid Build Coastguard Worker 43*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_BINDING_TABLE_POINTERS GEN4_3D(3, 0, 1) 44*d83cc019SAndroid Build Coastguard Worker 45*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_VERTEX_BUFFERS GEN4_3D(3, 0, 8) 46*d83cc019SAndroid Build Coastguard Worker # define GEN4_VB0_BUFFER_INDEX_SHIFT 27 47*d83cc019SAndroid Build Coastguard Worker # define GEN4_VB0_VERTEXDATA (0 << 26) 48*d83cc019SAndroid Build Coastguard Worker # define GEN4_VB0_INSTANCEDATA (1 << 26) 49*d83cc019SAndroid Build Coastguard Worker # define VB0_BUFFER_PITCH_SHIFT 0 50*d83cc019SAndroid Build Coastguard Worker 51*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_VERTEX_ELEMENTS GEN4_3D(3, 0, 9) 52*d83cc019SAndroid Build Coastguard Worker # define GEN4_VE0_VERTEX_BUFFER_INDEX_SHIFT 27 53*d83cc019SAndroid Build Coastguard Worker # define GEN4_VE0_VALID (1 << 26) 54*d83cc019SAndroid Build Coastguard Worker # define VE0_FORMAT_SHIFT 16 55*d83cc019SAndroid Build Coastguard Worker # define VE0_OFFSET_SHIFT 0 56*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_0_SHIFT 28 57*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_1_SHIFT 24 58*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_2_SHIFT 20 59*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_3_SHIFT 16 60*d83cc019SAndroid Build Coastguard Worker # define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT 0 61*d83cc019SAndroid Build Coastguard Worker 62*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_NOSTORE 0 63*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_SRC 1 64*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_0 2 65*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_1_FLT 3 66*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_1_INT 4 67*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_VID 5 68*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_IID 6 69*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_PID 7 70*d83cc019SAndroid Build Coastguard Worker 71*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_DRAWING_RECTANGLE GEN4_3D(3, 1, 0) 72*d83cc019SAndroid Build Coastguard Worker 73*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_DEPTH_BUFFER GEN4_3D(3, 1, 5) 74*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT 29 75*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT 18 76*d83cc019SAndroid Build Coastguard Worker 77*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0 78*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D32_FLOAT 1 79*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D24_UNORM_S8_UINT 2 80*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D24_UNORM_X8_UINT 3 81*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D16_UNORM 5 82*d83cc019SAndroid Build Coastguard Worker 83*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_CLEAR_PARAMS GEN4_3D(3, 1, 0x10) 84*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DSTATE_DEPTH_CLEAR_VALID (1 << 15) 85*d83cc019SAndroid Build Coastguard Worker 86*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DPRIMITIVE GEN4_3D(3, 3, 0) 87*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15) 88*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DPRIMITIVE_VERTEX_RANDOM (1 << 15) 89*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DPRIMITIVE_TOPOLOGY_SHIFT 10 90*d83cc019SAndroid Build Coastguard Worker 91*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_POINTLIST 0x01 92*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINELIST 0x02 93*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP 0x03 94*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRILIST 0x04 95*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRISTRIP 0x05 96*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRIFAN 0x06 97*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_QUADLIST 0x07 98*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_QUADSTRIP 0x08 99*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINELIST_ADJ 0x09 100*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_ADJ 0x0A 101*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRILIST_ADJ 0x0B 102*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRISTRIP_ADJ 0x0C 103*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRISTRIP_REVERSE 0x0D 104*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_POLYGON 0x0E 105*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_RECTLIST 0x0F 106*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINELOOP 0x10 107*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_POINTLIST_BF 0x11 108*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_CONT 0x12 109*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_BF 0x13 110*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_CONT_BF 0x14 111*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRIFAN_NOSTIPPLE 0x15 112*d83cc019SAndroid Build Coastguard Worker 113*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_BOTH 0 114*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_NONE 1 115*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_FRONT 2 116*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_BACK 3 117*d83cc019SAndroid Build Coastguard Worker 118*d83cc019SAndroid Build Coastguard Worker #define GEN4_BORDER_COLOR_MODE_DEFAULT 0 119*d83cc019SAndroid Build Coastguard Worker #define GEN4_BORDER_COLOR_MODE_LEGACY 1 120*d83cc019SAndroid Build Coastguard Worker 121*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_NEAREST 0 122*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_LINEAR 1 123*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_ANISOTROPIC 2 124*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_MONO 6 125*d83cc019SAndroid Build Coastguard Worker 126*d83cc019SAndroid Build Coastguard Worker #define GEN4_MIPFILTER_NONE 0 127*d83cc019SAndroid Build Coastguard Worker #define GEN4_MIPFILTER_NEAREST 1 128*d83cc019SAndroid Build Coastguard Worker #define GEN4_MIPFILTER_LINEAR 3 129*d83cc019SAndroid Build Coastguard Worker 130*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_ALWAYS 0 131*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_NEVER 1 132*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_LESS 2 133*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_EQUAL 3 134*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_LEQUAL 4 135*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_GREATER 5 136*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_NOTEQUAL 6 137*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_GEQUAL 7 138*d83cc019SAndroid Build Coastguard Worker 139*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_WRAP 0 140*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_MIRROR 1 141*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_CLAMP 2 142*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_CUBE 3 143*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_CLAMP_BORDER 4 144*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_MIRROR_ONCE 5 145*d83cc019SAndroid Build Coastguard Worker 146*d83cc019SAndroid Build Coastguard Worker #define GEN4_LOD_PRECLAMP_D3D 0 147*d83cc019SAndroid Build Coastguard Worker #define GEN4_LOD_PRECLAMP_OGL 1 148*d83cc019SAndroid Build Coastguard Worker 149*d83cc019SAndroid Build Coastguard Worker /* The hardware supports two different modes for border color. The 150*d83cc019SAndroid Build Coastguard Worker * default (OpenGL) mode uses floating-point color channels, while the 151*d83cc019SAndroid Build Coastguard Worker * legacy mode uses 4 bytes. 152*d83cc019SAndroid Build Coastguard Worker * 153*d83cc019SAndroid Build Coastguard Worker * More significantly, the legacy mode respects the components of the 154*d83cc019SAndroid Build Coastguard Worker * border color for channels not present in the source, (whereas the 155*d83cc019SAndroid Build Coastguard Worker * default mode will ignore the border color's alpha channel and use 156*d83cc019SAndroid Build Coastguard Worker * alpha==1 for an RGB source, for example). 157*d83cc019SAndroid Build Coastguard Worker * 158*d83cc019SAndroid Build Coastguard Worker * The legacy mode matches the semantics specified by the Render 159*d83cc019SAndroid Build Coastguard Worker * extension. 160*d83cc019SAndroid Build Coastguard Worker */ 161*d83cc019SAndroid Build Coastguard Worker struct gen4_sampler_default_border_color { 162*d83cc019SAndroid Build Coastguard Worker float color[4]; 163*d83cc019SAndroid Build Coastguard Worker }; 164*d83cc019SAndroid Build Coastguard Worker 165*d83cc019SAndroid Build Coastguard Worker struct gen4_sampler_legacy_border_color { 166*d83cc019SAndroid Build Coastguard Worker uint8_t color[4]; 167*d83cc019SAndroid Build Coastguard Worker }; 168*d83cc019SAndroid Build Coastguard Worker 169*d83cc019SAndroid Build Coastguard Worker struct gen4_sampler_state { 170*d83cc019SAndroid Build Coastguard Worker struct { 171*d83cc019SAndroid Build Coastguard Worker uint32_t shadow_function:3; 172*d83cc019SAndroid Build Coastguard Worker uint32_t lod_bias:11; 173*d83cc019SAndroid Build Coastguard Worker uint32_t min_filter:3; 174*d83cc019SAndroid Build Coastguard Worker uint32_t mag_filter:3; 175*d83cc019SAndroid Build Coastguard Worker uint32_t mip_filter:2; 176*d83cc019SAndroid Build Coastguard Worker uint32_t base_level:5; 177*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:1; 178*d83cc019SAndroid Build Coastguard Worker uint32_t lod_preclamp:1; 179*d83cc019SAndroid Build Coastguard Worker uint32_t border_color_mode:1; 180*d83cc019SAndroid Build Coastguard Worker uint32_t pad1:1; 181*d83cc019SAndroid Build Coastguard Worker uint32_t disable:1; 182*d83cc019SAndroid Build Coastguard Worker } ss0; 183*d83cc019SAndroid Build Coastguard Worker 184*d83cc019SAndroid Build Coastguard Worker struct { 185*d83cc019SAndroid Build Coastguard Worker uint32_t r_wrap_mode:3; 186*d83cc019SAndroid Build Coastguard Worker uint32_t t_wrap_mode:3; 187*d83cc019SAndroid Build Coastguard Worker uint32_t s_wrap_mode:3; 188*d83cc019SAndroid Build Coastguard Worker uint32_t cube_ctlr_mode:1; 189*d83cc019SAndroid Build Coastguard Worker uint32_t pad:2; 190*d83cc019SAndroid Build Coastguard Worker uint32_t max_lod:10; 191*d83cc019SAndroid Build Coastguard Worker uint32_t min_lod:10; 192*d83cc019SAndroid Build Coastguard Worker } ss1; 193*d83cc019SAndroid Build Coastguard Worker 194*d83cc019SAndroid Build Coastguard Worker struct { 195*d83cc019SAndroid Build Coastguard Worker uint32_t pad:5; 196*d83cc019SAndroid Build Coastguard Worker uint32_t border_color_pointer:27; 197*d83cc019SAndroid Build Coastguard Worker } ss2; 198*d83cc019SAndroid Build Coastguard Worker 199*d83cc019SAndroid Build Coastguard Worker struct { 200*d83cc019SAndroid Build Coastguard Worker uint32_t pad:13; 201*d83cc019SAndroid Build Coastguard Worker uint32_t address_rounding_enable:6; 202*d83cc019SAndroid Build Coastguard Worker uint32_t max_aniso:3; 203*d83cc019SAndroid Build Coastguard Worker uint32_t chroma_key_mode:1; 204*d83cc019SAndroid Build Coastguard Worker uint32_t chroma_key_index:2; 205*d83cc019SAndroid Build Coastguard Worker uint32_t chroma_key_enable:1; 206*d83cc019SAndroid Build Coastguard Worker uint32_t monochrome_filter_width:3; 207*d83cc019SAndroid Build Coastguard Worker uint32_t monochrome_filter_height:3; 208*d83cc019SAndroid Build Coastguard Worker } ss3; 209*d83cc019SAndroid Build Coastguard Worker }; 210*d83cc019SAndroid Build Coastguard Worker 211*d83cc019SAndroid Build Coastguard Worker typedef enum { 212*d83cc019SAndroid Build Coastguard Worker SAMPLER_FILTER_NEAREST = 0, 213*d83cc019SAndroid Build Coastguard Worker SAMPLER_FILTER_BILINEAR, 214*d83cc019SAndroid Build Coastguard Worker FILTER_COUNT 215*d83cc019SAndroid Build Coastguard Worker } sampler_filter_t; 216*d83cc019SAndroid Build Coastguard Worker 217*d83cc019SAndroid Build Coastguard Worker typedef enum { 218*d83cc019SAndroid Build Coastguard Worker SAMPLER_EXTEND_NONE = 0, 219*d83cc019SAndroid Build Coastguard Worker SAMPLER_EXTEND_REPEAT, 220*d83cc019SAndroid Build Coastguard Worker SAMPLER_EXTEND_PAD, 221*d83cc019SAndroid Build Coastguard Worker SAMPLER_EXTEND_REFLECT, 222*d83cc019SAndroid Build Coastguard Worker EXTEND_COUNT 223*d83cc019SAndroid Build Coastguard Worker } sampler_extend_t; 224*d83cc019SAndroid Build Coastguard Worker 225*d83cc019SAndroid Build Coastguard Worker struct gen4_surface_state { 226*d83cc019SAndroid Build Coastguard Worker struct { 227*d83cc019SAndroid Build Coastguard Worker unsigned int cube_pos_z:1; 228*d83cc019SAndroid Build Coastguard Worker unsigned int cube_neg_z:1; 229*d83cc019SAndroid Build Coastguard Worker unsigned int cube_pos_y:1; 230*d83cc019SAndroid Build Coastguard Worker unsigned int cube_neg_y:1; 231*d83cc019SAndroid Build Coastguard Worker unsigned int cube_pos_x:1; 232*d83cc019SAndroid Build Coastguard Worker unsigned int cube_neg_x:1; 233*d83cc019SAndroid Build Coastguard Worker unsigned int media_boundary_pixel_mode:2; 234*d83cc019SAndroid Build Coastguard Worker unsigned int render_cache_read_mode:1; 235*d83cc019SAndroid Build Coastguard Worker unsigned int cube_corner_mode:1; 236*d83cc019SAndroid Build Coastguard Worker unsigned int mipmap_layout_mode:1; 237*d83cc019SAndroid Build Coastguard Worker unsigned int vert_line_stride_ofs:1; 238*d83cc019SAndroid Build Coastguard Worker unsigned int vert_line_stride:1; 239*d83cc019SAndroid Build Coastguard Worker unsigned int color_blend:1; 240*d83cc019SAndroid Build Coastguard Worker unsigned int writedisable_blue:1; 241*d83cc019SAndroid Build Coastguard Worker unsigned int writedisable_green:1; 242*d83cc019SAndroid Build Coastguard Worker unsigned int writedisable_red:1; 243*d83cc019SAndroid Build Coastguard Worker unsigned int writedisable_alpha:1; 244*d83cc019SAndroid Build Coastguard Worker unsigned int surface_format:9; 245*d83cc019SAndroid Build Coastguard Worker unsigned int data_return_format:1; 246*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 247*d83cc019SAndroid Build Coastguard Worker unsigned int surface_type:3; 248*d83cc019SAndroid Build Coastguard Worker } ss0; 249*d83cc019SAndroid Build Coastguard Worker 250*d83cc019SAndroid Build Coastguard Worker struct { 251*d83cc019SAndroid Build Coastguard Worker unsigned int base_addr; 252*d83cc019SAndroid Build Coastguard Worker } ss1; 253*d83cc019SAndroid Build Coastguard Worker 254*d83cc019SAndroid Build Coastguard Worker struct { 255*d83cc019SAndroid Build Coastguard Worker unsigned int render_target_rotation:2; 256*d83cc019SAndroid Build Coastguard Worker unsigned int mip_count:4; 257*d83cc019SAndroid Build Coastguard Worker unsigned int width:13; 258*d83cc019SAndroid Build Coastguard Worker unsigned int height:13; 259*d83cc019SAndroid Build Coastguard Worker } ss2; 260*d83cc019SAndroid Build Coastguard Worker 261*d83cc019SAndroid Build Coastguard Worker struct { 262*d83cc019SAndroid Build Coastguard Worker unsigned int tile_walk:1; 263*d83cc019SAndroid Build Coastguard Worker unsigned int tiled_surface:1; 264*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 265*d83cc019SAndroid Build Coastguard Worker unsigned int pitch:17; 266*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:1; 267*d83cc019SAndroid Build Coastguard Worker unsigned int depth:11; 268*d83cc019SAndroid Build Coastguard Worker } ss3; 269*d83cc019SAndroid Build Coastguard Worker 270*d83cc019SAndroid Build Coastguard Worker struct { 271*d83cc019SAndroid Build Coastguard Worker unsigned int pad:8; 272*d83cc019SAndroid Build Coastguard Worker unsigned int render_target_view_extent:9; 273*d83cc019SAndroid Build Coastguard Worker unsigned int min_array_elt:11; 274*d83cc019SAndroid Build Coastguard Worker unsigned int min_lod:4; 275*d83cc019SAndroid Build Coastguard Worker } ss4; 276*d83cc019SAndroid Build Coastguard Worker 277*d83cc019SAndroid Build Coastguard Worker struct { 278*d83cc019SAndroid Build Coastguard Worker unsigned int pad:20; 279*d83cc019SAndroid Build Coastguard Worker unsigned int y_offset:4; 280*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:1; 281*d83cc019SAndroid Build Coastguard Worker unsigned int x_offset:7; 282*d83cc019SAndroid Build Coastguard Worker } ss5; 283*d83cc019SAndroid Build Coastguard Worker }; 284*d83cc019SAndroid Build Coastguard Worker 285*d83cc019SAndroid Build Coastguard Worker struct gen4_cc_viewport { 286*d83cc019SAndroid Build Coastguard Worker float min_depth; 287*d83cc019SAndroid Build Coastguard Worker float max_depth; 288*d83cc019SAndroid Build Coastguard Worker }; 289*d83cc019SAndroid Build Coastguard Worker 290*d83cc019SAndroid Build Coastguard Worker struct gen4_vs_state { 291*d83cc019SAndroid Build Coastguard Worker struct { 292*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 293*d83cc019SAndroid Build Coastguard Worker unsigned int grf_reg_count:3; 294*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:2; 295*d83cc019SAndroid Build Coastguard Worker unsigned int kernel_start_pointer:26; 296*d83cc019SAndroid Build Coastguard Worker } vs0; 297*d83cc019SAndroid Build Coastguard Worker 298*d83cc019SAndroid Build Coastguard Worker struct { 299*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:7; 300*d83cc019SAndroid Build Coastguard Worker unsigned int sw_exception_enable:1; 301*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:3; 302*d83cc019SAndroid Build Coastguard Worker unsigned int mask_stack_exception_enable:1; 303*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 304*d83cc019SAndroid Build Coastguard Worker unsigned int illegal_op_exception_enable:1; 305*d83cc019SAndroid Build Coastguard Worker unsigned int pad3:2; 306*d83cc019SAndroid Build Coastguard Worker unsigned int floating_point_mode:1; 307*d83cc019SAndroid Build Coastguard Worker unsigned int thread_priority:1; 308*d83cc019SAndroid Build Coastguard Worker unsigned int binding_table_entry_count:8; 309*d83cc019SAndroid Build Coastguard Worker unsigned int pad4:5; 310*d83cc019SAndroid Build Coastguard Worker unsigned int single_program_flow:1; 311*d83cc019SAndroid Build Coastguard Worker } vs1; 312*d83cc019SAndroid Build Coastguard Worker 313*d83cc019SAndroid Build Coastguard Worker struct { 314*d83cc019SAndroid Build Coastguard Worker unsigned int per_thread_scratch_space:4; 315*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:6; 316*d83cc019SAndroid Build Coastguard Worker unsigned int scratch_space_pointer:22; 317*d83cc019SAndroid Build Coastguard Worker } vs2; 318*d83cc019SAndroid Build Coastguard Worker 319*d83cc019SAndroid Build Coastguard Worker struct { 320*d83cc019SAndroid Build Coastguard Worker unsigned int dispatch_grf_start_reg:4; 321*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_read_offset:6; 322*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 323*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_read_length:6; 324*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:1; 325*d83cc019SAndroid Build Coastguard Worker unsigned int const_urb_entry_read_offset:6; 326*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 327*d83cc019SAndroid Build Coastguard Worker unsigned int const_urb_entry_read_length:6; 328*d83cc019SAndroid Build Coastguard Worker unsigned int pad3:1; 329*d83cc019SAndroid Build Coastguard Worker } vs3; 330*d83cc019SAndroid Build Coastguard Worker 331*d83cc019SAndroid Build Coastguard Worker struct { 332*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:10; 333*d83cc019SAndroid Build Coastguard Worker unsigned int stats_enable:1; 334*d83cc019SAndroid Build Coastguard Worker unsigned int nr_urb_entries:7; 335*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:1; 336*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_allocation_size:5; 337*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 338*d83cc019SAndroid Build Coastguard Worker unsigned int max_threads:6; 339*d83cc019SAndroid Build Coastguard Worker unsigned int pad3:1; 340*d83cc019SAndroid Build Coastguard Worker } vs4; 341*d83cc019SAndroid Build Coastguard Worker 342*d83cc019SAndroid Build Coastguard Worker struct { 343*d83cc019SAndroid Build Coastguard Worker unsigned int sampler_count:3; 344*d83cc019SAndroid Build Coastguard Worker unsigned int pad:2; 345*d83cc019SAndroid Build Coastguard Worker unsigned int sampler_state_pointer:27; 346*d83cc019SAndroid Build Coastguard Worker } vs5; 347*d83cc019SAndroid Build Coastguard Worker 348*d83cc019SAndroid Build Coastguard Worker struct { 349*d83cc019SAndroid Build Coastguard Worker unsigned int vs_enable:1; 350*d83cc019SAndroid Build Coastguard Worker unsigned int vert_cache_disable:1; 351*d83cc019SAndroid Build Coastguard Worker unsigned int pad:30; 352*d83cc019SAndroid Build Coastguard Worker } vs6; 353*d83cc019SAndroid Build Coastguard Worker }; 354*d83cc019SAndroid Build Coastguard Worker 355*d83cc019SAndroid Build Coastguard Worker struct gen4_sf_state { 356*d83cc019SAndroid Build Coastguard Worker struct { 357*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 358*d83cc019SAndroid Build Coastguard Worker unsigned int grf_reg_count:3; 359*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:2; 360*d83cc019SAndroid Build Coastguard Worker unsigned int kernel_start_pointer:26; 361*d83cc019SAndroid Build Coastguard Worker } sf0; 362*d83cc019SAndroid Build Coastguard Worker 363*d83cc019SAndroid Build Coastguard Worker struct { 364*d83cc019SAndroid Build Coastguard Worker unsigned int barycentric_interp:1; /* ilk */ 365*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:6; 366*d83cc019SAndroid Build Coastguard Worker unsigned int sw_exception_enable:1; 367*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:3; 368*d83cc019SAndroid Build Coastguard Worker unsigned int mask_stack_exception_enable:1; 369*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 370*d83cc019SAndroid Build Coastguard Worker unsigned int illegal_op_exception_enable:1; 371*d83cc019SAndroid Build Coastguard Worker unsigned int pad3:2; 372*d83cc019SAndroid Build Coastguard Worker unsigned int floating_point_mode:1; 373*d83cc019SAndroid Build Coastguard Worker unsigned int thread_priority:1; 374*d83cc019SAndroid Build Coastguard Worker unsigned int binding_table_entry_count:8; 375*d83cc019SAndroid Build Coastguard Worker unsigned int pad4:6; 376*d83cc019SAndroid Build Coastguard Worker } sf1; 377*d83cc019SAndroid Build Coastguard Worker 378*d83cc019SAndroid Build Coastguard Worker struct { 379*d83cc019SAndroid Build Coastguard Worker unsigned int per_thread_scratch_space:4; 380*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:6; 381*d83cc019SAndroid Build Coastguard Worker unsigned int scratch_space_pointer:22; 382*d83cc019SAndroid Build Coastguard Worker } sf2; 383*d83cc019SAndroid Build Coastguard Worker 384*d83cc019SAndroid Build Coastguard Worker struct { 385*d83cc019SAndroid Build Coastguard Worker unsigned int dispatch_grf_start_reg:4; 386*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_read_offset:6; 387*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 388*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_read_length:7; 389*d83cc019SAndroid Build Coastguard Worker unsigned int const_urb_entry_read_offset:6; 390*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:1; 391*d83cc019SAndroid Build Coastguard Worker unsigned int const_urb_entry_read_length:6; 392*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 393*d83cc019SAndroid Build Coastguard Worker } sf3; 394*d83cc019SAndroid Build Coastguard Worker 395*d83cc019SAndroid Build Coastguard Worker struct { 396*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:10; 397*d83cc019SAndroid Build Coastguard Worker unsigned int stats_enable:1; 398*d83cc019SAndroid Build Coastguard Worker unsigned int nr_urb_entries:8; 399*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_allocation_size:6; 400*d83cc019SAndroid Build Coastguard Worker unsigned int max_threads:6; 401*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 402*d83cc019SAndroid Build Coastguard Worker } sf4; 403*d83cc019SAndroid Build Coastguard Worker 404*d83cc019SAndroid Build Coastguard Worker struct { 405*d83cc019SAndroid Build Coastguard Worker unsigned int front_winding:1; 406*d83cc019SAndroid Build Coastguard Worker unsigned int viewport_transform:1; 407*d83cc019SAndroid Build Coastguard Worker unsigned int pad:3; 408*d83cc019SAndroid Build Coastguard Worker unsigned int sf_viewport_state_offset:27; 409*d83cc019SAndroid Build Coastguard Worker } sf5; 410*d83cc019SAndroid Build Coastguard Worker 411*d83cc019SAndroid Build Coastguard Worker struct { 412*d83cc019SAndroid Build Coastguard Worker unsigned int pad:9; 413*d83cc019SAndroid Build Coastguard Worker unsigned int dest_org_vbias:4; 414*d83cc019SAndroid Build Coastguard Worker unsigned int dest_org_hbias:4; 415*d83cc019SAndroid Build Coastguard Worker unsigned int scissor:1; 416*d83cc019SAndroid Build Coastguard Worker unsigned int disable_2x2_trifilter:1; 417*d83cc019SAndroid Build Coastguard Worker unsigned int disable_zero_trifilter:1; 418*d83cc019SAndroid Build Coastguard Worker unsigned int point_rast_rule:2; 419*d83cc019SAndroid Build Coastguard Worker unsigned int line_endcap_aa_region_width:2; 420*d83cc019SAndroid Build Coastguard Worker unsigned int line_width:4; 421*d83cc019SAndroid Build Coastguard Worker unsigned int fast_scissor_disable:1; 422*d83cc019SAndroid Build Coastguard Worker unsigned int cull_mode:2; 423*d83cc019SAndroid Build Coastguard Worker unsigned int aa_enable:1; 424*d83cc019SAndroid Build Coastguard Worker } sf6; 425*d83cc019SAndroid Build Coastguard Worker 426*d83cc019SAndroid Build Coastguard Worker struct { 427*d83cc019SAndroid Build Coastguard Worker unsigned int point_size:11; 428*d83cc019SAndroid Build Coastguard Worker unsigned int use_point_size_state:1; 429*d83cc019SAndroid Build Coastguard Worker unsigned int subpixel_precision:1; 430*d83cc019SAndroid Build Coastguard Worker unsigned int sprite_point:1; 431*d83cc019SAndroid Build Coastguard Worker unsigned int aa_line_dist_mode:1; 432*d83cc019SAndroid Build Coastguard Worker unsigned int pad:10; 433*d83cc019SAndroid Build Coastguard Worker unsigned int trifan_pv:2; 434*d83cc019SAndroid Build Coastguard Worker unsigned int linestrip_pv:2; 435*d83cc019SAndroid Build Coastguard Worker unsigned int tristrip_pv:2; 436*d83cc019SAndroid Build Coastguard Worker unsigned int line_last_pixel_enable:1; 437*d83cc019SAndroid Build Coastguard Worker } sf7; 438*d83cc019SAndroid Build Coastguard Worker }; 439*d83cc019SAndroid Build Coastguard Worker 440*d83cc019SAndroid Build Coastguard Worker struct gen4_wm_state { 441*d83cc019SAndroid Build Coastguard Worker struct { 442*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 443*d83cc019SAndroid Build Coastguard Worker unsigned int grf_reg_count:3; 444*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:2; 445*d83cc019SAndroid Build Coastguard Worker unsigned int kernel_start_pointer:26; 446*d83cc019SAndroid Build Coastguard Worker } wm0; 447*d83cc019SAndroid Build Coastguard Worker 448*d83cc019SAndroid Build Coastguard Worker struct { 449*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 450*d83cc019SAndroid Build Coastguard Worker unsigned int sw_exception_enable:1; 451*d83cc019SAndroid Build Coastguard Worker unsigned int mask_stack_exception_enable:1; 452*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 453*d83cc019SAndroid Build Coastguard Worker unsigned int illegal_op_exception_enable:1; 454*d83cc019SAndroid Build Coastguard Worker unsigned int pad3:3; 455*d83cc019SAndroid Build Coastguard Worker unsigned int depth_coeff_urb_read_offset:6; 456*d83cc019SAndroid Build Coastguard Worker unsigned int pad4:2; 457*d83cc019SAndroid Build Coastguard Worker unsigned int floating_point_mode:1; 458*d83cc019SAndroid Build Coastguard Worker unsigned int thread_priority:1; 459*d83cc019SAndroid Build Coastguard Worker unsigned int binding_table_entry_count:8; 460*d83cc019SAndroid Build Coastguard Worker unsigned int pad5:5; 461*d83cc019SAndroid Build Coastguard Worker unsigned int single_program_flow:1; 462*d83cc019SAndroid Build Coastguard Worker } wm1; 463*d83cc019SAndroid Build Coastguard Worker 464*d83cc019SAndroid Build Coastguard Worker struct { 465*d83cc019SAndroid Build Coastguard Worker unsigned int per_thread_scratch_space:4; 466*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:6; 467*d83cc019SAndroid Build Coastguard Worker unsigned int scratch_space_pointer:22; 468*d83cc019SAndroid Build Coastguard Worker } wm2; 469*d83cc019SAndroid Build Coastguard Worker 470*d83cc019SAndroid Build Coastguard Worker struct { 471*d83cc019SAndroid Build Coastguard Worker unsigned int dispatch_grf_start_reg:4; 472*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_read_offset:6; 473*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 474*d83cc019SAndroid Build Coastguard Worker unsigned int urb_entry_read_length:7; 475*d83cc019SAndroid Build Coastguard Worker unsigned int const_urb_entry_read_offset:6; 476*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:1; 477*d83cc019SAndroid Build Coastguard Worker unsigned int const_urb_entry_read_length:6; 478*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:1; 479*d83cc019SAndroid Build Coastguard Worker } wm3; 480*d83cc019SAndroid Build Coastguard Worker 481*d83cc019SAndroid Build Coastguard Worker struct { 482*d83cc019SAndroid Build Coastguard Worker unsigned int stats_enable:1; 483*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 484*d83cc019SAndroid Build Coastguard Worker unsigned int sampler_count:3; 485*d83cc019SAndroid Build Coastguard Worker unsigned int sampler_state_pointer:27; 486*d83cc019SAndroid Build Coastguard Worker } wm4; 487*d83cc019SAndroid Build Coastguard Worker 488*d83cc019SAndroid Build Coastguard Worker struct { 489*d83cc019SAndroid Build Coastguard Worker unsigned int enable_8_pix:1; 490*d83cc019SAndroid Build Coastguard Worker unsigned int enable_16_pix:1; 491*d83cc019SAndroid Build Coastguard Worker unsigned int enable_32_pix:1; 492*d83cc019SAndroid Build Coastguard Worker unsigned int enable_cont_32_pix:1; /* ctg+ */ 493*d83cc019SAndroid Build Coastguard Worker unsigned int enable_cont_64_pix:1; /* ctg+ */ 494*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 495*d83cc019SAndroid Build Coastguard Worker unsigned int fast_span_coverage:1; /* ilk */ 496*d83cc019SAndroid Build Coastguard Worker unsigned int depth_clear:1; /* ilk */ 497*d83cc019SAndroid Build Coastguard Worker unsigned int depth_resolve:1; /* ilk */ 498*d83cc019SAndroid Build Coastguard Worker unsigned int hier_depth_resolve:1; /* ilk */ 499*d83cc019SAndroid Build Coastguard Worker unsigned int legacy_global_depth_bias:1; 500*d83cc019SAndroid Build Coastguard Worker unsigned int line_stipple:1; 501*d83cc019SAndroid Build Coastguard Worker unsigned int depth_offset:1; 502*d83cc019SAndroid Build Coastguard Worker unsigned int polygon_stipple:1; 503*d83cc019SAndroid Build Coastguard Worker unsigned int line_aa_region_width:2; 504*d83cc019SAndroid Build Coastguard Worker unsigned int line_endcap_aa_region_width:2; 505*d83cc019SAndroid Build Coastguard Worker unsigned int early_depth_test:1; 506*d83cc019SAndroid Build Coastguard Worker unsigned int thread_dispatch_enable:1; 507*d83cc019SAndroid Build Coastguard Worker unsigned int program_uses_depth:1; 508*d83cc019SAndroid Build Coastguard Worker unsigned int program_computes_dpeth:1; 509*d83cc019SAndroid Build Coastguard Worker unsigned int program_uses_killpixel:1; 510*d83cc019SAndroid Build Coastguard Worker unsigned int legacy_line_rast:1; 511*d83cc019SAndroid Build Coastguard Worker unsigned int transposed_urb_read:1; 512*d83cc019SAndroid Build Coastguard Worker unsigned int max_threads:7; 513*d83cc019SAndroid Build Coastguard Worker } wm5; 514*d83cc019SAndroid Build Coastguard Worker 515*d83cc019SAndroid Build Coastguard Worker struct { 516*d83cc019SAndroid Build Coastguard Worker float global_depth_offset_constant; 517*d83cc019SAndroid Build Coastguard Worker } wm6; 518*d83cc019SAndroid Build Coastguard Worker 519*d83cc019SAndroid Build Coastguard Worker struct { 520*d83cc019SAndroid Build Coastguard Worker float global_depth_offset_scale; 521*d83cc019SAndroid Build Coastguard Worker } wm7; 522*d83cc019SAndroid Build Coastguard Worker 523*d83cc019SAndroid Build Coastguard Worker /* ilk only from now on */ 524*d83cc019SAndroid Build Coastguard Worker struct { 525*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 526*d83cc019SAndroid Build Coastguard Worker unsigned int grf_reg_count_1:3; 527*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:2; 528*d83cc019SAndroid Build Coastguard Worker unsigned int kernel_start_pointer_1:26; 529*d83cc019SAndroid Build Coastguard Worker } wm8; 530*d83cc019SAndroid Build Coastguard Worker 531*d83cc019SAndroid Build Coastguard Worker struct { 532*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 533*d83cc019SAndroid Build Coastguard Worker unsigned int grf_reg_count_2:3; 534*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:2; 535*d83cc019SAndroid Build Coastguard Worker unsigned int kernel_start_pointer_2:26; 536*d83cc019SAndroid Build Coastguard Worker } wm9; 537*d83cc019SAndroid Build Coastguard Worker 538*d83cc019SAndroid Build Coastguard Worker struct { 539*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:1; 540*d83cc019SAndroid Build Coastguard Worker unsigned int grf_reg_count_3:3; 541*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:2; 542*d83cc019SAndroid Build Coastguard Worker unsigned int kernel_start_pointer_3:26; 543*d83cc019SAndroid Build Coastguard Worker } wm10; 544*d83cc019SAndroid Build Coastguard Worker }; 545*d83cc019SAndroid Build Coastguard Worker 546*d83cc019SAndroid Build Coastguard Worker struct gen4_color_calc_state { 547*d83cc019SAndroid Build Coastguard Worker struct { 548*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:3; 549*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_pass_depth_pass_op:3; 550*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_pass_depth_fail_op:3; 551*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_fail_op:3; 552*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_func:3; 553*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_enable:1; 554*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:2; 555*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_write_enable:1; 556*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_pass_depth_pass_op:3; 557*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_pass_depth_fail_op:3; 558*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_fail_op:3; 559*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_func:3; 560*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_enable:1; 561*d83cc019SAndroid Build Coastguard Worker } cc0; 562*d83cc019SAndroid Build Coastguard Worker 563*d83cc019SAndroid Build Coastguard Worker struct { 564*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_ref:8; 565*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_write_mask:8; 566*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_test_mask:8; 567*d83cc019SAndroid Build Coastguard Worker unsigned int stencil_ref:8; 568*d83cc019SAndroid Build Coastguard Worker } cc1; 569*d83cc019SAndroid Build Coastguard Worker 570*d83cc019SAndroid Build Coastguard Worker struct { 571*d83cc019SAndroid Build Coastguard Worker unsigned int logicop_enable:1; 572*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:10; 573*d83cc019SAndroid Build Coastguard Worker unsigned int depth_write_enable:1; 574*d83cc019SAndroid Build Coastguard Worker unsigned int depth_test_function:3; 575*d83cc019SAndroid Build Coastguard Worker unsigned int depth_test:1; 576*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_write_mask:8; 577*d83cc019SAndroid Build Coastguard Worker unsigned int bf_stencil_test_mask:8; 578*d83cc019SAndroid Build Coastguard Worker } cc2; 579*d83cc019SAndroid Build Coastguard Worker 580*d83cc019SAndroid Build Coastguard Worker struct { 581*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:8; 582*d83cc019SAndroid Build Coastguard Worker unsigned int alpha_test_func:3; 583*d83cc019SAndroid Build Coastguard Worker unsigned int alpha_test:1; 584*d83cc019SAndroid Build Coastguard Worker unsigned int blend_enable:1; 585*d83cc019SAndroid Build Coastguard Worker unsigned int ia_blend_enable:1; 586*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:1; 587*d83cc019SAndroid Build Coastguard Worker unsigned int alpha_test_format:1; 588*d83cc019SAndroid Build Coastguard Worker unsigned int pad2:16; 589*d83cc019SAndroid Build Coastguard Worker } cc3; 590*d83cc019SAndroid Build Coastguard Worker 591*d83cc019SAndroid Build Coastguard Worker struct { 592*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:5; 593*d83cc019SAndroid Build Coastguard Worker unsigned int cc_viewport_state_offset:27; 594*d83cc019SAndroid Build Coastguard Worker } cc4; 595*d83cc019SAndroid Build Coastguard Worker 596*d83cc019SAndroid Build Coastguard Worker struct { 597*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:2; 598*d83cc019SAndroid Build Coastguard Worker unsigned int ia_dest_blend_factor:5; 599*d83cc019SAndroid Build Coastguard Worker unsigned int ia_src_blend_factor:5; 600*d83cc019SAndroid Build Coastguard Worker unsigned int ia_blend_function:3; 601*d83cc019SAndroid Build Coastguard Worker unsigned int stats_enable:1; 602*d83cc019SAndroid Build Coastguard Worker unsigned int logicop_func:4; 603*d83cc019SAndroid Build Coastguard Worker unsigned int pad1:10; 604*d83cc019SAndroid Build Coastguard Worker unsigned int round_disable:1; 605*d83cc019SAndroid Build Coastguard Worker unsigned int dither_enable:1; 606*d83cc019SAndroid Build Coastguard Worker } cc5; 607*d83cc019SAndroid Build Coastguard Worker 608*d83cc019SAndroid Build Coastguard Worker struct { 609*d83cc019SAndroid Build Coastguard Worker unsigned int clamp_post_alpha_blend:1; 610*d83cc019SAndroid Build Coastguard Worker unsigned int clamp_pre_alpha_blend:1; 611*d83cc019SAndroid Build Coastguard Worker unsigned int clamp_range:2; 612*d83cc019SAndroid Build Coastguard Worker unsigned int pad0:11; 613*d83cc019SAndroid Build Coastguard Worker unsigned int y_dither_offset:2; 614*d83cc019SAndroid Build Coastguard Worker unsigned int x_dither_offset:2; 615*d83cc019SAndroid Build Coastguard Worker unsigned int dest_blend_factor:5; 616*d83cc019SAndroid Build Coastguard Worker unsigned int src_blend_factor:5; 617*d83cc019SAndroid Build Coastguard Worker unsigned int blend_function:3; 618*d83cc019SAndroid Build Coastguard Worker } cc6; 619*d83cc019SAndroid Build Coastguard Worker 620*d83cc019SAndroid Build Coastguard Worker struct { 621*d83cc019SAndroid Build Coastguard Worker union { 622*d83cc019SAndroid Build Coastguard Worker float f; 623*d83cc019SAndroid Build Coastguard Worker unsigned char ub[4]; 624*d83cc019SAndroid Build Coastguard Worker } alpha_ref; 625*d83cc019SAndroid Build Coastguard Worker } cc7; 626*d83cc019SAndroid Build Coastguard Worker }; 627*d83cc019SAndroid Build Coastguard Worker 628*d83cc019SAndroid Build Coastguard Worker #endif 629