1#ifndef GEN9_RENDER_H 2#define GEN9_RENDER_H 3 4#define INTEL_MASK(high, low) (((1 << ((high) - (low) + 1)) - 1) << (low)) 5 6#define GEN9_3D(pipeline,op,sub) \ 7 ((3 << 29) | ((pipeline) << 27) | ((op) << 24) | ((sub) << 16)) 8 9#define GEN9_STATE_BASE_ADDRESS GEN9_3D(0, 1, 1) 10# define BASE_ADDRESS_MODIFY (1 << 0) 11 12#define GEN9_STATE_SIP GEN9_3D(0, 1, 2) 13 14#define GEN9_3DSTATE_VF_STATISTICS GEN9_3D(1, 0, 0xb) 15#define GEN9_PIPELINE_SELECT GEN9_3D(1, 1, 4) 16# define PIPELINE_SELECT_3D 0 17# define PIPELINE_SELECT_MEDIA 1 18#define PIPELINE_SELECTION_MASK (3 << 8) 19 20#define GEN9_MEDIA_STATE_POINTERS GEN9_3D(2, 0, 0) 21#define GEN9_MEDIA_OBJECT GEN9_3D(2, 1, 0) 22 23#define GEN9_3DSTATE_CLEAR_PARAMS GEN9_3D(3, 0, 0x04) 24#define GEN9_3DSTATE_DEPTH_BUFFER GEN9_3D(3, 0, 0x05) 25# define DEPTH_BUFFER_TYPE_SHIFT 29 26# define DEPTH_BUFFER_FORMAT_SHIFT 18 27 28#define GEN9_3DSTATE_STENCIL_BUFFER GEN9_3D(3, 0, 0x06) 29#define GEN9_3DSTATE_HIER_DEPTH_BUFFER GEN9_3D(3, 0, 0x07) 30#define GEN9_3DSTATE_VERTEX_BUFFERS GEN9_3D(3, 0, 0x08) 31# define VB_INDEX_SHIFT 26 32# define VB_MODIFY_ENABLE (1 << 14) 33#define GEN9_3DSTATE_VERTEX_ELEMENTS GEN9_3D(3, 0, 0x09) 34# define VE_INDEX_SHIFT 26 35# define VE_VALID (1 << 25) 36# define VE_FORMAT_SHIFT 16 37# define VE_OFFSET_SHIFT 0 38# define VE_COMPONENT_0_SHIFT 28 39# define VE_COMPONENT_1_SHIFT 24 40# define VE_COMPONENT_2_SHIFT 20 41# define VE_COMPONENT_3_SHIFT 16 42#define GEN9_3DSTATE_INDEX_BUFFER GEN9_3D(3, 0, 0x0a) 43#define GEN9_3DSTATE_VF GEN9_3D(3, 0, 0x0c) 44 45#define GEN9_3DSTATE_MULTISAMPLE GEN9_3D(3, 0, 0x0d) 46/* DW1 */ 47# define MULTISAMPLE_PIXEL_LOCATION_CENTER (0 << 4) 48# define MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT (1 << 4) 49# define MULTISAMPLE_NUMSAMPLES_1 (0 << 1) 50# define MULTISAMPLE_NUMSAMPLES_4 (2 << 1) 51# define MULTISAMPLE_NUMSAMPLES_8 (3 << 1) 52 53#define GEN9_3DSTATE_CC_STATE_POINTERS GEN9_3D(3, 0, 0x0e) 54#define GEN9_3DSTATE_SCISSOR_STATE_POINTERS GEN9_3D(3, 0, 0x0f) 55 56#define GEN9_3DSTATE_VS GEN9_3D(3, 0, 0x10) 57#define GEN9_3DSTATE_GS GEN9_3D(3, 0, 0x11) 58#define GEN9_3DSTATE_CLIP GEN9_3D(3, 0, 0x12) 59#define GEN9_3DSTATE_SF GEN9_3D(3, 0, 0x13) 60# define SF_TRI_PROVOKE_SHIFT 29 61# define SF_LINE_PROVOKE_SHIFT 27 62# define SF_FAN_PROVOKE_SHIFT 25 63 64#define GEN9_3DSTATE_WM GEN9_3D(3, 0, 0x14) 65/* DW1 */ 66# define WM_STATISTICS_ENABLE (1 << 31) 67# define WM_DEPTH_CLEAR (1 << 30) 68# define WM_DEPTH_RESOLVE (1 << 28) 69# define WM_HIERARCHICAL_DEPTH_RESOLVE (1 << 27) 70# define WM_KILL_ENABLE (1 << 25) 71# define WM_POSITION_ZW_PIXEL (0 << 17) 72# define WM_POSITION_ZW_CENTROID (2 << 17) 73# define WM_POSITION_ZW_SAMPLE (3 << 17) 74# define WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 16) 75# define WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 15) 76# define WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 14) 77# define WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 13) 78# define WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 12) 79# define WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 11) 80# define WM_LINE_END_CAP_AA_WIDTH_0_5 (0 << 8) 81# define WM_LINE_END_CAP_AA_WIDTH_1_0 (1 << 8) 82# define WM_LINE_END_CAP_AA_WIDTH_2_0 (2 << 8) 83# define WM_LINE_END_CAP_AA_WIDTH_4_0 (3 << 8) 84# define WM_LINE_AA_WIDTH_0_5 (0 << 6) 85# define WM_LINE_AA_WIDTH_1_0 (1 << 6) 86# define WM_LINE_AA_WIDTH_2_0 (2 << 6) 87# define WM_LINE_AA_WIDTH_4_0 (3 << 6) 88# define WM_POLYGON_STIPPLE_ENABLE (1 << 4) 89# define WM_LINE_STIPPLE_ENABLE (1 << 3) 90# define WM_POINT_RASTRULE_UPPER_RIGHT (1 << 2) 91# define WM_MSRAST_OFF_PIXEL (0 << 0) 92# define WM_MSRAST_OFF_PATTERN (1 << 0) 93# define WM_MSRAST_ON_PIXEL (2 << 0) 94# define WM_MSRAST_ON_PATTERN (3 << 0) 95 96#define GEN9_3DSTATE_CONSTANT_VS GEN9_3D(3, 0, 0x15) 97#define GEN9_3DSTATE_CONSTANT_GS GEN9_3D(3, 0, 0x16) 98#define GEN9_3DSTATE_CONSTANT_PS GEN9_3D(3, 0, 0x17) 99 100#define GEN9_3DSTATE_SAMPLE_MASK GEN9_3D(3, 0, 0x18) 101 102#define GEN9_3DSTATE_CONSTANT_HS GEN9_3D(3, 0, 0x19) 103#define GEN9_3DSTATE_CONSTANT_DS GEN9_3D(3, 0, 0x1a) 104 105#define GEN9_3DSTATE_HS GEN9_3D(3, 0, 0x1b) 106#define GEN9_3DSTATE_TE GEN9_3D(3, 0, 0x1c) 107#define GEN9_3DSTATE_DS GEN9_3D(3, 0, 0x1d) 108#define GEN9_3DSTATE_STREAMOUT GEN9_3D(3, 0, 0x1e) 109 110#define GEN9_3DSTATE_SBE GEN9_3D(3, 0, 0x1f) 111/* DW1 */ 112# define SBE_FORCE_VERTEX_URB_READ_LENGTH (1<<29) 113# define SBE_FORCE_VERTEX_URB_READ_OFFSET (1<<28) 114# define SBE_NUM_OUTPUTS_SHIFT 22 115# define SBE_SWIZZLE_ENABLE (1 << 21) 116# define SBE_POINT_SPRITE_LOWERLEFT (1 << 20) 117# define SBE_URB_ENTRY_READ_LENGTH_SHIFT 11 118# define SBE_URB_ENTRY_READ_OFFSET_SHIFT 5 119#define SBE_ACTIVE_COMPONENT_NONE 0 120#define SBE_ACTIVE_COMPONENT_XY 1 121#define SBE_ACTIVE_COMPONENT_XYZ 2 122#define SBE_ACTIVE_COMPONENT_XYZW 3 123 124 125#define GEN9_3DSTATE_PS GEN9_3D(3, 0, 0x20) 126/* DW1:DW2 kernel pointer */ 127/* DW3 */ 128# define PS_SPF_MODE (1 << 31) 129# define PS_VECTOR_MASK_ENABLE (1 << 30) 130# define PS_SAMPLER_COUNT_SHIFT 27 131# define PS_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 132# define PS_FLOATING_POINT_MODE_IEEE_754 (0 << 16) 133# define PS_FLOATING_POINT_MODE_ALT (1 << 16) 134/* DW4:DW5: scratch space */ 135/* DW6 */ 136# define PS_MAX_THREADS_SHIFT 23 137# define PS_MAX_THREADS (63 << PS_MAX_THREADS_SHIFT) 138# define PS_PUSH_CONSTANT_ENABLE (1 << 11) 139# define PS_RENDER_TARGET_CLEAR (1 << 8) 140# define PS_RENDER_TARGET_RESOLVE (1 << 6) 141# define PS_POSOFFSET_NONE (0 << 3) 142# define PS_POSOFFSET_CENTROID (2 << 3) 143# define PS_POSOFFSET_SAMPLE (3 << 3) 144# define PS_32_DISPATCH_ENABLE (1 << 2) 145# define PS_16_DISPATCH_ENABLE (1 << 1) 146# define PS_8_DISPATCH_ENABLE (1 << 0) 147/* DW7 */ 148# define PS_DISPATCH_START_GRF_SHIFT_0 16 149# define PS_DISPATCH_START_GRF_SHIFT_1 8 150# define PS_DISPATCH_START_GRF_SHIFT_2 0 151/* DW8:D9: kernel 1 pointer */ 152/* DW10:D11: kernel 2 pointer */ 153 154#define GEN9_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP GEN9_3D(3, 0, 0x21) 155#define GEN9_3DSTATE_VIEWPORT_STATE_POINTERS_CC GEN9_3D(3, 0, 0x23) 156 157#define GEN9_3DSTATE_BLEND_STATE_POINTERS GEN9_3D(3, 0, 0x24) 158 159#define GEN9_3DSTATE_BINDING_TABLE_POINTERS_VS GEN9_3D(3, 0, 0x26) 160#define GEN9_3DSTATE_BINDING_TABLE_POINTERS_HS GEN9_3D(3, 0, 0x27) 161#define GEN9_3DSTATE_BINDING_TABLE_POINTERS_DS GEN9_3D(3, 0, 0x28) 162#define GEN9_3DSTATE_BINDING_TABLE_POINTERS_GS GEN9_3D(3, 0, 0x29) 163#define GEN9_3DSTATE_BINDING_TABLE_POINTERS_PS GEN9_3D(3, 0, 0x2a) 164 165#define GEN9_3DSTATE_SAMPLER_STATE_POINTERS_VS GEN9_3D(3, 0, 0x2b) 166#define GEN9_3DSTATE_SAMPLER_STATE_POINTERS_HS GEN9_3D(3, 0, 0x2c) 167#define GEN9_3DSTATE_SAMPLER_STATE_POINTERS_DS GEN9_3D(3, 0, 0x2d) 168#define GEN9_3DSTATE_SAMPLER_STATE_POINTERS_GS GEN9_3D(3, 0, 0x2e) 169#define GEN9_3DSTATE_SAMPLER_STATE_POINTERS_PS GEN9_3D(3, 0, 0x2f) 170 171#define GEN9_3DSTATE_URB_VS GEN9_3D(3, 0, 0x30) 172#define GEN9_3DSTATE_URB_HS GEN9_3D(3, 0, 0x31) 173#define GEN9_3DSTATE_URB_DS GEN9_3D(3, 0, 0x32) 174#define GEN9_3DSTATE_URB_GS GEN9_3D(3, 0, 0x33) 175/* DW1 */ 176# define URB_ENTRY_NUMBER_SHIFT 0 177# define URB_ENTRY_SIZE_SHIFT 16 178# define URB_STARTING_ADDRESS_SHIFT 25 179 180#define GEN9_3DSTATE_GATHER_CONSTANT_VS GEN9_3D(3, 0, 0x34) 181#define GEN9_3DSTATE_GATHER_CONSTANT_GS GEN9_3D(3, 0, 0x35) 182#define GEN9_3DSTATE_GATHER_CONSTANT_HS GEN9_3D(3, 0, 0x36) 183#define GEN9_3DSTATE_GATHER_CONSTANT_DS GEN9_3D(3, 0, 0x37) 184#define GEN9_3DSTATE_GATHER_CONSTANT_PS GEN9_3D(3, 0, 0x38) 185 186#define GEN9_3DSTATE_DX9_CONSTANTF_VS GEN9_3D(3, 0, 0x39) 187#define GEN9_3DSTATE_DX9_CONSTANTF_PS GEN9_3D(3, 0, 0x3a) 188#define GEN9_3DSTATE_DX9_CONSTANTI_VS GEN9_3D(3, 0, 0x3b) 189#define GEN9_3DSTATE_DX9_CONSTANTI_PS GEN9_3D(3, 0, 0x3c) 190#define GEN9_3DSTATE_DX9_CONSTANTB_VS GEN9_3D(3, 0, 0x3d) 191#define GEN9_3DSTATE_DX9_CONSTANTB_PS GEN9_3D(3, 0, 0x3e) 192#define GEN9_3DSTATE_DX9_LOCAL_VALID_VS GEN9_3D(3, 0, 0x3f) 193#define GEN9_3DSTATE_DX9_LOCAL_VALID_PS GEN9_3D(3, 0, 0x40) 194#define GEN9_3DSTATE_DX9_GENERATE_ACTIVE_VS GEN9_3D(3, 0, 0x41) 195#define GEN9_3DSTATE_DX9_GENERATE_ACTIVE_PS GEN9_3D(3, 0, 0x42) 196 197#define GEN9_3DSTATE_BINDING_TABLE_EDIT_VS GEN9_3D(3, 0, 0x43) 198#define GEN9_3DSTATE_BINDING_TABLE_EDIT_GS GEN9_3D(3, 0, 0x44) 199#define GEN9_3DSTATE_BINDING_TABLE_EDIT_HS GEN9_3D(3, 0, 0x45) 200#define GEN9_3DSTATE_BINDING_TABLE_EDIT_DS GEN9_3D(3, 0, 0x46) 201#define GEN9_3DSTATE_BINDING_TABLE_EDIT_PS GEN9_3D(3, 0, 0x47) 202 203#define GEN9_3DSTATE_VF_INSTANCING GEN9_3D(3, 0, 0x49) 204#define GEN9_3DSTATE_VF_SGVS GEN9_3D(3, 0, 0x4a) 205# define SGVS_ENABLE_INSTANCE_ID (1 << 31) 206# define SGVS_INSTANCE_ID_COMPONENT_SHIFT 29 207# define SGVS_INSTANCE_ID_ELEMENT_OFFSET_SHIFT 16 208# define SGVS_ENABLE_VERTEX_ID (1 << 15) 209# define SGVS_VERTEX_ID_COMPONENT_SHIFT 13 210# define SGVS_VERTEX_ID_ELEMENT_OFFSET_SHIFT 0 211#define GEN9_3DSTATE_VF_TOPOLOGY GEN9_3D(3, 0, 0x4b) 212# define POINTLIST 0x01 213# define LINELIST 0x02 214# define LINESTRIP 0x03 215# define TRILIST 0x04 216# define TRISTRIP 0x05 217# define TRIFAN 0x06 218# define QUADLIST 0x07 219# define QUADSTRIP 0x08 220# define LINELIST_ADJ 0x09 221# define LINESTRIP_ADJ 0x0A 222# define TRILIST_ADJ 0x0B 223# define TRISTRIP_ADJ 0x0C 224# define TRISTRIP_REVERSE 0x0D 225# define POLYGON 0x0E 226# define RECTLIST 0x0F 227# define LINELOOP 0x10 228# define POINTLIST_BF 0x11 229# define LINESTRIP_CONT 0x12 230# define LINESTRIP_BF 0x13 231# define LINESTRIP_CONT_BF 0x14 232# define TRIFAN_NOSTIPPLE 0x15 233 234#define GEN9_3DSTATE_WM_CHROMAKEY GEN9_3D(3, 0, 0x4c) 235 236#define GEN9_3DSTATE_PS_BLEND GEN9_3D(3, 0, 0x4d) 237# define PS_BLEND_ALPHA_TO_COVERAGE_ENABLE (1 << 31) 238# define PS_BLEND_HAS_WRITEABLE_RT (1 << 30) 239# define PS_BLEND_COLOR_BLEND_ENABLE (1 << 29) 240# define PS_BLEND_SRC_ALPHA_SHIFT 24 241# define PS_BLEND_DST_ALPHA_SHIFT 19 242# define PS_BLEND_SRC_SHIFT 14 243# define PS_BLEND_DST_SHIFT 9 244# define PS_BLEND_ALPHA_TEST_ENABLE (1 << 8) 245# define PS_BLEND_INDEPENDENT_ALPHA_BLEND_ENABLE (1 << 7) 246 247#define GEN9_3DSTATE_WM_DEPTH_STENCIL GEN9_3D(3, 0, 0x4e) 248/* DW1 */ 249# define WM_DS_STENCIL_TEST_MASK_MASK INTEL_MASK(31, 24) 250# define WM_DS_STENCIL_TEST_MASK_SHIFT 24 251# define WM_DS_STENCIL_WRITE_MASK_MASK INTEL_MASK(23, 16) 252# define WM_DS_STENCIL_WRITE_MASK_SHIFT 16 253# define WM_DS_BF_STENCIL_TEST_MASK_MASK INTEL_MASK(15, 8) 254# define WM_DS_BF_STENCIL_TEST_MASK_SHIFT 8 255# define WM_DS_BF_STENCIL_WRITE_MASK_MASK INTEL_MASK(7, 0) 256# define WM_DS_DEPTH_FUNC_SHIFT 5 257# define WM_DS_DOUBLE_SIDED_STENCIL_ENABLE (1 << 4) 258# define WM_DS_STENCIL_TEST_ENABLE (1 << 3) 259# define WM_DS_STENCIL_BUFFER_WRITE_ENABLE (1 << 2) 260# define WM_DS_DEPTH_TEST_ENABLE (1 << 1) 261# define WM_DS_DEPTH_BUFFER_WRITE_ENABLE (1 << 0) 262/* DW2 */ 263# define WM_DS_STENCIL_TEST_MASK_MASK INTEL_MASK(31, 24) 264# define WM_DS_STENCIL_TEST_MASK_SHIFT 24 265# define WM_DS_STENCIL_WRITE_MASK_MASK INTEL_MASK(23, 16) 266# define WM_DS_STENCIL_WRITE_MASK_SHIFT 16 267# define WM_DS_BF_STENCIL_TEST_MASK_MASK INTEL_MASK(15, 8) 268# define WM_DS_BF_STENCIL_TEST_MASK_SHIFT 8 269# define WM_DS_BF_STENCIL_WRITE_MASK_MASK INTEL_MASK(7, 0) 270# define WM_DS_BF_STENCIL_WRITE_MASK_SHIFT 0 271 272#define GEN9_3DSTATE_PS_EXTRA GEN9_3D(3, 0, 0x4f) 273# define PSX_PIXEL_SHADER_VALID (1 << 31) 274# define PSX_PIXEL_SHADER_NO_RT_WRITE (1 << 30) 275# define PSX_OMASK_TO_RENDER_TARGET (1 << 29) 276# define PSX_KILL_ENABLE (1 << 28) 277# define PSX_PSCDEPTH_OFF (0 << 26) 278# define PSX_PSCDEPTH_ON (1 << 26) 279# define PSX_PSCDEPTH_ON_GE (2 << 26) 280# define PSX_PSCDEPTH_ON_LE (3 << 26) 281# define PSX_FORCE_COMPUTED_DEPTH (1 << 25) 282# define PSX_USES_SOURCE_DEPTH (1 << 24) 283# define PSX_USES_SOURCE_W (1 << 23) 284# define PSX_ATTRIBUTE_ENABLE (1 << 8) 285# define PSX_SHADER_DISABLES_ALPHA_TO_COVERAGE (1 << 7) 286# define PSX_SHADER_IS_PER_SAMPLE (1 << 6) 287# define PSX_SHADER_HAS_UAV (1 << 2) 288# define PSX_SHADER_USES_INPUT_COVERAGE_MASK (1 << 1) 289 290#define GEN9_3DSTATE_RASTER GEN9_3D(3, 0, 0x50) 291/* DW1 */ 292# define RASTER_FRONT_WINDING_CCW (1 << 21) 293# define RASTER_CULL_BOTH (0 << 16) 294# define RASTER_CULL_NONE (1 << 16) 295# define RASTER_CULL_FRONT (2 << 16) 296# define RASTER_CULL_BACK (3 << 16) 297# define RASTER_SMOOTH_POINT_ENABLE (1 << 13) 298# define RASTER_LINE_AA_ENABLE (1 << 2) 299# define RASTER_VIEWPORT_Z_CLIP_TEST_ENABLE (1 << 0) 300 301#define GEN9_3DSTATE_SBE_SWIZ GEN9_3D(3, 0, 0x51) 302#define GEN9_3DSTATE_WM_HZ_OP GEN9_3D(3, 0, 0x52) 303 304#define GEN9_3DSTATE_COMPONENT_PACKING GEN6_3D(3, 0, 0x55) 305 306 307 308#define GEN9_3DSTATE_DRAWING_RECTANGLE GEN9_3D(3, 1, 0x00) 309#define GEN9_3DSTATE_SAMPLER_PALETTE_LOAD GEN9_3D(3, 1, 0x02) 310#define GEN9_3DSTATE_CHROMA_KEY GEN9_3D(3, 1, 0x04) 311 312#define GEN9_3DSTATE_POLY_STIPPLE_OFFSET GEN9_3D(3, 1, 0x06) 313#define GEN9_3DSTATE_POLY_STIPPLE_PATTERN GEN9_3D(3, 1, 0x07) 314#define GEN9_3DSTATE_LINE_STIPPLE GEN9_3D(3, 1, 0x08) 315#define GEN9_3DSTATE_AA_LINE_PARAMS GEN9_3D(3, 1, 0x0a) 316#define GEN9_3DSTATE_SAMPLER_PALETTE_LOAD1 GEN9_3D(3, 1, 0x0c) 317#define GEN9_3DSTATE_MONOFILTER_SIZE GEN9_3D(3, 1, 0x11) 318#define GEN9_3DSTATE_PUSH_CONSTANT_ALLOC_VS GEN9_3D(3, 1, 0x12) 319#define GEN9_3DSTATE_PUSH_CONSTANT_ALLOC_HS GEN9_3D(3, 1, 0x13) 320#define GEN9_3DSTATE_PUSH_CONSTANT_ALLOC_DS GEN9_3D(3, 1, 0x14) 321#define GEN9_3DSTATE_PUSH_CONSTANT_ALLOC_GS GEN9_3D(3, 1, 0x15) 322#define GEN9_3DSTATE_PUSH_CONSTANT_ALLOC_PS GEN9_3D(3, 1, 0x16) 323/* DW1 */ 324# define PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16 325# define PUSH_CONSTANT_BUFFER_SIZE_SHIFT 0 326 327#define GEN9_3DSTATE_SO_DECL_LIST GEN9_3D(3, 1, 0x17) 328#define GEN9_3DSTATE_SO_BUFFER GEN9_3D(3, 1, 0x18) 329#define GEN9_3DSTATE_BINDING_TABLE_POOL_ALLOC GEN9_3D(3, 1, 0x19) 330#define GEN9_3DSTATE_GATHER_BUFFER_POOL_ALLOC GEN9_3D(3, 1, 0x1a) 331#define GEN9_3DSTATE_DX9_CONSTANT_BUFFER_POOL_ALLOC GEN9_3D(3, 1, 0x1b) 332#define GEN9_3DSTATE_SAMPLE_PATTERN GEN9_3D(3, 1, 0x1c) 333 334 335/* for GEN9_PIPE_CONTROL */ 336#define GEN9_PIPE_CONTROL GEN9_3D(3, 2, 0) 337#define PIPE_CONTROL_CS_STALL (1 << 20) 338#define PIPE_CONTROL_NOWRITE (0 << 14) 339#define PIPE_CONTROL_WRITE_QWORD (1 << 14) 340#define PIPE_CONTROL_WRITE_DEPTH (2 << 14) 341#define PIPE_CONTROL_WRITE_TIME (3 << 14) 342#define PIPE_CONTROL_DEPTH_STALL (1 << 13) 343#define PIPE_CONTROL_WC_FLUSH (1 << 12) 344#define PIPE_CONTROL_IS_FLUSH (1 << 11) 345#define PIPE_CONTROL_TC_FLUSH (1 << 10) 346#define PIPE_CONTROL_NOTIFY_ENABLE (1 << 8) 347#define PIPE_CONTROL_FLUSH (1 << 7) 348#define PIPE_CONTROL_GLOBAL_GTT (1 << 2) 349#define PIPE_CONTROL_LOCAL_PGTT (0 << 2) 350#define PIPE_CONTROL_STALL_AT_SCOREBOARD (1 << 1) 351#define PIPE_CONTROL_DEPTH_CACHE_FLUSH (1 << 0) 352 353 354#define GEN9_3DPRIMITIVE GEN9_3D(3, 3, 0) 355 356/* 3DPRIMITIVE bits */ 357#define VERTEX_SEQUENTIAL (0 << 15) 358#define VERTEX_RANDOM (1 << 15) 359 360#define ANISORATIO_2 0 361#define ANISORATIO_4 1 362#define ANISORATIO_6 2 363#define ANISORATIO_8 3 364#define ANISORATIO_10 4 365#define ANISORATIO_12 5 366#define ANISORATIO_14 6 367#define ANISORATIO_16 7 368 369#define BLENDFACTOR_ONE 0x1 370#define BLENDFACTOR_SRC_COLOR 0x2 371#define BLENDFACTOR_SRC_ALPHA 0x3 372#define BLENDFACTOR_DST_ALPHA 0x4 373#define BLENDFACTOR_DST_COLOR 0x5 374#define BLENDFACTOR_SRC_ALPHA_SATURATE 0x6 375#define BLENDFACTOR_CONST_COLOR 0x7 376#define BLENDFACTOR_CONST_ALPHA 0x8 377#define BLENDFACTOR_SRC1_COLOR 0x9 378#define BLENDFACTOR_SRC1_ALPHA 0x0A 379#define BLENDFACTOR_ZERO 0x11 380#define BLENDFACTOR_INV_SRC_COLOR 0x12 381#define BLENDFACTOR_INV_SRC_ALPHA 0x13 382#define BLENDFACTOR_INV_DST_ALPHA 0x14 383#define BLENDFACTOR_INV_DST_COLOR 0x15 384#define BLENDFACTOR_INV_CONST_COLOR 0x17 385#define BLENDFACTOR_INV_CONST_ALPHA 0x18 386#define BLENDFACTOR_INV_SRC1_COLOR 0x19 387#define BLENDFACTOR_INV_SRC1_ALPHA 0x1A 388 389#define BLENDFUNCTION_ADD 0 390#define BLENDFUNCTION_SUBTRACT 1 391#define BLENDFUNCTION_REVERSE_SUBTRACT 2 392#define GEN9_BLENDFUNCTION_MIN 3 393#define BLENDFUNCTION_MAX 4 394 395#define ALPHATEST_FORMAT_UNORM8 0 396#define ALPHATEST_FORMAT_FLOAT32 1 397 398#define CHROMAKEY_KILL_ON_ANY_MATCH 0 399#define CHROMAKEY_REPLACE_BLACK 1 400 401#define CLIP_API_OGL 0 402#define CLIP_API_DX 1 403 404#define CLIPMODE_NORMAL 0 405#define CLIPMODE_CLIP_ALL 1 406#define CLIPMODE_CLIP_NON_REJECTED 2 407#define CLIPMODE_REJECT_ALL 3 408#define CLIPMODE_ACCEPT_ALL 4 409 410#define CLIP_NDCSPACE 0 411#define CLIP_SCREENSPACE 1 412 413#define COMPAREFUNCTION_ALWAYS 0 414#define COMPAREFUNCTION_NEVER 1 415#define COMPAREFUNCTION_LESS 2 416#define COMPAREFUNCTION_EQUAL 3 417#define COMPAREFUNCTION_LEQUAL 4 418#define COMPAREFUNCTION_GREATER 5 419#define COMPAREFUNCTION_NOTEQUAL 6 420#define COMPAREFUNCTION_GEQUAL 7 421 422#define COVERAGE_PIXELS_HALF 0 423#define COVERAGE_PIXELS_1 1 424#define COVERAGE_PIXELS_2 2 425#define COVERAGE_PIXELS_4 3 426 427#define DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0 428#define DEPTHFORMAT_D32_FLOAT 1 429#define DEPTHFORMAT_D24_UNORM_S8_UINT 2 430#define DEPTHFORMAT_D16_UNORM 5 431 432#define FLOATING_POINT_IEEE_754 0 433#define FLOATING_POINT_NON_IEEE_754 1 434 435#define INDEX_BYTE 0 436#define INDEX_WORD 1 437#define INDEX_DWORD 2 438 439#define LOGICOPFUNCTION_CLEAR 0 440#define LOGICOPFUNCTION_NOR 1 441#define LOGICOPFUNCTION_AND_INVERTED 2 442#define LOGICOPFUNCTION_COPY_INVERTED 3 443#define LOGICOPFUNCTION_AND_REVERSE 4 444#define LOGICOPFUNCTION_INVERT 5 445#define LOGICOPFUNCTION_XOR 6 446#define LOGICOPFUNCTION_NAND 7 447#define LOGICOPFUNCTION_AND 8 448#define LOGICOPFUNCTION_EQUIV 9 449#define LOGICOPFUNCTION_NOOP 10 450#define LOGICOPFUNCTION_OR_INVERTED 11 451#define LOGICOPFUNCTION_COPY 12 452#define LOGICOPFUNCTION_OR_REVERSE 13 453#define LOGICOPFUNCTION_OR 14 454#define LOGICOPFUNCTION_SET 15 455 456#define MAPFILTER_NEAREST 0x0 457#define MAPFILTER_LINEAR 0x1 458#define MAPFILTER_ANISOTROPIC 0x2 459#define MAPFILTER_FLEXIBLE 0x3 460#define MAPFILTER_MONO 0x6 461 462#define MIPFILTER_NONE 0 463#define MIPFILTER_NEAREST 1 464#define MIPFILTER_LINEAR 3 465 466#define POLYGON_FRONT_FACING 0 467#define POLYGON_BACK_FACING 1 468 469#define PREFILTER_ALWAYS 0x0 470#define PREFILTER_NEVER 0x1 471#define PREFILTER_LESS 0x2 472#define PREFILTER_EQUAL 0x3 473#define PREFILTER_LEQUAL 0x4 474#define PREFILTER_GREATER 0x5 475#define PREFILTER_NOTEQUAL 0x6 476#define PREFILTER_GEQUAL 0x7 477 478#define RASTRULE_UPPER_LEFT 0 479#define RASTRULE_UPPER_RIGHT 1 480 481#define STENCILOP_KEEP 0 482#define STENCILOP_ZERO 1 483#define STENCILOP_REPLACE 2 484#define STENCILOP_INCRSAT 3 485#define STENCILOP_DECRSAT 4 486#define STENCILOP_INCR 5 487#define STENCILOP_DECR 6 488#define STENCILOP_INVERT 7 489 490#define SURFACE_MIPMAPLAYOUT_BELOW 0 491#define SURFACE_MIPMAPLAYOUT_RIGHT 1 492 493#define SURFACEFORMAT_R32G32B32A32_FLOAT 0x000 494#define SURFACEFORMAT_R32G32B32A32_SINT 0x001 495#define SURFACEFORMAT_R32G32B32A32_UINT 0x002 496#define SURFACEFORMAT_R32G32B32A32_UNORM 0x003 497#define SURFACEFORMAT_R32G32B32A32_SNORM 0x004 498#define SURFACEFORMAT_R64G64_FLOAT 0x005 499#define SURFACEFORMAT_R32G32B32X32_FLOAT 0x006 500#define SURFACEFORMAT_R32G32B32A32_SSCALED 0x007 501#define SURFACEFORMAT_R32G32B32A32_USCALED 0x008 502#define SURFACEFORMAT_R32G32B32_FLOAT 0x040 503#define SURFACEFORMAT_R32G32B32_SINT 0x041 504#define SURFACEFORMAT_R32G32B32_UINT 0x042 505#define SURFACEFORMAT_R32G32B32_UNORM 0x043 506#define SURFACEFORMAT_R32G32B32_SNORM 0x044 507#define SURFACEFORMAT_R32G32B32_SSCALED 0x045 508#define SURFACEFORMAT_R32G32B32_USCALED 0x046 509#define SURFACEFORMAT_R16G16B16A16_UNORM 0x080 510#define SURFACEFORMAT_R16G16B16A16_SNORM 0x081 511#define SURFACEFORMAT_R16G16B16A16_SINT 0x082 512#define SURFACEFORMAT_R16G16B16A16_UINT 0x083 513#define SURFACEFORMAT_R16G16B16A16_FLOAT 0x084 514#define SURFACEFORMAT_R32G32_FLOAT 0x085 515#define SURFACEFORMAT_R32G32_SINT 0x086 516#define SURFACEFORMAT_R32G32_UINT 0x087 517#define SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS 0x088 518#define SURFACEFORMAT_X32_TYPELESS_G8X24_UINT 0x089 519#define SURFACEFORMAT_L32A32_FLOAT 0x08A 520#define SURFACEFORMAT_R32G32_UNORM 0x08B 521#define SURFACEFORMAT_R32G32_SNORM 0x08C 522#define SURFACEFORMAT_R64_FLOAT 0x08D 523#define SURFACEFORMAT_R16G16B16X16_UNORM 0x08E 524#define SURFACEFORMAT_R16G16B16X16_FLOAT 0x08F 525#define SURFACEFORMAT_A32X32_FLOAT 0x090 526#define SURFACEFORMAT_L32X32_FLOAT 0x091 527#define SURFACEFORMAT_I32X32_FLOAT 0x092 528#define SURFACEFORMAT_R16G16B16A16_SSCALED 0x093 529#define SURFACEFORMAT_R16G16B16A16_USCALED 0x094 530#define SURFACEFORMAT_R32G32_SSCALED 0x095 531#define SURFACEFORMAT_R32G32_USCALED 0x096 532#define SURFACEFORMAT_B8G8R8A8_UNORM 0x0C0 533#define SURFACEFORMAT_B8G8R8A8_UNORM_SRGB 0x0C1 534#define SURFACEFORMAT_R10G10B10A2_UNORM 0x0C2 535#define SURFACEFORMAT_R10G10B10A2_UNORM_SRGB 0x0C3 536#define SURFACEFORMAT_R10G10B10A2_UINT 0x0C4 537#define SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM 0x0C5 538#define SURFACEFORMAT_R8G8B8A8_UNORM 0x0C7 539#define SURFACEFORMAT_R8G8B8A8_UNORM_SRGB 0x0C8 540#define SURFACEFORMAT_R8G8B8A8_SNORM 0x0C9 541#define SURFACEFORMAT_R8G8B8A8_SINT 0x0CA 542#define SURFACEFORMAT_R8G8B8A8_UINT 0x0CB 543#define SURFACEFORMAT_R16G16_UNORM 0x0CC 544#define SURFACEFORMAT_R16G16_SNORM 0x0CD 545#define SURFACEFORMAT_R16G16_SINT 0x0CE 546#define SURFACEFORMAT_R16G16_UINT 0x0CF 547#define SURFACEFORMAT_R16G16_FLOAT 0x0D0 548#define SURFACEFORMAT_B10G10R10A2_UNORM 0x0D1 549#define SURFACEFORMAT_B10G10R10A2_UNORM_SRGB 0x0D2 550#define SURFACEFORMAT_R11G11B10_FLOAT 0x0D3 551#define SURFACEFORMAT_R32_SINT 0x0D6 552#define SURFACEFORMAT_R32_UINT 0x0D7 553#define SURFACEFORMAT_R32_FLOAT 0x0D8 554#define SURFACEFORMAT_R24_UNORM_X8_TYPELESS 0x0D9 555#define SURFACEFORMAT_X24_TYPELESS_G8_UINT 0x0DA 556#define SURFACEFORMAT_L16A16_UNORM 0x0DF 557#define SURFACEFORMAT_I24X8_UNORM 0x0E0 558#define SURFACEFORMAT_L24X8_UNORM 0x0E1 559#define SURFACEFORMAT_A24X8_UNORM 0x0E2 560#define SURFACEFORMAT_I32_FLOAT 0x0E3 561#define SURFACEFORMAT_L32_FLOAT 0x0E4 562#define SURFACEFORMAT_A32_FLOAT 0x0E5 563#define SURFACEFORMAT_B8G8R8X8_UNORM 0x0E9 564#define SURFACEFORMAT_B8G8R8X8_UNORM_SRGB 0x0EA 565#define SURFACEFORMAT_R8G8B8X8_UNORM 0x0EB 566#define SURFACEFORMAT_R8G8B8X8_UNORM_SRGB 0x0EC 567#define SURFACEFORMAT_R9G9B9E5_SHAREDEXP 0x0ED 568#define SURFACEFORMAT_B10G10R10X2_UNORM 0x0EE 569#define SURFACEFORMAT_L16A16_FLOAT 0x0F0 570#define SURFACEFORMAT_R32_UNORM 0x0F1 571#define SURFACEFORMAT_R32_SNORM 0x0F2 572#define SURFACEFORMAT_R10G10B10X2_USCALED 0x0F3 573#define SURFACEFORMAT_R8G8B8A8_SSCALED 0x0F4 574#define SURFACEFORMAT_R8G8B8A8_USCALED 0x0F5 575#define SURFACEFORMAT_R16G16_SSCALED 0x0F6 576#define SURFACEFORMAT_R16G16_USCALED 0x0F7 577#define SURFACEFORMAT_R32_SSCALED 0x0F8 578#define SURFACEFORMAT_R32_USCALED 0x0F9 579#define SURFACEFORMAT_B5G6R5_UNORM 0x100 580#define SURFACEFORMAT_B5G6R5_UNORM_SRGB 0x101 581#define SURFACEFORMAT_B5G5R5A1_UNORM 0x102 582#define SURFACEFORMAT_B5G5R5A1_UNORM_SRGB 0x103 583#define SURFACEFORMAT_B4G4R4A4_UNORM 0x104 584#define SURFACEFORMAT_B4G4R4A4_UNORM_SRGB 0x105 585#define SURFACEFORMAT_R8G8_UNORM 0x106 586#define SURFACEFORMAT_R8G8_SNORM 0x107 587#define SURFACEFORMAT_R8G8_SINT 0x108 588#define SURFACEFORMAT_R8G8_UINT 0x109 589#define SURFACEFORMAT_R16_UNORM 0x10A 590#define SURFACEFORMAT_R16_SNORM 0x10B 591#define SURFACEFORMAT_R16_SINT 0x10C 592#define SURFACEFORMAT_R16_UINT 0x10D 593#define SURFACEFORMAT_R16_FLOAT 0x10E 594#define SURFACEFORMAT_I16_UNORM 0x111 595#define SURFACEFORMAT_L16_UNORM 0x112 596#define SURFACEFORMAT_A16_UNORM 0x113 597#define SURFACEFORMAT_L8A8_UNORM 0x114 598#define SURFACEFORMAT_I16_FLOAT 0x115 599#define SURFACEFORMAT_L16_FLOAT 0x116 600#define SURFACEFORMAT_A16_FLOAT 0x117 601#define SURFACEFORMAT_R5G5_SNORM_B6_UNORM 0x119 602#define SURFACEFORMAT_B5G5R5X1_UNORM 0x11A 603#define SURFACEFORMAT_B5G5R5X1_UNORM_SRGB 0x11B 604#define SURFACEFORMAT_R8G8_SSCALED 0x11C 605#define SURFACEFORMAT_R8G8_USCALED 0x11D 606#define SURFACEFORMAT_R16_SSCALED 0x11E 607#define SURFACEFORMAT_R16_USCALED 0x11F 608#define SURFACEFORMAT_R8_UNORM 0x140 609#define SURFACEFORMAT_R8_SNORM 0x141 610#define SURFACEFORMAT_R8_SINT 0x142 611#define SURFACEFORMAT_R8_UINT 0x143 612#define SURFACEFORMAT_A8_UNORM 0x144 613#define SURFACEFORMAT_I8_UNORM 0x145 614#define SURFACEFORMAT_L8_UNORM 0x146 615#define SURFACEFORMAT_P4A4_UNORM 0x147 616#define SURFACEFORMAT_A4P4_UNORM 0x148 617#define SURFACEFORMAT_R8_SSCALED 0x149 618#define SURFACEFORMAT_R8_USCALED 0x14A 619#define SURFACEFORMAT_R1_UINT 0x181 620#define SURFACEFORMAT_YCRCB_NORMAL 0x182 621#define SURFACEFORMAT_YCRCB_SWAPUVY 0x183 622#define SURFACEFORMAT_BC1_UNORM 0x186 623#define SURFACEFORMAT_BC2_UNORM 0x187 624#define SURFACEFORMAT_BC3_UNORM 0x188 625#define SURFACEFORMAT_BC4_UNORM 0x189 626#define SURFACEFORMAT_BC5_UNORM 0x18A 627#define SURFACEFORMAT_BC1_UNORM_SRGB 0x18B 628#define SURFACEFORMAT_BC2_UNORM_SRGB 0x18C 629#define SURFACEFORMAT_BC3_UNORM_SRGB 0x18D 630#define SURFACEFORMAT_MONO8 0x18E 631#define SURFACEFORMAT_YCRCB_SWAPUV 0x18F 632#define SURFACEFORMAT_YCRCB_SWAPY 0x190 633#define SURFACEFORMAT_DXT1_RGB 0x191 634#define SURFACEFORMAT_FXT1 0x192 635#define SURFACEFORMAT_R8G8B8_UNORM 0x193 636#define SURFACEFORMAT_R8G8B8_SNORM 0x194 637#define SURFACEFORMAT_R8G8B8_SSCALED 0x195 638#define SURFACEFORMAT_R8G8B8_USCALED 0x196 639#define SURFACEFORMAT_R64G64B64A64_FLOAT 0x197 640#define SURFACEFORMAT_R64G64B64_FLOAT 0x198 641#define SURFACEFORMAT_BC4_SNORM 0x199 642#define SURFACEFORMAT_BC5_SNORM 0x19A 643#define SURFACEFORMAT_R16G16B16_UNORM 0x19C 644#define SURFACEFORMAT_R16G16B16_SNORM 0x19D 645#define SURFACEFORMAT_R16G16B16_SSCALED 0x19E 646#define SURFACEFORMAT_R16G16B16_USCALED 0x19F 647 648#define SURFACE_1D 0 649#define SURFACE_2D 1 650#define SURFACE_3D 2 651#define SURFACE_CUBE 3 652#define SURFACE_BUFFER 4 653#define SURFACE_NULL 7 654 655#define TEXCOORDMODE_WRAP 0 656#define TEXCOORDMODE_MIRROR 1 657#define TEXCOORDMODE_CLAMP 2 658#define TEXCOORDMODE_CUBE 3 659#define TEXCOORDMODE_CLAMP_BORDER 4 660#define TEXCOORDMODE_MIRROR_ONCE 5 661 662#define THREAD_PRIORITY_NORMAL 0 663#define THREAD_PRIORITY_HIGH 1 664 665#define VERTEX_SUBPIXEL_PRECISION_8BITS 0 666#define VERTEX_SUBPIXEL_PRECISION_4BITS 1 667 668#define COMPONENT_NOSTORE 0 669#define COMPONENT_STORE_SRC 1 670#define COMPONENT_STORE_0 2 671#define COMPONENT_STORE_1_FLT 3 672#define COMPONENT_STORE_1_INT 4 673#define COMPONENT_STORE_VID 5 674#define COMPONENT_STORE_IID 6 675#define COMPONENT_STORE_PID 7 676 677/* Execution Unit (EU) defines 678 */ 679 680#define GEN9_ALIGN_1 0 681#define GEN9_ALIGN_16 1 682 683#define GEN9_ADDRESS_DIRECT 0 684#define GEN9_ADDRESS_REGISTER_INDIRECT_REGISTER 1 685 686#define GEN9_CHANNEL_X 0 687#define GEN9_CHANNEL_Y 1 688#define GEN9_CHANNEL_Z 2 689#define GEN9_CHANNEL_W 3 690 691#define GEN9_COMPRESSION_NONE 0 692#define GEN9_COMPRESSION_2NDHALF 1 693#define GEN9_COMPRESSION_COMPRESSED 2 694 695#define GEN9_CONDITIONAL_NONE 0 696#define GEN9_CONDITIONAL_Z 1 697#define GEN9_CONDITIONAL_NZ 2 698#define GEN9_CONDITIONAL_EQ 1 /* Z */ 699#define GEN9_CONDITIONAL_NEQ 2 /* NZ */ 700#define GEN9_CONDITIONAL_G 3 701#define GEN9_CONDITIONAL_GE 4 702#define GEN9_CONDITIONAL_L 5 703#define GEN9_CONDITIONAL_LE 6 704#define GEN9_CONDITIONAL_C 7 705#define GEN9_CONDITIONAL_O 8 706 707#define GEN9_DEBUG_NONE 0 708#define GEN9_DEBUG_BREAKPOINT 1 709 710#define GEN9_DEPENDENCY_NORMAL 0 711#define GEN9_DEPENDENCY_NOTCLEARED 1 712#define GEN9_DEPENDENCY_NOTCHECKED 2 713#define GEN9_DEPENDENCY_DISABLE 3 714 715#define GEN9_EXECUTE_1 0 716#define GEN9_EXECUTE_2 1 717#define GEN9_EXECUTE_4 2 718#define GEN9_EXECUTE_8 3 719#define GEN9_EXECUTE_16 4 720#define GEN9_EXECUTE_32 5 721 722#define GEN9_HORIZONTAL_STRIDE_0 0 723#define GEN9_HORIZONTAL_STRIDE_1 1 724#define GEN9_HORIZONTAL_STRIDE_2 2 725#define GEN9_HORIZONTAL_STRIDE_4 3 726 727#define GEN9_INSTRUCTION_NORMAL 0 728#define GEN9_INSTRUCTION_SATURATE 1 729 730#define GEN9_OPCODE_MOV 1 731#define GEN9_OPCODE_SEL 2 732#define GEN9_OPCODE_NOT 4 733#define GEN9_OPCODE_AND 5 734#define GEN9_OPCODE_OR 6 735#define GEN9_OPCODE_XOR 7 736#define GEN9_OPCODE_SHR 8 737#define GEN9_OPCODE_SHL 9 738#define GEN9_OPCODE_RSR 10 739#define GEN9_OPCODE_RSL 11 740#define GEN9_OPCODE_ASR 12 741#define GEN9_OPCODE_CMP 16 742#define GEN9_OPCODE_JMPI 32 743#define GEN9_OPCODE_IF 34 744#define GEN9_OPCODE_IFF 35 745#define GEN9_OPCODE_ELSE 36 746#define GEN9_OPCODE_ENDIF 37 747#define GEN9_OPCODE_DO 38 748#define GEN9_OPCODE_WHILE 39 749#define GEN9_OPCODE_BREAK 40 750#define GEN9_OPCODE_CONTINUE 41 751#define GEN9_OPCODE_HALT 42 752#define GEN9_OPCODE_MSAVE 44 753#define GEN9_OPCODE_MRESTORE 45 754#define GEN9_OPCODE_PUSH 46 755#define GEN9_OPCODE_POP 47 756#define GEN9_OPCODE_WAIT 48 757#define GEN9_OPCODE_SEND 49 758#define GEN9_OPCODE_ADD 64 759#define GEN9_OPCODE_MUL 65 760#define GEN9_OPCODE_AVG 66 761#define GEN9_OPCODE_FRC 67 762#define GEN9_OPCODE_RNDU 68 763#define GEN9_OPCODE_RNDD 69 764#define GEN9_OPCODE_RNDE 70 765#define GEN9_OPCODE_RNDZ 71 766#define GEN9_OPCODE_MAC 72 767#define GEN9_OPCODE_MACH 73 768#define GEN9_OPCODE_LZD 74 769#define GEN9_OPCODE_SAD2 80 770#define GEN9_OPCODE_SADA2 81 771#define GEN9_OPCODE_DP4 84 772#define GEN9_OPCODE_DPH 85 773#define GEN9_OPCODE_DP3 86 774#define GEN9_OPCODE_DP2 87 775#define GEN9_OPCODE_DPA2 88 776#define GEN9_OPCODE_LINE 89 777#define GEN9_OPCODE_NOP 126 778 779#define GEN9_PREDICATE_NONE 0 780#define GEN9_PREDICATE_NORMAL 1 781#define GEN9_PREDICATE_ALIGN1_ANYV 2 782#define GEN9_PREDICATE_ALIGN1_ALLV 3 783#define GEN9_PREDICATE_ALIGN1_ANY2H 4 784#define GEN9_PREDICATE_ALIGN1_ALL2H 5 785#define GEN9_PREDICATE_ALIGN1_ANY4H 6 786#define GEN9_PREDICATE_ALIGN1_ALL4H 7 787#define GEN9_PREDICATE_ALIGN1_ANY8H 8 788#define GEN9_PREDICATE_ALIGN1_ALL8H 9 789#define GEN9_PREDICATE_ALIGN1_ANY16H 10 790#define GEN9_PREDICATE_ALIGN1_ALL16H 11 791#define GEN9_PREDICATE_ALIGN16_REPLICATE_X 2 792#define GEN9_PREDICATE_ALIGN16_REPLICATE_Y 3 793#define GEN9_PREDICATE_ALIGN16_REPLICATE_Z 4 794#define GEN9_PREDICATE_ALIGN16_REPLICATE_W 5 795#define GEN9_PREDICATE_ALIGN16_ANY4H 6 796#define GEN9_PREDICATE_ALIGN16_ALL4H 7 797 798#define GEN9_ARCHITECTURE_REGISTER_FILE 0 799#define GEN9_GENERAL_REGISTER_FILE 1 800#define GEN9_MESSAGE_REGISTER_FILE 2 801#define GEN9_IMMEDIATE_VALUE 3 802 803#define GEN9_REGISTER_TYPE_UD 0 804#define GEN9_REGISTER_TYPE_D 1 805#define GEN9_REGISTER_TYPE_UW 2 806#define GEN9_REGISTER_TYPE_W 3 807#define GEN9_REGISTER_TYPE_UB 4 808#define GEN9_REGISTER_TYPE_B 5 809#define GEN9_REGISTER_TYPE_VF 5 /* packed float vector, immediates only? */ 810#define GEN9_REGISTER_TYPE_HF 6 811#define GEN9_REGISTER_TYPE_V 6 /* packed int vector, immediates only, uword dest only */ 812#define GEN9_REGISTER_TYPE_F 7 813 814#define GEN9_ARF_NULL 0x00 815#define GEN9_ARF_ADDRESS 0x10 816#define GEN9_ARF_ACCUMULATOR 0x20 817#define GEN9_ARF_FLAG 0x30 818#define GEN9_ARF_MASK 0x40 819#define GEN9_ARF_MASK_STACK 0x50 820#define GEN9_ARF_MASK_STACK_DEPTH 0x60 821#define GEN9_ARF_STATE 0x70 822#define GEN9_ARF_CONTROL 0x80 823#define GEN9_ARF_NOTIFICATION_COUNT 0x90 824#define GEN9_ARF_IP 0xA0 825 826#define GEN9_AMASK 0 827#define GEN9_IMASK 1 828#define GEN9_LMASK 2 829#define GEN9_CMASK 3 830 831#define GEN9_THREAD_NORMAL 0 832#define GEN9_THREAD_ATOMIC 1 833#define GEN9_THREAD_SWITCH 2 834 835#define GEN9_VERTICAL_STRIDE_0 0 836#define GEN9_VERTICAL_STRIDE_1 1 837#define GEN9_VERTICAL_STRIDE_2 2 838#define GEN9_VERTICAL_STRIDE_4 3 839#define GEN9_VERTICAL_STRIDE_8 4 840#define GEN9_VERTICAL_STRIDE_16 5 841#define GEN9_VERTICAL_STRIDE_32 6 842#define GEN9_VERTICAL_STRIDE_64 7 843#define GEN9_VERTICAL_STRIDE_128 8 844#define GEN9_VERTICAL_STRIDE_256 9 845#define GEN9_VERTICAL_STRIDE_ONE_DIMENSIONAL 0xF 846 847#define GEN9_WIDTH_1 0 848#define GEN9_WIDTH_2 1 849#define GEN9_WIDTH_4 2 850#define GEN9_WIDTH_8 3 851#define GEN9_WIDTH_16 4 852 853#define GEN9_STATELESS_BUFFER_BOUNDARY_1K 0 854#define GEN9_STATELESS_BUFFER_BOUNDARY_2K 1 855#define GEN9_STATELESS_BUFFER_BOUNDARY_4K 2 856#define GEN9_STATELESS_BUFFER_BOUNDARY_8K 3 857#define GEN9_STATELESS_BUFFER_BOUNDARY_16K 4 858#define GEN9_STATELESS_BUFFER_BOUNDARY_32K 5 859#define GEN9_STATELESS_BUFFER_BOUNDARY_64K 6 860#define GEN9_STATELESS_BUFFER_BOUNDARY_128K 7 861#define GEN9_STATELESS_BUFFER_BOUNDARY_256K 8 862#define GEN9_STATELESS_BUFFER_BOUNDARY_512K 9 863#define GEN9_STATELESS_BUFFER_BOUNDARY_1M 10 864#define GEN9_STATELESS_BUFFER_BOUNDARY_2M 11 865 866#define GEN9_POLYGON_FACING_FRONT 0 867#define GEN9_POLYGON_FACING_BACK 1 868 869#define GEN9_MESSAGE_TARGET_NULL 0 870#define GEN9_MESSAGE_TARGET_MATH 1 871#define GEN9_MESSAGE_TARGET_SAMPLER 2 872#define GEN9_MESSAGE_TARGET_GATEWAY 3 873#define GEN9_MESSAGE_TARGET_DATAPORT_READ 4 874#define GEN9_MESSAGE_TARGET_DATAPORT_WRITE 5 875#define GEN9_MESSAGE_TARGET_URB 6 876#define GEN9_MESSAGE_TARGET_THREAD_SPAWNER 7 877 878#define GEN9_SAMPLER_RETURN_FORMAT_FLOAT32 0 879#define GEN9_SAMPLER_RETURN_FORMAT_UINT32 2 880#define GEN9_SAMPLER_RETURN_FORMAT_SINT32 3 881 882#define GEN9_SAMPLER_MESSAGE_SIMD8_SAMPLE 0 883#define GEN9_SAMPLER_MESSAGE_SIMD16_SAMPLE 0 884#define GEN9_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS 0 885#define GEN9_SAMPLER_MESSAGE_SIMD8_KILLPIX 1 886#define GEN9_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD 1 887#define GEN9_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD 1 888#define GEN9_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_GRADIENTS 2 889#define GEN9_SAMPLER_MESSAGE_SIMD8_SAMPLE_GRADIENTS 2 890#define GEN9_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE 0 891#define GEN9_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE 2 892#define GEN9_SAMPLER_MESSAGE_SIMD4X2_RESINFO 2 893#define GEN9_SAMPLER_MESSAGE_SIMD8_RESINFO 2 894#define GEN9_SAMPLER_MESSAGE_SIMD16_RESINFO 2 895#define GEN9_SAMPLER_MESSAGE_SIMD4X2_LD 3 896#define GEN9_SAMPLER_MESSAGE_SIMD8_LD 3 897#define GEN9_SAMPLER_MESSAGE_SIMD16_LD 3 898 899#define GEN9_DATAPORT_OWORD_BLOCK_1_OWORDLOW 0 900#define GEN9_DATAPORT_OWORD_BLOCK_1_OWORDHIGH 1 901#define GEN9_DATAPORT_OWORD_BLOCK_2_OWORDS 2 902#define GEN9_DATAPORT_OWORD_BLOCK_4_OWORDS 3 903#define GEN9_DATAPORT_OWORD_BLOCK_8_OWORDS 4 904 905#define GEN9_DATAPORT_OWORD_DUAL_BLOCK_1OWORD 0 906#define GEN9_DATAPORT_OWORD_DUAL_BLOCK_4OWORDS 2 907 908#define GEN9_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS 2 909#define GEN9_DATAPORT_DWORD_SCATTERED_BLOCK_16DWORDS 3 910 911#define GEN9_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ 0 912#define GEN9_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ 1 913#define GEN9_DATAPORT_READ_MESSAGE_DWORD_BLOCK_READ 2 914#define GEN9_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ 3 915 916#define GEN9_DATAPORT_READ_TARGET_DATA_CACHE 0 917#define GEN9_DATAPORT_READ_TARGET_RENDER_CACHE 1 918#define GEN9_DATAPORT_READ_TARGET_SAMPLER_CACHE 2 919 920#define GEN9_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE 0 921#define GEN9_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE_REPLICATED 1 922#define GEN9_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN01 2 923#define GEN9_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN23 3 924#define GEN9_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01 4 925 926#define GEN9_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE 0 927#define GEN9_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE 1 928#define GEN9_DATAPORT_WRITE_MESSAGE_DWORD_BLOCK_WRITE 2 929#define GEN9_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE 3 930#define GEN9_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE 4 931#define GEN9_DATAPORT_WRITE_MESSAGE_STREAMED_VERTEX_BUFFER_WRITE 5 932#define GEN9_DATAPORT_WRITE_MESSAGE_FLUSH_RENDER_CACHE 7 933 934#define GEN9_MATH_FUNCTION_INV 1 935#define GEN9_MATH_FUNCTION_LOG 2 936#define GEN9_MATH_FUNCTION_EXP 3 937#define GEN9_MATH_FUNCTION_SQRT 4 938#define GEN9_MATH_FUNCTION_RSQ 5 939#define GEN9_MATH_FUNCTION_SIN 6 /* was 7 */ 940#define GEN9_MATH_FUNCTION_COS 7 /* was 8 */ 941#define GEN9_MATH_FUNCTION_SINCOS 8 /* was 6 */ 942#define GEN9_MATH_FUNCTION_TAN 9 943#define GEN9_MATH_FUNCTION_POW 10 944#define GEN9_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER 11 945#define GEN9_MATH_FUNCTION_INT_DIV_QUOTIENT 12 946#define GEN9_MATH_FUNCTION_INT_DIV_REMAINDER 13 947 948#define GEN9_MATH_INTEGER_UNSIGNED 0 949#define GEN9_MATH_INTEGER_SIGNED 1 950 951#define GEN9_MATH_PRECISION_FULL 0 952#define GEN9_MATH_PRECISION_PARTIAL 1 953 954#define GEN9_MATH_SATURATE_NONE 0 955#define GEN9_MATH_SATURATE_SATURATE 1 956 957#define GEN9_MATH_DATA_VECTOR 0 958#define GEN9_MATH_DATA_SCALAR 1 959 960#define GEN9_URB_OPCODE_WRITE 0 961 962#define GEN9_URB_SWIZZLE_NONE 0 963#define GEN9_URB_SWIZZLE_INTERLEAVE 1 964#define GEN9_URB_SWIZZLE_TRANSPOSE 2 965 966#define GEN9_SCRATCH_SPACE_SIZE_1K 0 967#define GEN9_SCRATCH_SPACE_SIZE_2K 1 968#define GEN9_SCRATCH_SPACE_SIZE_4K 2 969#define GEN9_SCRATCH_SPACE_SIZE_8K 3 970#define GEN9_SCRATCH_SPACE_SIZE_16K 4 971#define GEN9_SCRATCH_SPACE_SIZE_32K 5 972#define GEN9_SCRATCH_SPACE_SIZE_64K 6 973#define GEN9_SCRATCH_SPACE_SIZE_128K 7 974#define GEN9_SCRATCH_SPACE_SIZE_256K 8 975#define GEN9_SCRATCH_SPACE_SIZE_512K 9 976#define GEN9_SCRATCH_SPACE_SIZE_1M 10 977#define GEN9_SCRATCH_SPACE_SIZE_2M 11 978 979struct gen9_blend_state { 980 struct { 981 /* 00 */ uint32_t pad:19; 982 /* 19 */ uint32_t y_dither_offset:2; 983 /* 21 */ uint32_t x_dither_offset:2; 984 /* 23 */ uint32_t color_dither_enable:1; 985 /* 24 */ uint32_t alpha_test_function:3; 986 /* 27 */ uint32_t alpha_test:1; 987 /* 28 */ uint32_t alpha_to_coverage_dither:1; 988 /* 29 */ uint32_t alpha_to_one:1; 989 /* 30 */ uint32_t ia_blend:1; 990 /* 31 */ uint32_t alpha_to_coverage:1; 991 } common; 992 993 struct { 994 /* 00 */ uint32_t write_disable_blue:1; 995 /* 01 */ uint32_t write_disable_green:1; 996 /* 02 */ uint32_t write_disable_red:1; 997 /* 03 */ uint32_t write_disable_alpha:1; 998 /* 04 */ uint32_t pad0:1; 999 /* 05 */ uint32_t alpha_blend_function:3; 1000 /* 08 */ uint32_t dest_alpha_blend_factor:5; 1001 /* 13 */ uint32_t source_alpha_blend_factor:5; 1002 /* 18 */ uint32_t color_blend_function:3; 1003 /* 21 */ uint32_t dest_blend_factor:5; 1004 /* 26 */ uint32_t source_blend_factor:5; 1005 /* 31 */ uint32_t color_blend:1; 1006 /* 32 */ uint32_t post_blend_clamp:1; 1007 /* 33 */ uint32_t pre_blend_clamp:1; 1008 /* 34 */ uint32_t color_clamp_range:2; 1009 /* 36 */ uint32_t pre_blend_source_only_clamp:1; 1010 /* 37 */ uint32_t pad1:22; 1011 /* 59 */ uint32_t logic_op_function:4; 1012 /* 63 */ uint32_t logic_op:1; 1013 } rt; 1014}; 1015 1016struct gen9_color_calc_state { 1017 struct { 1018 /* 00 */ uint32_t alpha_test_format:1; 1019 /* 01 */ uint32_t pad0:14; 1020 /* 15 */ uint32_t round_disable:1; 1021 /* 16 */ uint32_t bf_stencil_ref:8; 1022 /* 24 */ uint32_t stencil_ref:8; 1023 } cc0; 1024 1025 union { 1026 float alpha_ref_f; 1027 struct { 1028 uint32_t ui:8; 1029 uint32_t pad0:24; 1030 } alpha_ref_fi; 1031 } cc1; 1032 1033 float constant_r; 1034 float constant_g; 1035 float constant_b; 1036 float constant_a; 1037}; 1038 1039struct gen9_sampler_state { 1040 struct { 1041 /* 00 */ unsigned int aniso_algorithm:1; 1042 /* 01 */ unsigned int lod_bias:13; 1043 /* 14 */ unsigned int min_filter:3; 1044 /* 17 */ unsigned int mag_filter:3; 1045 /* 20 */ unsigned int mip_filter:2; 1046 /* 22 */ unsigned int base_level:5; 1047 /* 27 */ unsigned int lod_preclamp:2; 1048 /* 29 */ unsigned int default_color_mode:1; 1049 /* 30 */ unsigned int flexible_filter_clamp:1; 1050 /* 31 */ unsigned int disable:1; 1051 } ss0; 1052 1053 struct { 1054 /* 00 */ unsigned int cube_control_mode:1; 1055 /* 01 */ unsigned int shadow_function:3; 1056 /* 04 */ unsigned int chroma_key_mode:1; 1057 /* 05 */ unsigned int chroma_key_index:2; 1058 /* 07 */ unsigned int chroma_key_enable:1; 1059 /* 08 */ unsigned int max_lod:12; 1060 /* 20 */ unsigned int min_lod:12; 1061 } ss1; 1062 1063 struct { 1064 unsigned int pad:6; 1065 unsigned int default_color_pointer:26; 1066 } ss2; 1067 1068 struct { 1069 /* 00 */ unsigned int r_wrap_mode:3; 1070 /* 03 */ unsigned int t_wrap_mode:3; 1071 /* 06 */ unsigned int s_wrap_mode:3; 1072 /* 09 */ unsigned int pad:1; 1073 /* 10 */ unsigned int non_normalized_coord:1; 1074 /* 11 */ unsigned int trilinear_quality:2; 1075 /* 13 */ unsigned int address_round:6; 1076 /* 19 */ unsigned int max_aniso:3; 1077 /* 22 */ unsigned int pad0:2; 1078 /* 24 */ unsigned int non_separable_filter:8; 1079 } ss3; 1080}; 1081 1082/* Surface state DW0 */ 1083#define SURFACE_RC_READ_WRITE (1 << 8) 1084#define SURFACE_TILED (1 << 13) 1085#define SURFACE_TILED_Y (1 << 12) 1086#define SURFACE_FORMAT_SHIFT 18 1087#define SURFACE_VALIGN_1 (0 << 16) /* reserved! */ 1088#define SURFACE_VALIGN_4 (1 << 16) 1089#define SURFACE_VALIGN_8 (2 << 16) 1090#define SURFACE_VALIGN_16 (3 << 16) 1091#define SURFACE_HALIGN_1 (0 << 14) /* reserved! */ 1092#define SURFACE_HALIGN_4 (1 << 14) 1093#define SURFACE_HALIGN_8 (2 << 14) 1094#define SURFACE_HALIGN_16 (3 << 14) 1095#define SURFACE_TYPE_SHIFT 29 1096 1097/* Surface state DW2 */ 1098#define SURFACE_HEIGHT_SHIFT 16 1099#define SURFACE_WIDTH_SHIFT 0 1100 1101/* Surface state DW3 */ 1102#define SURFACE_DEPTH_SHIFT 21 1103#define SURFACE_PITCH_SHIFT 0 1104 1105#define SWIZZLE_ZERO 0 1106#define SWIZZLE_ONE 1 1107#define SWIZZLE_RED 4 1108#define SWIZZLE_GREEN 5 1109#define SWIZZLE_BLUE 6 1110#define SWIZZLE_ALPHA 7 1111#define __SURFACE_SWIZZLE(r,g,b,a) \ 1112 ((a) << 16 | (b) << 19 | (g) << 22 | (r) << 25) 1113#define SURFACE_SWIZZLE(r,g,b,a) \ 1114 __SURFACE_SWIZZLE(SWIZZLE_##r, SWIZZLE_##g, SWIZZLE_##b, SWIZZLE_##a) 1115 1116typedef enum { 1117 SAMPLER_FILTER_NEAREST = 0, 1118 SAMPLER_FILTER_BILINEAR, 1119 FILTER_COUNT 1120} sampler_filter_t; 1121 1122typedef enum { 1123 SAMPLER_EXTEND_NONE = 0, 1124 SAMPLER_EXTEND_REPEAT, 1125 SAMPLER_EXTEND_PAD, 1126 SAMPLER_EXTEND_REFLECT, 1127 EXTEND_COUNT 1128} sampler_extend_t; 1129 1130#endif 1131