1*d83cc019SAndroid Build Coastguard Worker #ifndef GEN8_MEDIA_H 2*d83cc019SAndroid Build Coastguard Worker #define GEN8_MEDIA_H 3*d83cc019SAndroid Build Coastguard Worker 4*d83cc019SAndroid Build Coastguard Worker #include <stdint.h> 5*d83cc019SAndroid Build Coastguard Worker #include "surfaceformat.h" 6*d83cc019SAndroid Build Coastguard Worker 7*d83cc019SAndroid Build Coastguard Worker #define GEN8_FLOATING_POINT_IEEE_754 0 8*d83cc019SAndroid Build Coastguard Worker #define GEN8_FLOATING_POINT_NON_IEEE_754 1 9*d83cc019SAndroid Build Coastguard Worker 10*d83cc019SAndroid Build Coastguard Worker #define GFXPIPE(Pipeline,Opcode,Subopcode) ((3 << 29) | \ 11*d83cc019SAndroid Build Coastguard Worker ((Pipeline) << 27) | \ 12*d83cc019SAndroid Build Coastguard Worker ((Opcode) << 24) | \ 13*d83cc019SAndroid Build Coastguard Worker ((Subopcode) << 16)) 14*d83cc019SAndroid Build Coastguard Worker 15*d83cc019SAndroid Build Coastguard Worker #define GEN8_PIPELINE_SELECT GFXPIPE(1, 1, 4) 16*d83cc019SAndroid Build Coastguard Worker # define PIPELINE_SELECT_3D (0 << 0) 17*d83cc019SAndroid Build Coastguard Worker # define PIPELINE_SELECT_MEDIA (1 << 0) 18*d83cc019SAndroid Build Coastguard Worker 19*d83cc019SAndroid Build Coastguard Worker #define GEN8_STATE_BASE_ADDRESS GFXPIPE(0, 1, 1) 20*d83cc019SAndroid Build Coastguard Worker # define BASE_ADDRESS_MODIFY (1 << 0) 21*d83cc019SAndroid Build Coastguard Worker 22*d83cc019SAndroid Build Coastguard Worker #define GEN8_MEDIA_VFE_STATE GFXPIPE(2, 0, 0) 23*d83cc019SAndroid Build Coastguard Worker #define GEN8_MEDIA_CURBE_LOAD GFXPIPE(2, 0, 1) 24*d83cc019SAndroid Build Coastguard Worker #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD GFXPIPE(2, 0, 2) 25*d83cc019SAndroid Build Coastguard Worker #define GEN8_MEDIA_STATE_FLUSH GFXPIPE(2, 0, 4) 26*d83cc019SAndroid Build Coastguard Worker #define GEN8_MEDIA_OBJECT GFXPIPE(2, 1, 0) 27*d83cc019SAndroid Build Coastguard Worker 28*d83cc019SAndroid Build Coastguard Worker struct gen8_interface_descriptor_data 29*d83cc019SAndroid Build Coastguard Worker { 30*d83cc019SAndroid Build Coastguard Worker struct { 31*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:6; 32*d83cc019SAndroid Build Coastguard Worker uint32_t kernel_start_pointer:26; 33*d83cc019SAndroid Build Coastguard Worker } desc0; 34*d83cc019SAndroid Build Coastguard Worker 35*d83cc019SAndroid Build Coastguard Worker struct { 36*d83cc019SAndroid Build Coastguard Worker uint32_t kernel_start_pointer_high:16; 37*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:16; 38*d83cc019SAndroid Build Coastguard Worker } desc1; 39*d83cc019SAndroid Build Coastguard Worker 40*d83cc019SAndroid Build Coastguard Worker struct { 41*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:7; 42*d83cc019SAndroid Build Coastguard Worker uint32_t software_exception_enable:1; 43*d83cc019SAndroid Build Coastguard Worker uint32_t pad1:3; 44*d83cc019SAndroid Build Coastguard Worker uint32_t maskstack_exception_enable:1; 45*d83cc019SAndroid Build Coastguard Worker uint32_t pad2:1; 46*d83cc019SAndroid Build Coastguard Worker uint32_t illegal_opcode_exception_enable:1; 47*d83cc019SAndroid Build Coastguard Worker uint32_t pad3:2; 48*d83cc019SAndroid Build Coastguard Worker uint32_t floating_point_mode:1; 49*d83cc019SAndroid Build Coastguard Worker uint32_t thread_priority:1; 50*d83cc019SAndroid Build Coastguard Worker uint32_t single_program_flow:1; 51*d83cc019SAndroid Build Coastguard Worker uint32_t denorm_mode:1; 52*d83cc019SAndroid Build Coastguard Worker uint32_t pad4:12; 53*d83cc019SAndroid Build Coastguard Worker } desc2; 54*d83cc019SAndroid Build Coastguard Worker 55*d83cc019SAndroid Build Coastguard Worker struct { 56*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:2; 57*d83cc019SAndroid Build Coastguard Worker uint32_t sampler_count:3; 58*d83cc019SAndroid Build Coastguard Worker uint32_t sampler_state_pointer:27; 59*d83cc019SAndroid Build Coastguard Worker } desc3; 60*d83cc019SAndroid Build Coastguard Worker 61*d83cc019SAndroid Build Coastguard Worker struct { 62*d83cc019SAndroid Build Coastguard Worker uint32_t binding_table_entry_count:5; 63*d83cc019SAndroid Build Coastguard Worker uint32_t binding_table_pointer:11; 64*d83cc019SAndroid Build Coastguard Worker uint32_t pad0: 16; 65*d83cc019SAndroid Build Coastguard Worker } desc4; 66*d83cc019SAndroid Build Coastguard Worker 67*d83cc019SAndroid Build Coastguard Worker struct { 68*d83cc019SAndroid Build Coastguard Worker uint32_t constant_urb_entry_read_offset:16; 69*d83cc019SAndroid Build Coastguard Worker uint32_t constant_urb_entry_read_length:16; 70*d83cc019SAndroid Build Coastguard Worker } desc5; 71*d83cc019SAndroid Build Coastguard Worker 72*d83cc019SAndroid Build Coastguard Worker struct { 73*d83cc019SAndroid Build Coastguard Worker uint32_t num_threads_in_tg:10; 74*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:5; 75*d83cc019SAndroid Build Coastguard Worker uint32_t global_barrier_enable:1; 76*d83cc019SAndroid Build Coastguard Worker uint32_t shared_local_memory_size:5; 77*d83cc019SAndroid Build Coastguard Worker uint32_t barrier_enable:1; 78*d83cc019SAndroid Build Coastguard Worker uint32_t rounding_mode:2; 79*d83cc019SAndroid Build Coastguard Worker uint32_t pad1:8; 80*d83cc019SAndroid Build Coastguard Worker } desc6; 81*d83cc019SAndroid Build Coastguard Worker 82*d83cc019SAndroid Build Coastguard Worker struct { 83*d83cc019SAndroid Build Coastguard Worker uint32_t cross_thread_constant_data_read_length:8; 84*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:24; 85*d83cc019SAndroid Build Coastguard Worker } desc7; 86*d83cc019SAndroid Build Coastguard Worker }; 87*d83cc019SAndroid Build Coastguard Worker 88*d83cc019SAndroid Build Coastguard Worker struct gen8_surface_state 89*d83cc019SAndroid Build Coastguard Worker { 90*d83cc019SAndroid Build Coastguard Worker struct { 91*d83cc019SAndroid Build Coastguard Worker uint32_t cube_pos_z:1; 92*d83cc019SAndroid Build Coastguard Worker uint32_t cube_neg_z:1; 93*d83cc019SAndroid Build Coastguard Worker uint32_t cube_pos_y:1; 94*d83cc019SAndroid Build Coastguard Worker uint32_t cube_neg_y:1; 95*d83cc019SAndroid Build Coastguard Worker uint32_t cube_pos_x:1; 96*d83cc019SAndroid Build Coastguard Worker uint32_t cube_neg_x:1; 97*d83cc019SAndroid Build Coastguard Worker uint32_t media_boundary_pixel_mode:2; 98*d83cc019SAndroid Build Coastguard Worker uint32_t render_cache_read_write:1; 99*d83cc019SAndroid Build Coastguard Worker uint32_t sampler_l2_bypass_disable:1; 100*d83cc019SAndroid Build Coastguard Worker uint32_t vert_line_stride_ofs:1; 101*d83cc019SAndroid Build Coastguard Worker uint32_t vert_line_stride:1; 102*d83cc019SAndroid Build Coastguard Worker uint32_t tiled_mode:2; 103*d83cc019SAndroid Build Coastguard Worker uint32_t horizontal_alignment:2; 104*d83cc019SAndroid Build Coastguard Worker uint32_t vertical_alignment:2; 105*d83cc019SAndroid Build Coastguard Worker uint32_t surface_format:9; /**< BRW_SURFACEFORMAT_x */ 106*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:1; 107*d83cc019SAndroid Build Coastguard Worker uint32_t is_array:1; 108*d83cc019SAndroid Build Coastguard Worker uint32_t surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */ 109*d83cc019SAndroid Build Coastguard Worker } ss0; 110*d83cc019SAndroid Build Coastguard Worker 111*d83cc019SAndroid Build Coastguard Worker struct { 112*d83cc019SAndroid Build Coastguard Worker uint32_t qpitch:15; 113*d83cc019SAndroid Build Coastguard Worker uint32_t pad1:4; 114*d83cc019SAndroid Build Coastguard Worker uint32_t base_mip_level:5; 115*d83cc019SAndroid Build Coastguard Worker uint32_t memory_object_control:7; 116*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:1; 117*d83cc019SAndroid Build Coastguard Worker } ss1; 118*d83cc019SAndroid Build Coastguard Worker 119*d83cc019SAndroid Build Coastguard Worker struct { 120*d83cc019SAndroid Build Coastguard Worker uint32_t width:14; 121*d83cc019SAndroid Build Coastguard Worker uint32_t pad1:2; 122*d83cc019SAndroid Build Coastguard Worker uint32_t height:14; 123*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:2; 124*d83cc019SAndroid Build Coastguard Worker } ss2; 125*d83cc019SAndroid Build Coastguard Worker 126*d83cc019SAndroid Build Coastguard Worker struct { 127*d83cc019SAndroid Build Coastguard Worker uint32_t pitch:18; 128*d83cc019SAndroid Build Coastguard Worker uint32_t pad:3; 129*d83cc019SAndroid Build Coastguard Worker uint32_t depth:11; 130*d83cc019SAndroid Build Coastguard Worker } ss3; 131*d83cc019SAndroid Build Coastguard Worker 132*d83cc019SAndroid Build Coastguard Worker struct { 133*d83cc019SAndroid Build Coastguard Worker uint32_t multisample_position_palette_index:3; 134*d83cc019SAndroid Build Coastguard Worker uint32_t num_multisamples:3; 135*d83cc019SAndroid Build Coastguard Worker uint32_t multisampled_surface_storage_format:1; 136*d83cc019SAndroid Build Coastguard Worker uint32_t render_target_view_extent:11; 137*d83cc019SAndroid Build Coastguard Worker uint32_t min_array_elt:11; 138*d83cc019SAndroid Build Coastguard Worker uint32_t rotation:2; 139*d83cc019SAndroid Build Coastguard Worker uint32_t force_ncmp_reduce_type:1; 140*d83cc019SAndroid Build Coastguard Worker } ss4; 141*d83cc019SAndroid Build Coastguard Worker 142*d83cc019SAndroid Build Coastguard Worker struct { 143*d83cc019SAndroid Build Coastguard Worker uint32_t mip_count:4; 144*d83cc019SAndroid Build Coastguard Worker uint32_t min_lod:4; 145*d83cc019SAndroid Build Coastguard Worker uint32_t pad3:6; 146*d83cc019SAndroid Build Coastguard Worker uint32_t coherency_type:1; 147*d83cc019SAndroid Build Coastguard Worker uint32_t pad2:5; 148*d83cc019SAndroid Build Coastguard Worker uint32_t ewa_disable_for_cube:1; 149*d83cc019SAndroid Build Coastguard Worker uint32_t y_offset:3; 150*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:1; 151*d83cc019SAndroid Build Coastguard Worker uint32_t x_offset:7; 152*d83cc019SAndroid Build Coastguard Worker } ss5; 153*d83cc019SAndroid Build Coastguard Worker 154*d83cc019SAndroid Build Coastguard Worker struct { 155*d83cc019SAndroid Build Coastguard Worker uint32_t pad; /* Multisample Control Surface stuff */ 156*d83cc019SAndroid Build Coastguard Worker } ss6; 157*d83cc019SAndroid Build Coastguard Worker 158*d83cc019SAndroid Build Coastguard Worker struct { 159*d83cc019SAndroid Build Coastguard Worker uint32_t resource_min_lod:12; 160*d83cc019SAndroid Build Coastguard Worker 161*d83cc019SAndroid Build Coastguard Worker /* Only on Haswell */ 162*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:4; 163*d83cc019SAndroid Build Coastguard Worker uint32_t shader_chanel_select_a:3; 164*d83cc019SAndroid Build Coastguard Worker uint32_t shader_chanel_select_b:3; 165*d83cc019SAndroid Build Coastguard Worker uint32_t shader_chanel_select_g:3; 166*d83cc019SAndroid Build Coastguard Worker uint32_t shader_chanel_select_r:3; 167*d83cc019SAndroid Build Coastguard Worker 168*d83cc019SAndroid Build Coastguard Worker uint32_t alpha_clear_color:1; 169*d83cc019SAndroid Build Coastguard Worker uint32_t blue_clear_color:1; 170*d83cc019SAndroid Build Coastguard Worker uint32_t green_clear_color:1; 171*d83cc019SAndroid Build Coastguard Worker uint32_t red_clear_color:1; 172*d83cc019SAndroid Build Coastguard Worker } ss7; 173*d83cc019SAndroid Build Coastguard Worker 174*d83cc019SAndroid Build Coastguard Worker struct { 175*d83cc019SAndroid Build Coastguard Worker uint32_t base_addr; 176*d83cc019SAndroid Build Coastguard Worker } ss8; 177*d83cc019SAndroid Build Coastguard Worker 178*d83cc019SAndroid Build Coastguard Worker struct { 179*d83cc019SAndroid Build Coastguard Worker uint32_t base_addr_hi:16; 180*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:16; 181*d83cc019SAndroid Build Coastguard Worker } ss9; 182*d83cc019SAndroid Build Coastguard Worker 183*d83cc019SAndroid Build Coastguard Worker struct { 184*d83cc019SAndroid Build Coastguard Worker uint32_t pad0:12; 185*d83cc019SAndroid Build Coastguard Worker uint32_t aux_base_addr:20; 186*d83cc019SAndroid Build Coastguard Worker } ss10; 187*d83cc019SAndroid Build Coastguard Worker 188*d83cc019SAndroid Build Coastguard Worker struct { 189*d83cc019SAndroid Build Coastguard Worker uint32_t aux_base_addr_hi:16; 190*d83cc019SAndroid Build Coastguard Worker uint32_t pad:16; 191*d83cc019SAndroid Build Coastguard Worker } ss11; 192*d83cc019SAndroid Build Coastguard Worker 193*d83cc019SAndroid Build Coastguard Worker struct { 194*d83cc019SAndroid Build Coastguard Worker uint32_t hiz_depth_clear_value; 195*d83cc019SAndroid Build Coastguard Worker } ss12; 196*d83cc019SAndroid Build Coastguard Worker 197*d83cc019SAndroid Build Coastguard Worker struct { 198*d83cc019SAndroid Build Coastguard Worker uint32_t reserved; 199*d83cc019SAndroid Build Coastguard Worker } ss13; 200*d83cc019SAndroid Build Coastguard Worker 201*d83cc019SAndroid Build Coastguard Worker struct { 202*d83cc019SAndroid Build Coastguard Worker uint32_t reserved; 203*d83cc019SAndroid Build Coastguard Worker } ss14; 204*d83cc019SAndroid Build Coastguard Worker 205*d83cc019SAndroid Build Coastguard Worker struct { 206*d83cc019SAndroid Build Coastguard Worker uint32_t reserved; 207*d83cc019SAndroid Build Coastguard Worker } ss15; 208*d83cc019SAndroid Build Coastguard Worker }; 209*d83cc019SAndroid Build Coastguard Worker 210*d83cc019SAndroid Build Coastguard Worker 211*d83cc019SAndroid Build Coastguard Worker #define GEN9_PIPELINE_SELECTION_MASK (3 << 8) 212*d83cc019SAndroid Build Coastguard Worker 213*d83cc019SAndroid Build Coastguard Worker /* If enabled, it will force awake media enginee and the following instructions 214*d83cc019SAndroid Build Coastguard Worker * will require that the media enginee is awake. 215*d83cc019SAndroid Build Coastguard Worker */ 216*d83cc019SAndroid Build Coastguard Worker #define GEN9_FORCE_MEDIA_AWAKE_DISABLE (0 << 5) 217*d83cc019SAndroid Build Coastguard Worker #define GEN9_FORCE_MEDIA_AWAKE_ENABLE (1 << 5) 218*d83cc019SAndroid Build Coastguard Worker #define GEN9_FORCE_MEDIA_AWAKE_MASK (1 << 13) 219*d83cc019SAndroid Build Coastguard Worker 220*d83cc019SAndroid Build Coastguard Worker #define GEN9_SAMPLER_DOP_GATE_DISABLE (0 << 4) 221*d83cc019SAndroid Build Coastguard Worker #define GEN9_SAMPLER_DOP_GATE_ENABLE (1 << 4) 222*d83cc019SAndroid Build Coastguard Worker #define GEN9_SAMPLER_DOP_GATE_MASK (1 << 12) 223*d83cc019SAndroid Build Coastguard Worker 224*d83cc019SAndroid Build Coastguard Worker #endif /* GEN8_MEDIA_H */ 225