142542f5fSchristos#ifndef GEN8_RENDER_H 242542f5fSchristos#define GEN8_RENDER_H 342542f5fSchristos 442542f5fSchristos#define INTEL_MASK(high, low) (((1 << ((high) - (low) + 1)) - 1) << (low)) 542542f5fSchristos 642542f5fSchristos#define GEN8_3D(pipeline,op,sub) \ 742542f5fSchristos ((3 << 29) | ((pipeline) << 27) | ((op) << 24) | ((sub) << 16)) 842542f5fSchristos 942542f5fSchristos#define GEN8_STATE_BASE_ADDRESS GEN8_3D(0, 1, 1) 1042542f5fSchristos# define BASE_ADDRESS_MODIFY (1 << 0) 1142542f5fSchristos 1242542f5fSchristos#define GEN8_STATE_SIP GEN8_3D(0, 1, 2) 1342542f5fSchristos 1442542f5fSchristos#define GEN8_3DSTATE_VF_STATISTICS GEN8_3D(1, 0, 0xb) 1542542f5fSchristos#define GEN8_PIPELINE_SELECT GEN8_3D(1, 1, 4) 1642542f5fSchristos# define PIPELINE_SELECT_3D 0 1742542f5fSchristos# define PIPELINE_SELECT_MEDIA 1 1842542f5fSchristos 1942542f5fSchristos#define GEN8_MEDIA_STATE_POINTERS GEN8_3D(2, 0, 0) 2042542f5fSchristos#define GEN8_MEDIA_OBJECT GEN8_3D(2, 1, 0) 2142542f5fSchristos 2242542f5fSchristos#define GEN8_3DSTATE_CLEAR_PARAMS GEN8_3D(3, 0, 0x04) 2342542f5fSchristos#define GEN8_3DSTATE_DEPTH_BUFFER GEN8_3D(3, 0, 0x05) 2442542f5fSchristos# define DEPTH_BUFFER_TYPE_SHIFT 29 2542542f5fSchristos# define DEPTH_BUFFER_FORMAT_SHIFT 18 2613496ba1Ssnj 2742542f5fSchristos#define GEN8_3DSTATE_STENCIL_BUFFER GEN8_3D(3, 0, 0x06) 2842542f5fSchristos#define GEN8_3DSTATE_HIER_DEPTH_BUFFER GEN8_3D(3, 0, 0x07) 2942542f5fSchristos#define GEN8_3DSTATE_VERTEX_BUFFERS GEN8_3D(3, 0, 0x08) 3042542f5fSchristos# define VB_INDEX_SHIFT 26 3142542f5fSchristos# define VB_MODIFY_ENABLE (1 << 14) 3242542f5fSchristos#define GEN8_3DSTATE_VERTEX_ELEMENTS GEN8_3D(3, 0, 0x09) 3342542f5fSchristos# define VE_INDEX_SHIFT 26 3442542f5fSchristos# define VE_VALID (1 << 25) 3542542f5fSchristos# define VE_FORMAT_SHIFT 16 3642542f5fSchristos# define VE_OFFSET_SHIFT 0 3742542f5fSchristos# define VE_COMPONENT_0_SHIFT 28 3842542f5fSchristos# define VE_COMPONENT_1_SHIFT 24 3942542f5fSchristos# define VE_COMPONENT_2_SHIFT 20 4042542f5fSchristos# define VE_COMPONENT_3_SHIFT 16 4142542f5fSchristos#define GEN8_3DSTATE_INDEX_BUFFER GEN8_3D(3, 0, 0x0a) 4242542f5fSchristos#define GEN8_3DSTATE_VF GEN8_3D(3, 0, 0x0c) 4342542f5fSchristos 4442542f5fSchristos#define GEN8_3DSTATE_MULTISAMPLE GEN8_3D(3, 0, 0x0d) 4542542f5fSchristos/* DW1 */ 4642542f5fSchristos# define MULTISAMPLE_PIXEL_LOCATION_CENTER (0 << 4) 4742542f5fSchristos# define MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT (1 << 4) 4842542f5fSchristos# define MULTISAMPLE_NUMSAMPLES_1 (0 << 1) 4942542f5fSchristos# define MULTISAMPLE_NUMSAMPLES_4 (2 << 1) 5042542f5fSchristos# define MULTISAMPLE_NUMSAMPLES_8 (3 << 1) 5142542f5fSchristos 5242542f5fSchristos#define GEN8_3DSTATE_CC_STATE_POINTERS GEN8_3D(3, 0, 0x0e) 5342542f5fSchristos#define GEN8_3DSTATE_SCISSOR_STATE_POINTERS GEN8_3D(3, 0, 0x0f) 5442542f5fSchristos 5542542f5fSchristos#define GEN8_3DSTATE_VS GEN8_3D(3, 0, 0x10) 5642542f5fSchristos#define GEN8_3DSTATE_GS GEN8_3D(3, 0, 0x11) 5742542f5fSchristos#define GEN8_3DSTATE_CLIP GEN8_3D(3, 0, 0x12) 5842542f5fSchristos#define GEN8_3DSTATE_SF GEN8_3D(3, 0, 0x13) 5942542f5fSchristos# define SF_TRI_PROVOKE_SHIFT 29 6042542f5fSchristos# define SF_LINE_PROVOKE_SHIFT 27 6142542f5fSchristos# define SF_FAN_PROVOKE_SHIFT 25 6242542f5fSchristos 6342542f5fSchristos#define GEN8_3DSTATE_WM GEN8_3D(3, 0, 0x14) 6442542f5fSchristos/* DW1 */ 6542542f5fSchristos# define WM_STATISTICS_ENABLE (1 << 31) 6642542f5fSchristos# define WM_DEPTH_CLEAR (1 << 30) 6742542f5fSchristos# define WM_DEPTH_RESOLVE (1 << 28) 6842542f5fSchristos# define WM_HIERARCHICAL_DEPTH_RESOLVE (1 << 27) 6942542f5fSchristos# define WM_KILL_ENABLE (1 << 25) 7042542f5fSchristos# define WM_POSITION_ZW_PIXEL (0 << 17) 7142542f5fSchristos# define WM_POSITION_ZW_CENTROID (2 << 17) 7242542f5fSchristos# define WM_POSITION_ZW_SAMPLE (3 << 17) 7342542f5fSchristos# define WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 16) 7442542f5fSchristos# define WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 15) 7542542f5fSchristos# define WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 14) 7642542f5fSchristos# define WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 13) 7742542f5fSchristos# define WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 12) 7842542f5fSchristos# define WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 11) 7942542f5fSchristos# define WM_LINE_END_CAP_AA_WIDTH_0_5 (0 << 8) 8042542f5fSchristos# define WM_LINE_END_CAP_AA_WIDTH_1_0 (1 << 8) 8142542f5fSchristos# define WM_LINE_END_CAP_AA_WIDTH_2_0 (2 << 8) 8242542f5fSchristos# define WM_LINE_END_CAP_AA_WIDTH_4_0 (3 << 8) 8342542f5fSchristos# define WM_LINE_AA_WIDTH_0_5 (0 << 6) 8442542f5fSchristos# define WM_LINE_AA_WIDTH_1_0 (1 << 6) 8542542f5fSchristos# define WM_LINE_AA_WIDTH_2_0 (2 << 6) 8642542f5fSchristos# define WM_LINE_AA_WIDTH_4_0 (3 << 6) 8742542f5fSchristos# define WM_POLYGON_STIPPLE_ENABLE (1 << 4) 8842542f5fSchristos# define WM_LINE_STIPPLE_ENABLE (1 << 3) 8942542f5fSchristos# define WM_POINT_RASTRULE_UPPER_RIGHT (1 << 2) 9042542f5fSchristos# define WM_MSRAST_OFF_PIXEL (0 << 0) 9142542f5fSchristos# define WM_MSRAST_OFF_PATTERN (1 << 0) 9242542f5fSchristos# define WM_MSRAST_ON_PIXEL (2 << 0) 9342542f5fSchristos# define WM_MSRAST_ON_PATTERN (3 << 0) 9442542f5fSchristos 9542542f5fSchristos#define GEN8_3DSTATE_CONSTANT_VS GEN8_3D(3, 0, 0x15) 9642542f5fSchristos#define GEN8_3DSTATE_CONSTANT_GS GEN8_3D(3, 0, 0x16) 9742542f5fSchristos#define GEN8_3DSTATE_CONSTANT_PS GEN8_3D(3, 0, 0x17) 9842542f5fSchristos 9942542f5fSchristos#define GEN8_3DSTATE_SAMPLE_MASK GEN8_3D(3, 0, 0x18) 10042542f5fSchristos 10142542f5fSchristos#define GEN8_3DSTATE_CONSTANT_HS GEN8_3D(3, 0, 0x19) 10242542f5fSchristos#define GEN8_3DSTATE_CONSTANT_DS GEN8_3D(3, 0, 0x1a) 10342542f5fSchristos 10442542f5fSchristos#define GEN8_3DSTATE_HS GEN8_3D(3, 0, 0x1b) 10542542f5fSchristos#define GEN8_3DSTATE_TE GEN8_3D(3, 0, 0x1c) 10642542f5fSchristos#define GEN8_3DSTATE_DS GEN8_3D(3, 0, 0x1d) 10742542f5fSchristos#define GEN8_3DSTATE_STREAMOUT GEN8_3D(3, 0, 0x1e) 10842542f5fSchristos 10942542f5fSchristos#define GEN8_3DSTATE_SBE GEN8_3D(3, 0, 0x1f) 11042542f5fSchristos/* DW1 */ 11142542f5fSchristos# define SBE_FORCE_VERTEX_URB_READ_LENGTH (1<<29) 11242542f5fSchristos# define SBE_FORCE_VERTEX_URB_READ_OFFSET (1<<28) 11342542f5fSchristos# define SBE_NUM_OUTPUTS_SHIFT 22 11442542f5fSchristos# define SBE_SWIZZLE_ENABLE (1 << 21) 11542542f5fSchristos# define SBE_POINT_SPRITE_LOWERLEFT (1 << 20) 11642542f5fSchristos# define SBE_URB_ENTRY_READ_LENGTH_SHIFT 11 11713496ba1Ssnj# define SBE_URB_ENTRY_READ_OFFSET_SHIFT 5 11842542f5fSchristos 11942542f5fSchristos#define GEN8_3DSTATE_PS GEN8_3D(3, 0, 0x20) 12013496ba1Ssnj/* DW1:DW2 kernel pointer */ 12113496ba1Ssnj/* DW3 */ 12242542f5fSchristos# define PS_SPF_MODE (1 << 31) 12342542f5fSchristos# define PS_VECTOR_MASK_ENABLE (1 << 30) 12442542f5fSchristos# define PS_SAMPLER_COUNT_SHIFT 27 12542542f5fSchristos# define PS_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 12642542f5fSchristos# define PS_FLOATING_POINT_MODE_IEEE_754 (0 << 16) 12742542f5fSchristos# define PS_FLOATING_POINT_MODE_ALT (1 << 16) 12813496ba1Ssnj/* DW4:DW5: scratch space */ 12913496ba1Ssnj/* DW6 */ 13042542f5fSchristos# define PS_MAX_THREADS_SHIFT 23 13142542f5fSchristos# define PS_MAX_THREADS (62 << PS_MAX_THREADS_SHIFT) 13242542f5fSchristos# define PS_PUSH_CONSTANT_ENABLE (1 << 11) 13342542f5fSchristos# define PS_RENDER_TARGET_CLEAR (1 << 8) 13442542f5fSchristos# define PS_RENDER_TARGET_RESOLVE (1 << 6) 13542542f5fSchristos# define PS_POSOFFSET_NONE (0 << 3) 13642542f5fSchristos# define PS_POSOFFSET_CENTROID (2 << 3) 13742542f5fSchristos# define PS_POSOFFSET_SAMPLE (3 << 3) 13842542f5fSchristos# define PS_32_DISPATCH_ENABLE (1 << 2) 13942542f5fSchristos# define PS_16_DISPATCH_ENABLE (1 << 1) 14042542f5fSchristos# define PS_8_DISPATCH_ENABLE (1 << 0) 14113496ba1Ssnj/* DW7 */ 14242542f5fSchristos# define PS_DISPATCH_START_GRF_SHIFT_0 16 14342542f5fSchristos# define PS_DISPATCH_START_GRF_SHIFT_1 8 14442542f5fSchristos# define PS_DISPATCH_START_GRF_SHIFT_2 0 14513496ba1Ssnj/* DW8:D9: kernel 1 pointer */ 14613496ba1Ssnj/* DW10:D11: kernel 2 pointer */ 14742542f5fSchristos 14842542f5fSchristos#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP GEN8_3D(3, 0, 0x21) 14942542f5fSchristos#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC GEN8_3D(3, 0, 0x23) 15042542f5fSchristos 15142542f5fSchristos#define GEN8_3DSTATE_BLEND_STATE_POINTERS GEN8_3D(3, 0, 0x24) 15242542f5fSchristos 15342542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS GEN8_3D(3, 0, 0x26) 15442542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS GEN8_3D(3, 0, 0x27) 15542542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS GEN8_3D(3, 0, 0x28) 15642542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS GEN8_3D(3, 0, 0x29) 15742542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS GEN8_3D(3, 0, 0x2a) 15842542f5fSchristos 15942542f5fSchristos#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS GEN8_3D(3, 0, 0x2b) 16042542f5fSchristos#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS GEN8_3D(3, 0, 0x2c) 16142542f5fSchristos#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS GEN8_3D(3, 0, 0x2d) 16242542f5fSchristos#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS GEN8_3D(3, 0, 0x2e) 16342542f5fSchristos#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS GEN8_3D(3, 0, 0x2f) 16442542f5fSchristos 16542542f5fSchristos#define GEN8_3DSTATE_URB_VS GEN8_3D(3, 0, 0x30) 16642542f5fSchristos#define GEN8_3DSTATE_URB_HS GEN8_3D(3, 0, 0x31) 16742542f5fSchristos#define GEN8_3DSTATE_URB_DS GEN8_3D(3, 0, 0x32) 16842542f5fSchristos#define GEN8_3DSTATE_URB_GS GEN8_3D(3, 0, 0x33) 16942542f5fSchristos/* DW1 */ 17042542f5fSchristos# define URB_ENTRY_NUMBER_SHIFT 0 17142542f5fSchristos# define URB_ENTRY_SIZE_SHIFT 16 17242542f5fSchristos# define URB_STARTING_ADDRESS_SHIFT 25 17342542f5fSchristos 17442542f5fSchristos#define GEN8_3DSTATE_GATHER_CONSTANT_VS GEN8_3D(3, 0, 0x34) 17542542f5fSchristos#define GEN8_3DSTATE_GATHER_CONSTANT_GS GEN8_3D(3, 0, 0x35) 17642542f5fSchristos#define GEN8_3DSTATE_GATHER_CONSTANT_HS GEN8_3D(3, 0, 0x36) 17742542f5fSchristos#define GEN8_3DSTATE_GATHER_CONSTANT_DS GEN8_3D(3, 0, 0x37) 17842542f5fSchristos#define GEN8_3DSTATE_GATHER_CONSTANT_PS GEN8_3D(3, 0, 0x38) 17942542f5fSchristos 18042542f5fSchristos#define GEN8_3DSTATE_DX9_CONSTANTF_VS GEN8_3D(3, 0, 0x39) 18142542f5fSchristos#define GEN8_3DSTATE_DX9_CONSTANTF_PS GEN8_3D(3, 0, 0x3a) 18242542f5fSchristos#define GEN8_3DSTATE_DX9_CONSTANTI_VS GEN8_3D(3, 0, 0x3b) 18342542f5fSchristos#define GEN8_3DSTATE_DX9_CONSTANTI_PS GEN8_3D(3, 0, 0x3c) 18442542f5fSchristos#define GEN8_3DSTATE_DX9_CONSTANTB_VS GEN8_3D(3, 0, 0x3d) 18542542f5fSchristos#define GEN8_3DSTATE_DX9_CONSTANTB_PS GEN8_3D(3, 0, 0x3e) 18642542f5fSchristos#define GEN8_3DSTATE_DX9_LOCAL_VALID_VS GEN8_3D(3, 0, 0x3f) 18742542f5fSchristos#define GEN8_3DSTATE_DX9_LOCAL_VALID_PS GEN8_3D(3, 0, 0x40) 18842542f5fSchristos#define GEN8_3DSTATE_DX9_GENERATE_ACTIVE_VS GEN8_3D(3, 0, 0x41) 18942542f5fSchristos#define GEN8_3DSTATE_DX9_GENERATE_ACTIVE_PS GEN8_3D(3, 0, 0x42) 19042542f5fSchristos 19142542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS GEN8_3D(3, 0, 0x43) 19242542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS GEN8_3D(3, 0, 0x44) 19342542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS GEN8_3D(3, 0, 0x45) 19442542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS GEN8_3D(3, 0, 0x46) 19542542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS GEN8_3D(3, 0, 0x47) 19642542f5fSchristos 19742542f5fSchristos#define GEN8_3DSTATE_VF_INSTANCING GEN8_3D(3, 0, 0x49) 19842542f5fSchristos#define GEN8_3DSTATE_VF_SGVS GEN8_3D(3, 0, 0x4a) 19942542f5fSchristos# define SGVS_ENABLE_INSTANCE_ID (1 << 31) 20042542f5fSchristos# define SGVS_INSTANCE_ID_COMPONENT_SHIFT 29 20142542f5fSchristos# define SGVS_INSTANCE_ID_ELEMENT_OFFSET_SHIFT 16 20242542f5fSchristos# define SGVS_ENABLE_VERTEX_ID (1 << 15) 20342542f5fSchristos# define SGVS_VERTEX_ID_COMPONENT_SHIFT 13 20442542f5fSchristos# define SGVS_VERTEX_ID_ELEMENT_OFFSET_SHIFT 0 20542542f5fSchristos#define GEN8_3DSTATE_VF_TOPOLOGY GEN8_3D(3, 0, 0x4b) 20642542f5fSchristos# define POINTLIST 0x01 20742542f5fSchristos# define LINELIST 0x02 20842542f5fSchristos# define LINESTRIP 0x03 20942542f5fSchristos# define TRILIST 0x04 21042542f5fSchristos# define TRISTRIP 0x05 21142542f5fSchristos# define TRIFAN 0x06 21242542f5fSchristos# define QUADLIST 0x07 21342542f5fSchristos# define QUADSTRIP 0x08 21442542f5fSchristos# define LINELIST_ADJ 0x09 21542542f5fSchristos# define LINESTRIP_ADJ 0x0A 21642542f5fSchristos# define TRILIST_ADJ 0x0B 21742542f5fSchristos# define TRISTRIP_ADJ 0x0C 21842542f5fSchristos# define TRISTRIP_REVERSE 0x0D 21942542f5fSchristos# define POLYGON 0x0E 22042542f5fSchristos# define RECTLIST 0x0F 22142542f5fSchristos# define LINELOOP 0x10 22242542f5fSchristos# define POINTLIST_BF 0x11 22342542f5fSchristos# define LINESTRIP_CONT 0x12 22442542f5fSchristos# define LINESTRIP_BF 0x13 22542542f5fSchristos# define LINESTRIP_CONT_BF 0x14 22642542f5fSchristos# define TRIFAN_NOSTIPPLE 0x15 22742542f5fSchristos 22842542f5fSchristos#define GEN8_3DSTATE_WM_CHROMAKEY GEN8_3D(3, 0, 0x4c) 22942542f5fSchristos 23042542f5fSchristos#define GEN8_3DSTATE_PS_BLEND GEN8_3D(3, 0, 0x4d) 23142542f5fSchristos# define PS_BLEND_ALPHA_TO_COVERAGE_ENABLE (1 << 31) 23242542f5fSchristos# define PS_BLEND_HAS_WRITEABLE_RT (1 << 30) 23342542f5fSchristos# define PS_BLEND_COLOR_BLEND_ENABLE (1 << 29) 23442542f5fSchristos# define PS_BLEND_SRC_ALPHA_SHIFT 24 23542542f5fSchristos# define PS_BLEND_DST_ALPHA_SHIFT 19 23642542f5fSchristos# define PS_BLEND_SRC_SHIFT 14 23742542f5fSchristos# define PS_BLEND_DST_SHIFT 9 23842542f5fSchristos# define PS_BLEND_ALPHA_TEST_ENABLE (1 << 8) 23942542f5fSchristos# define PS_BLEND_INDEPENDENT_ALPHA_BLEND_ENABLE (1 << 7) 24042542f5fSchristos 24142542f5fSchristos#define GEN8_3DSTATE_WM_DEPTH_STENCIL GEN8_3D(3, 0, 0x4e) 24242542f5fSchristos/* DW1 */ 24342542f5fSchristos# define WM_DS_STENCIL_TEST_MASK_MASK INTEL_MASK(31, 24) 24442542f5fSchristos# define WM_DS_STENCIL_TEST_MASK_SHIFT 24 24542542f5fSchristos# define WM_DS_STENCIL_WRITE_MASK_MASK INTEL_MASK(23, 16) 24642542f5fSchristos# define WM_DS_STENCIL_WRITE_MASK_SHIFT 16 24742542f5fSchristos# define WM_DS_BF_STENCIL_TEST_MASK_MASK INTEL_MASK(15, 8) 24842542f5fSchristos# define WM_DS_BF_STENCIL_TEST_MASK_SHIFT 8 24942542f5fSchristos# define WM_DS_BF_STENCIL_WRITE_MASK_MASK INTEL_MASK(7, 0) 25042542f5fSchristos# define WM_DS_DEPTH_FUNC_SHIFT 5 25142542f5fSchristos# define WM_DS_DOUBLE_SIDED_STENCIL_ENABLE (1 << 4) 25242542f5fSchristos# define WM_DS_STENCIL_TEST_ENABLE (1 << 3) 25342542f5fSchristos# define WM_DS_STENCIL_BUFFER_WRITE_ENABLE (1 << 2) 25442542f5fSchristos# define WM_DS_DEPTH_TEST_ENABLE (1 << 1) 25542542f5fSchristos# define WM_DS_DEPTH_BUFFER_WRITE_ENABLE (1 << 0) 25642542f5fSchristos/* DW2 */ 25742542f5fSchristos# define WM_DS_STENCIL_TEST_MASK_MASK INTEL_MASK(31, 24) 25842542f5fSchristos# define WM_DS_STENCIL_TEST_MASK_SHIFT 24 25942542f5fSchristos# define WM_DS_STENCIL_WRITE_MASK_MASK INTEL_MASK(23, 16) 26042542f5fSchristos# define WM_DS_STENCIL_WRITE_MASK_SHIFT 16 26142542f5fSchristos# define WM_DS_BF_STENCIL_TEST_MASK_MASK INTEL_MASK(15, 8) 26242542f5fSchristos# define WM_DS_BF_STENCIL_TEST_MASK_SHIFT 8 26342542f5fSchristos# define WM_DS_BF_STENCIL_WRITE_MASK_MASK INTEL_MASK(7, 0) 26442542f5fSchristos# define WM_DS_BF_STENCIL_WRITE_MASK_SHIFT 0 26542542f5fSchristos 26642542f5fSchristos#define GEN8_3DSTATE_PS_EXTRA GEN8_3D(3, 0, 0x4f) 26742542f5fSchristos# define PSX_PIXEL_SHADER_VALID (1 << 31) 26842542f5fSchristos# define PSX_PIXEL_SHADER_NO_RT_WRITE (1 << 30) 26942542f5fSchristos# define PSX_OMASK_TO_RENDER_TARGET (1 << 29) 27042542f5fSchristos# define PSX_KILL_ENABLE (1 << 28) 27142542f5fSchristos# define PSX_PSCDEPTH_OFF (0 << 26) 27242542f5fSchristos# define PSX_PSCDEPTH_ON (1 << 26) 27342542f5fSchristos# define PSX_PSCDEPTH_ON_GE (2 << 26) 27442542f5fSchristos# define PSX_PSCDEPTH_ON_LE (3 << 26) 27542542f5fSchristos# define PSX_FORCE_COMPUTED_DEPTH (1 << 25) 27642542f5fSchristos# define PSX_USES_SOURCE_DEPTH (1 << 24) 27742542f5fSchristos# define PSX_USES_SOURCE_W (1 << 23) 27842542f5fSchristos# define PSX_ATTRIBUTE_ENABLE (1 << 8) 27942542f5fSchristos# define PSX_SHADER_DISABLES_ALPHA_TO_COVERAGE (1 << 7) 28042542f5fSchristos# define PSX_SHADER_IS_PER_SAMPLE (1 << 6) 28142542f5fSchristos# define PSX_SHADER_HAS_UAV (1 << 2) 28242542f5fSchristos# define PSX_SHADER_USES_INPUT_COVERAGE_MASK (1 << 1) 28342542f5fSchristos 28442542f5fSchristos#define GEN8_3DSTATE_RASTER GEN8_3D(3, 0, 0x50) 28542542f5fSchristos/* DW1 */ 28642542f5fSchristos# define RASTER_FRONT_WINDING_CCW (1 << 21) 28742542f5fSchristos# define RASTER_CULL_BOTH (0 << 16) 28842542f5fSchristos# define RASTER_CULL_NONE (1 << 16) 28942542f5fSchristos# define RASTER_CULL_FRONT (2 << 16) 29042542f5fSchristos# define RASTER_CULL_BACK (3 << 16) 29142542f5fSchristos# define RASTER_SMOOTH_POINT_ENABLE (1 << 13) 29242542f5fSchristos# define RASTER_LINE_AA_ENABLE (1 << 2) 29342542f5fSchristos# define RASTER_VIEWPORT_Z_CLIP_TEST_ENABLE (1 << 0) 29442542f5fSchristos 29542542f5fSchristos#define GEN8_3DSTATE_SBE_SWIZ GEN8_3D(3, 0, 0x51) 29642542f5fSchristos#define GEN8_3DSTATE_WM_HZ_OP GEN8_3D(3, 0, 0x52) 29742542f5fSchristos 29842542f5fSchristos 29942542f5fSchristos#define GEN8_3DSTATE_DRAWING_RECTANGLE GEN8_3D(3, 1, 0x00) 30042542f5fSchristos#define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD GEN8_3D(3, 1, 0x02) 30142542f5fSchristos#define GEN8_3DSTATE_CHROMA_KEY GEN8_3D(3, 1, 0x04) 30242542f5fSchristos 30342542f5fSchristos#define GEN8_3DSTATE_POLY_STIPPLE_OFFSET GEN8_3D(3, 1, 0x06) 30442542f5fSchristos#define GEN8_3DSTATE_POLY_STIPPLE_PATTERN GEN8_3D(3, 1, 0x07) 30542542f5fSchristos#define GEN8_3DSTATE_LINE_STIPPLE GEN8_3D(3, 1, 0x08) 30642542f5fSchristos#define GEN8_3DSTATE_AA_LINE_PARAMS GEN8_3D(3, 1, 0x0a) 30742542f5fSchristos#define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1 GEN8_3D(3, 1, 0x0c) 30842542f5fSchristos#define GEN8_3DSTATE_MONOFILTER_SIZE GEN8_3D(3, 1, 0x11) 30942542f5fSchristos#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS GEN8_3D(3, 1, 0x12) 31042542f5fSchristos#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS GEN8_3D(3, 1, 0x13) 31142542f5fSchristos#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS GEN8_3D(3, 1, 0x14) 31242542f5fSchristos#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS GEN8_3D(3, 1, 0x15) 31342542f5fSchristos#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS GEN8_3D(3, 1, 0x16) 31442542f5fSchristos/* DW1 */ 31542542f5fSchristos# define PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16 31642542f5fSchristos# define PUSH_CONSTANT_BUFFER_SIZE_SHIFT 0 31742542f5fSchristos 31842542f5fSchristos#define GEN8_3DSTATE_SO_DECL_LIST GEN8_3D(3, 1, 0x17) 31942542f5fSchristos#define GEN8_3DSTATE_SO_BUFFER GEN8_3D(3, 1, 0x18) 32042542f5fSchristos#define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC GEN8_3D(3, 1, 0x19) 32142542f5fSchristos#define GEN8_3DSTATE_GATHER_BUFFER_POOL_ALLOC GEN8_3D(3, 1, 0x1a) 32242542f5fSchristos#define GEN8_3DSTATE_DX9_CONSTANT_BUFFER_POOL_ALLOC GEN8_3D(3, 1, 0x1b) 32342542f5fSchristos#define GEN8_3DSTATE_SAMPLE_PATTERN GEN8_3D(3, 1, 0x1c) 32442542f5fSchristos 32542542f5fSchristos 32642542f5fSchristos/* for GEN8_PIPE_CONTROL */ 32742542f5fSchristos#define GEN8_PIPE_CONTROL GEN8_3D(3, 2, 0) 32842542f5fSchristos#define PIPE_CONTROL_CS_STALL (1 << 20) 32942542f5fSchristos#define PIPE_CONTROL_NOWRITE (0 << 14) 33042542f5fSchristos#define PIPE_CONTROL_WRITE_QWORD (1 << 14) 33142542f5fSchristos#define PIPE_CONTROL_WRITE_DEPTH (2 << 14) 33242542f5fSchristos#define PIPE_CONTROL_WRITE_TIME (3 << 14) 33342542f5fSchristos#define PIPE_CONTROL_DEPTH_STALL (1 << 13) 33442542f5fSchristos#define PIPE_CONTROL_WC_FLUSH (1 << 12) 33542542f5fSchristos#define PIPE_CONTROL_IS_FLUSH (1 << 11) 33642542f5fSchristos#define PIPE_CONTROL_TC_FLUSH (1 << 10) 33742542f5fSchristos#define PIPE_CONTROL_NOTIFY_ENABLE (1 << 8) 338fe8aea9eSmrg#define PIPE_CONTROL_FLUSH (1 << 7) 33942542f5fSchristos#define PIPE_CONTROL_GLOBAL_GTT (1 << 2) 34042542f5fSchristos#define PIPE_CONTROL_LOCAL_PGTT (0 << 2) 34142542f5fSchristos#define PIPE_CONTROL_STALL_AT_SCOREBOARD (1 << 1) 34242542f5fSchristos#define PIPE_CONTROL_DEPTH_CACHE_FLUSH (1 << 0) 34342542f5fSchristos 34442542f5fSchristos 34542542f5fSchristos#define GEN8_3DPRIMITIVE GEN8_3D(3, 3, 0) 34642542f5fSchristos 34742542f5fSchristos/* 3DPRIMITIVE bits */ 34842542f5fSchristos#define VERTEX_SEQUENTIAL (0 << 15) 34942542f5fSchristos#define VERTEX_RANDOM (1 << 15) 35042542f5fSchristos 35142542f5fSchristos#define ANISORATIO_2 0 35242542f5fSchristos#define ANISORATIO_4 1 35342542f5fSchristos#define ANISORATIO_6 2 35442542f5fSchristos#define ANISORATIO_8 3 35542542f5fSchristos#define ANISORATIO_10 4 35642542f5fSchristos#define ANISORATIO_12 5 35742542f5fSchristos#define ANISORATIO_14 6 35842542f5fSchristos#define ANISORATIO_16 7 35942542f5fSchristos 36042542f5fSchristos#define BLENDFACTOR_ONE 0x1 36142542f5fSchristos#define BLENDFACTOR_SRC_COLOR 0x2 36242542f5fSchristos#define BLENDFACTOR_SRC_ALPHA 0x3 36342542f5fSchristos#define BLENDFACTOR_DST_ALPHA 0x4 36442542f5fSchristos#define BLENDFACTOR_DST_COLOR 0x5 36542542f5fSchristos#define BLENDFACTOR_SRC_ALPHA_SATURATE 0x6 36642542f5fSchristos#define BLENDFACTOR_CONST_COLOR 0x7 36742542f5fSchristos#define BLENDFACTOR_CONST_ALPHA 0x8 36842542f5fSchristos#define BLENDFACTOR_SRC1_COLOR 0x9 36942542f5fSchristos#define BLENDFACTOR_SRC1_ALPHA 0x0A 37042542f5fSchristos#define BLENDFACTOR_ZERO 0x11 37142542f5fSchristos#define BLENDFACTOR_INV_SRC_COLOR 0x12 37242542f5fSchristos#define BLENDFACTOR_INV_SRC_ALPHA 0x13 37342542f5fSchristos#define BLENDFACTOR_INV_DST_ALPHA 0x14 37442542f5fSchristos#define BLENDFACTOR_INV_DST_COLOR 0x15 37542542f5fSchristos#define BLENDFACTOR_INV_CONST_COLOR 0x17 37642542f5fSchristos#define BLENDFACTOR_INV_CONST_ALPHA 0x18 37742542f5fSchristos#define BLENDFACTOR_INV_SRC1_COLOR 0x19 37842542f5fSchristos#define BLENDFACTOR_INV_SRC1_ALPHA 0x1A 37942542f5fSchristos 38042542f5fSchristos#define BLENDFUNCTION_ADD 0 38142542f5fSchristos#define BLENDFUNCTION_SUBTRACT 1 38242542f5fSchristos#define BLENDFUNCTION_REVERSE_SUBTRACT 2 38342542f5fSchristos#define GEN8_BLENDFUNCTION_MIN 3 38442542f5fSchristos#define BLENDFUNCTION_MAX 4 38542542f5fSchristos 38642542f5fSchristos#define ALPHATEST_FORMAT_UNORM8 0 38742542f5fSchristos#define ALPHATEST_FORMAT_FLOAT32 1 38842542f5fSchristos 38942542f5fSchristos#define CHROMAKEY_KILL_ON_ANY_MATCH 0 39042542f5fSchristos#define CHROMAKEY_REPLACE_BLACK 1 39142542f5fSchristos 39242542f5fSchristos#define CLIP_API_OGL 0 39342542f5fSchristos#define CLIP_API_DX 1 39442542f5fSchristos 39542542f5fSchristos#define CLIPMODE_NORMAL 0 39642542f5fSchristos#define CLIPMODE_CLIP_ALL 1 39742542f5fSchristos#define CLIPMODE_CLIP_NON_REJECTED 2 39842542f5fSchristos#define CLIPMODE_REJECT_ALL 3 39942542f5fSchristos#define CLIPMODE_ACCEPT_ALL 4 40042542f5fSchristos 40142542f5fSchristos#define CLIP_NDCSPACE 0 40242542f5fSchristos#define CLIP_SCREENSPACE 1 40342542f5fSchristos 40442542f5fSchristos#define COMPAREFUNCTION_ALWAYS 0 40542542f5fSchristos#define COMPAREFUNCTION_NEVER 1 40642542f5fSchristos#define COMPAREFUNCTION_LESS 2 40742542f5fSchristos#define COMPAREFUNCTION_EQUAL 3 40842542f5fSchristos#define COMPAREFUNCTION_LEQUAL 4 40942542f5fSchristos#define COMPAREFUNCTION_GREATER 5 41042542f5fSchristos#define COMPAREFUNCTION_NOTEQUAL 6 41142542f5fSchristos#define COMPAREFUNCTION_GEQUAL 7 41242542f5fSchristos 41342542f5fSchristos#define COVERAGE_PIXELS_HALF 0 41442542f5fSchristos#define COVERAGE_PIXELS_1 1 41542542f5fSchristos#define COVERAGE_PIXELS_2 2 41642542f5fSchristos#define COVERAGE_PIXELS_4 3 41742542f5fSchristos 41842542f5fSchristos#define DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0 41942542f5fSchristos#define DEPTHFORMAT_D32_FLOAT 1 42042542f5fSchristos#define DEPTHFORMAT_D24_UNORM_S8_UINT 2 42142542f5fSchristos#define DEPTHFORMAT_D16_UNORM 5 42242542f5fSchristos 42342542f5fSchristos#define FLOATING_POINT_IEEE_754 0 42442542f5fSchristos#define FLOATING_POINT_NON_IEEE_754 1 42542542f5fSchristos 42642542f5fSchristos#define INDEX_BYTE 0 42742542f5fSchristos#define INDEX_WORD 1 42842542f5fSchristos#define INDEX_DWORD 2 42942542f5fSchristos 43042542f5fSchristos#define LOGICOPFUNCTION_CLEAR 0 43142542f5fSchristos#define LOGICOPFUNCTION_NOR 1 43242542f5fSchristos#define LOGICOPFUNCTION_AND_INVERTED 2 43342542f5fSchristos#define LOGICOPFUNCTION_COPY_INVERTED 3 43442542f5fSchristos#define LOGICOPFUNCTION_AND_REVERSE 4 43542542f5fSchristos#define LOGICOPFUNCTION_INVERT 5 43642542f5fSchristos#define LOGICOPFUNCTION_XOR 6 43742542f5fSchristos#define LOGICOPFUNCTION_NAND 7 43842542f5fSchristos#define LOGICOPFUNCTION_AND 8 43942542f5fSchristos#define LOGICOPFUNCTION_EQUIV 9 44042542f5fSchristos#define LOGICOPFUNCTION_NOOP 10 44142542f5fSchristos#define LOGICOPFUNCTION_OR_INVERTED 11 44242542f5fSchristos#define LOGICOPFUNCTION_COPY 12 44342542f5fSchristos#define LOGICOPFUNCTION_OR_REVERSE 13 44442542f5fSchristos#define LOGICOPFUNCTION_OR 14 44542542f5fSchristos#define LOGICOPFUNCTION_SET 15 44642542f5fSchristos 44742542f5fSchristos#define MAPFILTER_NEAREST 0x0 44842542f5fSchristos#define MAPFILTER_LINEAR 0x1 44942542f5fSchristos#define MAPFILTER_ANISOTROPIC 0x2 45042542f5fSchristos#define MAPFILTER_FLEXIBLE 0x3 45142542f5fSchristos#define MAPFILTER_MONO 0x6 45242542f5fSchristos 45342542f5fSchristos#define MIPFILTER_NONE 0 45442542f5fSchristos#define MIPFILTER_NEAREST 1 45542542f5fSchristos#define MIPFILTER_LINEAR 3 45642542f5fSchristos 45742542f5fSchristos#define POLYGON_FRONT_FACING 0 45842542f5fSchristos#define POLYGON_BACK_FACING 1 45942542f5fSchristos 46042542f5fSchristos#define PREFILTER_ALWAYS 0x0 46142542f5fSchristos#define PREFILTER_NEVER 0x1 46242542f5fSchristos#define PREFILTER_LESS 0x2 46342542f5fSchristos#define PREFILTER_EQUAL 0x3 46442542f5fSchristos#define PREFILTER_LEQUAL 0x4 46542542f5fSchristos#define PREFILTER_GREATER 0x5 46642542f5fSchristos#define PREFILTER_NOTEQUAL 0x6 46742542f5fSchristos#define PREFILTER_GEQUAL 0x7 46842542f5fSchristos 46942542f5fSchristos#define RASTRULE_UPPER_LEFT 0 47042542f5fSchristos#define RASTRULE_UPPER_RIGHT 1 47142542f5fSchristos 47242542f5fSchristos#define STENCILOP_KEEP 0 47342542f5fSchristos#define STENCILOP_ZERO 1 47442542f5fSchristos#define STENCILOP_REPLACE 2 47542542f5fSchristos#define STENCILOP_INCRSAT 3 47642542f5fSchristos#define STENCILOP_DECRSAT 4 47742542f5fSchristos#define STENCILOP_INCR 5 47842542f5fSchristos#define STENCILOP_DECR 6 47942542f5fSchristos#define STENCILOP_INVERT 7 48042542f5fSchristos 48142542f5fSchristos#define SURFACE_MIPMAPLAYOUT_BELOW 0 48242542f5fSchristos#define SURFACE_MIPMAPLAYOUT_RIGHT 1 48342542f5fSchristos 48442542f5fSchristos#define SURFACEFORMAT_R32G32B32A32_FLOAT 0x000 48542542f5fSchristos#define SURFACEFORMAT_R32G32B32A32_SINT 0x001 48642542f5fSchristos#define SURFACEFORMAT_R32G32B32A32_UINT 0x002 48742542f5fSchristos#define SURFACEFORMAT_R32G32B32A32_UNORM 0x003 48842542f5fSchristos#define SURFACEFORMAT_R32G32B32A32_SNORM 0x004 48942542f5fSchristos#define SURFACEFORMAT_R64G64_FLOAT 0x005 49042542f5fSchristos#define SURFACEFORMAT_R32G32B32X32_FLOAT 0x006 49142542f5fSchristos#define SURFACEFORMAT_R32G32B32A32_SSCALED 0x007 49242542f5fSchristos#define SURFACEFORMAT_R32G32B32A32_USCALED 0x008 49342542f5fSchristos#define SURFACEFORMAT_R32G32B32_FLOAT 0x040 49442542f5fSchristos#define SURFACEFORMAT_R32G32B32_SINT 0x041 49542542f5fSchristos#define SURFACEFORMAT_R32G32B32_UINT 0x042 49642542f5fSchristos#define SURFACEFORMAT_R32G32B32_UNORM 0x043 49742542f5fSchristos#define SURFACEFORMAT_R32G32B32_SNORM 0x044 49842542f5fSchristos#define SURFACEFORMAT_R32G32B32_SSCALED 0x045 49942542f5fSchristos#define SURFACEFORMAT_R32G32B32_USCALED 0x046 50042542f5fSchristos#define SURFACEFORMAT_R16G16B16A16_UNORM 0x080 50142542f5fSchristos#define SURFACEFORMAT_R16G16B16A16_SNORM 0x081 50242542f5fSchristos#define SURFACEFORMAT_R16G16B16A16_SINT 0x082 50342542f5fSchristos#define SURFACEFORMAT_R16G16B16A16_UINT 0x083 50442542f5fSchristos#define SURFACEFORMAT_R16G16B16A16_FLOAT 0x084 50542542f5fSchristos#define SURFACEFORMAT_R32G32_FLOAT 0x085 50642542f5fSchristos#define SURFACEFORMAT_R32G32_SINT 0x086 50742542f5fSchristos#define SURFACEFORMAT_R32G32_UINT 0x087 50842542f5fSchristos#define SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS 0x088 50942542f5fSchristos#define SURFACEFORMAT_X32_TYPELESS_G8X24_UINT 0x089 51042542f5fSchristos#define SURFACEFORMAT_L32A32_FLOAT 0x08A 51142542f5fSchristos#define SURFACEFORMAT_R32G32_UNORM 0x08B 51242542f5fSchristos#define SURFACEFORMAT_R32G32_SNORM 0x08C 51342542f5fSchristos#define SURFACEFORMAT_R64_FLOAT 0x08D 51442542f5fSchristos#define SURFACEFORMAT_R16G16B16X16_UNORM 0x08E 51542542f5fSchristos#define SURFACEFORMAT_R16G16B16X16_FLOAT 0x08F 51642542f5fSchristos#define SURFACEFORMAT_A32X32_FLOAT 0x090 51742542f5fSchristos#define SURFACEFORMAT_L32X32_FLOAT 0x091 51842542f5fSchristos#define SURFACEFORMAT_I32X32_FLOAT 0x092 51942542f5fSchristos#define SURFACEFORMAT_R16G16B16A16_SSCALED 0x093 52042542f5fSchristos#define SURFACEFORMAT_R16G16B16A16_USCALED 0x094 52142542f5fSchristos#define SURFACEFORMAT_R32G32_SSCALED 0x095 52242542f5fSchristos#define SURFACEFORMAT_R32G32_USCALED 0x096 52342542f5fSchristos#define SURFACEFORMAT_B8G8R8A8_UNORM 0x0C0 52442542f5fSchristos#define SURFACEFORMAT_B8G8R8A8_UNORM_SRGB 0x0C1 52542542f5fSchristos#define SURFACEFORMAT_R10G10B10A2_UNORM 0x0C2 52642542f5fSchristos#define SURFACEFORMAT_R10G10B10A2_UNORM_SRGB 0x0C3 52742542f5fSchristos#define SURFACEFORMAT_R10G10B10A2_UINT 0x0C4 52842542f5fSchristos#define SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM 0x0C5 52942542f5fSchristos#define SURFACEFORMAT_R8G8B8A8_UNORM 0x0C7 53042542f5fSchristos#define SURFACEFORMAT_R8G8B8A8_UNORM_SRGB 0x0C8 53142542f5fSchristos#define SURFACEFORMAT_R8G8B8A8_SNORM 0x0C9 53242542f5fSchristos#define SURFACEFORMAT_R8G8B8A8_SINT 0x0CA 53342542f5fSchristos#define SURFACEFORMAT_R8G8B8A8_UINT 0x0CB 53442542f5fSchristos#define SURFACEFORMAT_R16G16_UNORM 0x0CC 53542542f5fSchristos#define SURFACEFORMAT_R16G16_SNORM 0x0CD 53642542f5fSchristos#define SURFACEFORMAT_R16G16_SINT 0x0CE 53742542f5fSchristos#define SURFACEFORMAT_R16G16_UINT 0x0CF 53842542f5fSchristos#define SURFACEFORMAT_R16G16_FLOAT 0x0D0 53942542f5fSchristos#define SURFACEFORMAT_B10G10R10A2_UNORM 0x0D1 54042542f5fSchristos#define SURFACEFORMAT_B10G10R10A2_UNORM_SRGB 0x0D2 54142542f5fSchristos#define SURFACEFORMAT_R11G11B10_FLOAT 0x0D3 54242542f5fSchristos#define SURFACEFORMAT_R32_SINT 0x0D6 54342542f5fSchristos#define SURFACEFORMAT_R32_UINT 0x0D7 54442542f5fSchristos#define SURFACEFORMAT_R32_FLOAT 0x0D8 54542542f5fSchristos#define SURFACEFORMAT_R24_UNORM_X8_TYPELESS 0x0D9 54642542f5fSchristos#define SURFACEFORMAT_X24_TYPELESS_G8_UINT 0x0DA 54742542f5fSchristos#define SURFACEFORMAT_L16A16_UNORM 0x0DF 54842542f5fSchristos#define SURFACEFORMAT_I24X8_UNORM 0x0E0 54942542f5fSchristos#define SURFACEFORMAT_L24X8_UNORM 0x0E1 55042542f5fSchristos#define SURFACEFORMAT_A24X8_UNORM 0x0E2 55142542f5fSchristos#define SURFACEFORMAT_I32_FLOAT 0x0E3 55242542f5fSchristos#define SURFACEFORMAT_L32_FLOAT 0x0E4 55342542f5fSchristos#define SURFACEFORMAT_A32_FLOAT 0x0E5 55442542f5fSchristos#define SURFACEFORMAT_B8G8R8X8_UNORM 0x0E9 55542542f5fSchristos#define SURFACEFORMAT_B8G8R8X8_UNORM_SRGB 0x0EA 55642542f5fSchristos#define SURFACEFORMAT_R8G8B8X8_UNORM 0x0EB 55742542f5fSchristos#define SURFACEFORMAT_R8G8B8X8_UNORM_SRGB 0x0EC 55842542f5fSchristos#define SURFACEFORMAT_R9G9B9E5_SHAREDEXP 0x0ED 55942542f5fSchristos#define SURFACEFORMAT_B10G10R10X2_UNORM 0x0EE 56042542f5fSchristos#define SURFACEFORMAT_L16A16_FLOAT 0x0F0 56142542f5fSchristos#define SURFACEFORMAT_R32_UNORM 0x0F1 56242542f5fSchristos#define SURFACEFORMAT_R32_SNORM 0x0F2 56342542f5fSchristos#define SURFACEFORMAT_R10G10B10X2_USCALED 0x0F3 56442542f5fSchristos#define SURFACEFORMAT_R8G8B8A8_SSCALED 0x0F4 56542542f5fSchristos#define SURFACEFORMAT_R8G8B8A8_USCALED 0x0F5 56642542f5fSchristos#define SURFACEFORMAT_R16G16_SSCALED 0x0F6 56742542f5fSchristos#define SURFACEFORMAT_R16G16_USCALED 0x0F7 56842542f5fSchristos#define SURFACEFORMAT_R32_SSCALED 0x0F8 56942542f5fSchristos#define SURFACEFORMAT_R32_USCALED 0x0F9 57042542f5fSchristos#define SURFACEFORMAT_B5G6R5_UNORM 0x100 57142542f5fSchristos#define SURFACEFORMAT_B5G6R5_UNORM_SRGB 0x101 57242542f5fSchristos#define SURFACEFORMAT_B5G5R5A1_UNORM 0x102 57342542f5fSchristos#define SURFACEFORMAT_B5G5R5A1_UNORM_SRGB 0x103 57442542f5fSchristos#define SURFACEFORMAT_B4G4R4A4_UNORM 0x104 57542542f5fSchristos#define SURFACEFORMAT_B4G4R4A4_UNORM_SRGB 0x105 57642542f5fSchristos#define SURFACEFORMAT_R8G8_UNORM 0x106 57742542f5fSchristos#define SURFACEFORMAT_R8G8_SNORM 0x107 57842542f5fSchristos#define SURFACEFORMAT_R8G8_SINT 0x108 57942542f5fSchristos#define SURFACEFORMAT_R8G8_UINT 0x109 58042542f5fSchristos#define SURFACEFORMAT_R16_UNORM 0x10A 58142542f5fSchristos#define SURFACEFORMAT_R16_SNORM 0x10B 58242542f5fSchristos#define SURFACEFORMAT_R16_SINT 0x10C 58342542f5fSchristos#define SURFACEFORMAT_R16_UINT 0x10D 58442542f5fSchristos#define SURFACEFORMAT_R16_FLOAT 0x10E 58542542f5fSchristos#define SURFACEFORMAT_I16_UNORM 0x111 58642542f5fSchristos#define SURFACEFORMAT_L16_UNORM 0x112 58742542f5fSchristos#define SURFACEFORMAT_A16_UNORM 0x113 58842542f5fSchristos#define SURFACEFORMAT_L8A8_UNORM 0x114 58942542f5fSchristos#define SURFACEFORMAT_I16_FLOAT 0x115 59042542f5fSchristos#define SURFACEFORMAT_L16_FLOAT 0x116 59142542f5fSchristos#define SURFACEFORMAT_A16_FLOAT 0x117 59242542f5fSchristos#define SURFACEFORMAT_R5G5_SNORM_B6_UNORM 0x119 59342542f5fSchristos#define SURFACEFORMAT_B5G5R5X1_UNORM 0x11A 59442542f5fSchristos#define SURFACEFORMAT_B5G5R5X1_UNORM_SRGB 0x11B 59542542f5fSchristos#define SURFACEFORMAT_R8G8_SSCALED 0x11C 59642542f5fSchristos#define SURFACEFORMAT_R8G8_USCALED 0x11D 59742542f5fSchristos#define SURFACEFORMAT_R16_SSCALED 0x11E 59842542f5fSchristos#define SURFACEFORMAT_R16_USCALED 0x11F 59942542f5fSchristos#define SURFACEFORMAT_R8_UNORM 0x140 60042542f5fSchristos#define SURFACEFORMAT_R8_SNORM 0x141 60142542f5fSchristos#define SURFACEFORMAT_R8_SINT 0x142 60242542f5fSchristos#define SURFACEFORMAT_R8_UINT 0x143 60342542f5fSchristos#define SURFACEFORMAT_A8_UNORM 0x144 60442542f5fSchristos#define SURFACEFORMAT_I8_UNORM 0x145 60542542f5fSchristos#define SURFACEFORMAT_L8_UNORM 0x146 60642542f5fSchristos#define SURFACEFORMAT_P4A4_UNORM 0x147 60742542f5fSchristos#define SURFACEFORMAT_A4P4_UNORM 0x148 60842542f5fSchristos#define SURFACEFORMAT_R8_SSCALED 0x149 60942542f5fSchristos#define SURFACEFORMAT_R8_USCALED 0x14A 61042542f5fSchristos#define SURFACEFORMAT_R1_UINT 0x181 61142542f5fSchristos#define SURFACEFORMAT_YCRCB_NORMAL 0x182 61242542f5fSchristos#define SURFACEFORMAT_YCRCB_SWAPUVY 0x183 61342542f5fSchristos#define SURFACEFORMAT_BC1_UNORM 0x186 61442542f5fSchristos#define SURFACEFORMAT_BC2_UNORM 0x187 61542542f5fSchristos#define SURFACEFORMAT_BC3_UNORM 0x188 61642542f5fSchristos#define SURFACEFORMAT_BC4_UNORM 0x189 61742542f5fSchristos#define SURFACEFORMAT_BC5_UNORM 0x18A 61842542f5fSchristos#define SURFACEFORMAT_BC1_UNORM_SRGB 0x18B 61942542f5fSchristos#define SURFACEFORMAT_BC2_UNORM_SRGB 0x18C 62042542f5fSchristos#define SURFACEFORMAT_BC3_UNORM_SRGB 0x18D 62142542f5fSchristos#define SURFACEFORMAT_MONO8 0x18E 62242542f5fSchristos#define SURFACEFORMAT_YCRCB_SWAPUV 0x18F 62342542f5fSchristos#define SURFACEFORMAT_YCRCB_SWAPY 0x190 62442542f5fSchristos#define SURFACEFORMAT_DXT1_RGB 0x191 62542542f5fSchristos#define SURFACEFORMAT_FXT1 0x192 62642542f5fSchristos#define SURFACEFORMAT_R8G8B8_UNORM 0x193 62742542f5fSchristos#define SURFACEFORMAT_R8G8B8_SNORM 0x194 62842542f5fSchristos#define SURFACEFORMAT_R8G8B8_SSCALED 0x195 62942542f5fSchristos#define SURFACEFORMAT_R8G8B8_USCALED 0x196 63042542f5fSchristos#define SURFACEFORMAT_R64G64B64A64_FLOAT 0x197 63142542f5fSchristos#define SURFACEFORMAT_R64G64B64_FLOAT 0x198 63242542f5fSchristos#define SURFACEFORMAT_BC4_SNORM 0x199 63342542f5fSchristos#define SURFACEFORMAT_BC5_SNORM 0x19A 63442542f5fSchristos#define SURFACEFORMAT_R16G16B16_UNORM 0x19C 63542542f5fSchristos#define SURFACEFORMAT_R16G16B16_SNORM 0x19D 63642542f5fSchristos#define SURFACEFORMAT_R16G16B16_SSCALED 0x19E 63742542f5fSchristos#define SURFACEFORMAT_R16G16B16_USCALED 0x19F 63842542f5fSchristos 63942542f5fSchristos#define SURFACE_1D 0 64042542f5fSchristos#define SURFACE_2D 1 64142542f5fSchristos#define SURFACE_3D 2 64242542f5fSchristos#define SURFACE_CUBE 3 64342542f5fSchristos#define SURFACE_BUFFER 4 64442542f5fSchristos#define SURFACE_NULL 7 64542542f5fSchristos 64642542f5fSchristos#define TEXCOORDMODE_WRAP 0 64742542f5fSchristos#define TEXCOORDMODE_MIRROR 1 64842542f5fSchristos#define TEXCOORDMODE_CLAMP 2 64942542f5fSchristos#define TEXCOORDMODE_CUBE 3 65042542f5fSchristos#define TEXCOORDMODE_CLAMP_BORDER 4 65142542f5fSchristos#define TEXCOORDMODE_MIRROR_ONCE 5 65242542f5fSchristos 65342542f5fSchristos#define THREAD_PRIORITY_NORMAL 0 65442542f5fSchristos#define THREAD_PRIORITY_HIGH 1 65542542f5fSchristos 65642542f5fSchristos#define VERTEX_SUBPIXEL_PRECISION_8BITS 0 65742542f5fSchristos#define VERTEX_SUBPIXEL_PRECISION_4BITS 1 65842542f5fSchristos 65942542f5fSchristos#define COMPONENT_NOSTORE 0 66042542f5fSchristos#define COMPONENT_STORE_SRC 1 66142542f5fSchristos#define COMPONENT_STORE_0 2 66242542f5fSchristos#define COMPONENT_STORE_1_FLT 3 66342542f5fSchristos#define COMPONENT_STORE_1_INT 4 66442542f5fSchristos#define COMPONENT_STORE_VID 5 66542542f5fSchristos#define COMPONENT_STORE_IID 6 66642542f5fSchristos#define COMPONENT_STORE_PID 7 66742542f5fSchristos 66842542f5fSchristos/* Execution Unit (EU) defines 66942542f5fSchristos */ 67042542f5fSchristos 67142542f5fSchristos#define GEN8_ALIGN_1 0 67242542f5fSchristos#define GEN8_ALIGN_16 1 67342542f5fSchristos 67442542f5fSchristos#define GEN8_ADDRESS_DIRECT 0 67542542f5fSchristos#define GEN8_ADDRESS_REGISTER_INDIRECT_REGISTER 1 67642542f5fSchristos 67742542f5fSchristos#define GEN8_CHANNEL_X 0 67842542f5fSchristos#define GEN8_CHANNEL_Y 1 67942542f5fSchristos#define GEN8_CHANNEL_Z 2 68042542f5fSchristos#define GEN8_CHANNEL_W 3 68142542f5fSchristos 68242542f5fSchristos#define GEN8_COMPRESSION_NONE 0 68342542f5fSchristos#define GEN8_COMPRESSION_2NDHALF 1 68442542f5fSchristos#define GEN8_COMPRESSION_COMPRESSED 2 68542542f5fSchristos 68642542f5fSchristos#define GEN8_CONDITIONAL_NONE 0 68742542f5fSchristos#define GEN8_CONDITIONAL_Z 1 68842542f5fSchristos#define GEN8_CONDITIONAL_NZ 2 68942542f5fSchristos#define GEN8_CONDITIONAL_EQ 1 /* Z */ 69042542f5fSchristos#define GEN8_CONDITIONAL_NEQ 2 /* NZ */ 69142542f5fSchristos#define GEN8_CONDITIONAL_G 3 69242542f5fSchristos#define GEN8_CONDITIONAL_GE 4 69342542f5fSchristos#define GEN8_CONDITIONAL_L 5 69442542f5fSchristos#define GEN8_CONDITIONAL_LE 6 69542542f5fSchristos#define GEN8_CONDITIONAL_C 7 69642542f5fSchristos#define GEN8_CONDITIONAL_O 8 69742542f5fSchristos 69842542f5fSchristos#define GEN8_DEBUG_NONE 0 69942542f5fSchristos#define GEN8_DEBUG_BREAKPOINT 1 70042542f5fSchristos 70142542f5fSchristos#define GEN8_DEPENDENCY_NORMAL 0 70242542f5fSchristos#define GEN8_DEPENDENCY_NOTCLEARED 1 70342542f5fSchristos#define GEN8_DEPENDENCY_NOTCHECKED 2 70442542f5fSchristos#define GEN8_DEPENDENCY_DISABLE 3 70542542f5fSchristos 70642542f5fSchristos#define GEN8_EXECUTE_1 0 70742542f5fSchristos#define GEN8_EXECUTE_2 1 70842542f5fSchristos#define GEN8_EXECUTE_4 2 70942542f5fSchristos#define GEN8_EXECUTE_8 3 71042542f5fSchristos#define GEN8_EXECUTE_16 4 71142542f5fSchristos#define GEN8_EXECUTE_32 5 71242542f5fSchristos 71342542f5fSchristos#define GEN8_HORIZONTAL_STRIDE_0 0 71442542f5fSchristos#define GEN8_HORIZONTAL_STRIDE_1 1 71542542f5fSchristos#define GEN8_HORIZONTAL_STRIDE_2 2 71642542f5fSchristos#define GEN8_HORIZONTAL_STRIDE_4 3 71742542f5fSchristos 71842542f5fSchristos#define GEN8_INSTRUCTION_NORMAL 0 71942542f5fSchristos#define GEN8_INSTRUCTION_SATURATE 1 72042542f5fSchristos 72142542f5fSchristos#define GEN8_OPCODE_MOV 1 72242542f5fSchristos#define GEN8_OPCODE_SEL 2 72342542f5fSchristos#define GEN8_OPCODE_NOT 4 72442542f5fSchristos#define GEN8_OPCODE_AND 5 72542542f5fSchristos#define GEN8_OPCODE_OR 6 72642542f5fSchristos#define GEN8_OPCODE_XOR 7 72742542f5fSchristos#define GEN8_OPCODE_SHR 8 72842542f5fSchristos#define GEN8_OPCODE_SHL 9 72942542f5fSchristos#define GEN8_OPCODE_RSR 10 73042542f5fSchristos#define GEN8_OPCODE_RSL 11 73142542f5fSchristos#define GEN8_OPCODE_ASR 12 73242542f5fSchristos#define GEN8_OPCODE_CMP 16 73342542f5fSchristos#define GEN8_OPCODE_JMPI 32 73442542f5fSchristos#define GEN8_OPCODE_IF 34 73542542f5fSchristos#define GEN8_OPCODE_IFF 35 73642542f5fSchristos#define GEN8_OPCODE_ELSE 36 73742542f5fSchristos#define GEN8_OPCODE_ENDIF 37 73842542f5fSchristos#define GEN8_OPCODE_DO 38 73942542f5fSchristos#define GEN8_OPCODE_WHILE 39 74042542f5fSchristos#define GEN8_OPCODE_BREAK 40 74142542f5fSchristos#define GEN8_OPCODE_CONTINUE 41 74242542f5fSchristos#define GEN8_OPCODE_HALT 42 74342542f5fSchristos#define GEN8_OPCODE_MSAVE 44 74442542f5fSchristos#define GEN8_OPCODE_MRESTORE 45 74542542f5fSchristos#define GEN8_OPCODE_PUSH 46 74642542f5fSchristos#define GEN8_OPCODE_POP 47 74742542f5fSchristos#define GEN8_OPCODE_WAIT 48 74842542f5fSchristos#define GEN8_OPCODE_SEND 49 74942542f5fSchristos#define GEN8_OPCODE_ADD 64 75042542f5fSchristos#define GEN8_OPCODE_MUL 65 75142542f5fSchristos#define GEN8_OPCODE_AVG 66 75242542f5fSchristos#define GEN8_OPCODE_FRC 67 75342542f5fSchristos#define GEN8_OPCODE_RNDU 68 75442542f5fSchristos#define GEN8_OPCODE_RNDD 69 75542542f5fSchristos#define GEN8_OPCODE_RNDE 70 75642542f5fSchristos#define GEN8_OPCODE_RNDZ 71 75742542f5fSchristos#define GEN8_OPCODE_MAC 72 75842542f5fSchristos#define GEN8_OPCODE_MACH 73 75942542f5fSchristos#define GEN8_OPCODE_LZD 74 76042542f5fSchristos#define GEN8_OPCODE_SAD2 80 76142542f5fSchristos#define GEN8_OPCODE_SADA2 81 76242542f5fSchristos#define GEN8_OPCODE_DP4 84 76342542f5fSchristos#define GEN8_OPCODE_DPH 85 76442542f5fSchristos#define GEN8_OPCODE_DP3 86 76542542f5fSchristos#define GEN8_OPCODE_DP2 87 76642542f5fSchristos#define GEN8_OPCODE_DPA2 88 76742542f5fSchristos#define GEN8_OPCODE_LINE 89 76842542f5fSchristos#define GEN8_OPCODE_NOP 126 76942542f5fSchristos 77042542f5fSchristos#define GEN8_PREDICATE_NONE 0 77142542f5fSchristos#define GEN8_PREDICATE_NORMAL 1 77242542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ANYV 2 77342542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ALLV 3 77442542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ANY2H 4 77542542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ALL2H 5 77642542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ANY4H 6 77742542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ALL4H 7 77842542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ANY8H 8 77942542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ALL8H 9 78042542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ANY16H 10 78142542f5fSchristos#define GEN8_PREDICATE_ALIGN1_ALL16H 11 78242542f5fSchristos#define GEN8_PREDICATE_ALIGN16_REPLICATE_X 2 78342542f5fSchristos#define GEN8_PREDICATE_ALIGN16_REPLICATE_Y 3 78442542f5fSchristos#define GEN8_PREDICATE_ALIGN16_REPLICATE_Z 4 78542542f5fSchristos#define GEN8_PREDICATE_ALIGN16_REPLICATE_W 5 78642542f5fSchristos#define GEN8_PREDICATE_ALIGN16_ANY4H 6 78742542f5fSchristos#define GEN8_PREDICATE_ALIGN16_ALL4H 7 78842542f5fSchristos 78942542f5fSchristos#define GEN8_ARCHITECTURE_REGISTER_FILE 0 79042542f5fSchristos#define GEN8_GENERAL_REGISTER_FILE 1 79142542f5fSchristos#define GEN8_MESSAGE_REGISTER_FILE 2 79242542f5fSchristos#define GEN8_IMMEDIATE_VALUE 3 79342542f5fSchristos 79442542f5fSchristos#define GEN8_REGISTER_TYPE_UD 0 79542542f5fSchristos#define GEN8_REGISTER_TYPE_D 1 79642542f5fSchristos#define GEN8_REGISTER_TYPE_UW 2 79742542f5fSchristos#define GEN8_REGISTER_TYPE_W 3 79842542f5fSchristos#define GEN8_REGISTER_TYPE_UB 4 79942542f5fSchristos#define GEN8_REGISTER_TYPE_B 5 80042542f5fSchristos#define GEN8_REGISTER_TYPE_VF 5 /* packed float vector, immediates only? */ 80142542f5fSchristos#define GEN8_REGISTER_TYPE_HF 6 80242542f5fSchristos#define GEN8_REGISTER_TYPE_V 6 /* packed int vector, immediates only, uword dest only */ 80342542f5fSchristos#define GEN8_REGISTER_TYPE_F 7 80442542f5fSchristos 80542542f5fSchristos#define GEN8_ARF_NULL 0x00 80642542f5fSchristos#define GEN8_ARF_ADDRESS 0x10 80742542f5fSchristos#define GEN8_ARF_ACCUMULATOR 0x20 80842542f5fSchristos#define GEN8_ARF_FLAG 0x30 80942542f5fSchristos#define GEN8_ARF_MASK 0x40 81042542f5fSchristos#define GEN8_ARF_MASK_STACK 0x50 81142542f5fSchristos#define GEN8_ARF_MASK_STACK_DEPTH 0x60 81242542f5fSchristos#define GEN8_ARF_STATE 0x70 81342542f5fSchristos#define GEN8_ARF_CONTROL 0x80 81442542f5fSchristos#define GEN8_ARF_NOTIFICATION_COUNT 0x90 81542542f5fSchristos#define GEN8_ARF_IP 0xA0 81642542f5fSchristos 81742542f5fSchristos#define GEN8_AMASK 0 81842542f5fSchristos#define GEN8_IMASK 1 81942542f5fSchristos#define GEN8_LMASK 2 82042542f5fSchristos#define GEN8_CMASK 3 82142542f5fSchristos 82242542f5fSchristos#define GEN8_THREAD_NORMAL 0 82342542f5fSchristos#define GEN8_THREAD_ATOMIC 1 82442542f5fSchristos#define GEN8_THREAD_SWITCH 2 82542542f5fSchristos 82642542f5fSchristos#define GEN8_VERTICAL_STRIDE_0 0 82742542f5fSchristos#define GEN8_VERTICAL_STRIDE_1 1 82842542f5fSchristos#define GEN8_VERTICAL_STRIDE_2 2 82942542f5fSchristos#define GEN8_VERTICAL_STRIDE_4 3 83042542f5fSchristos#define GEN8_VERTICAL_STRIDE_8 4 83142542f5fSchristos#define GEN8_VERTICAL_STRIDE_16 5 83242542f5fSchristos#define GEN8_VERTICAL_STRIDE_32 6 83342542f5fSchristos#define GEN8_VERTICAL_STRIDE_64 7 83442542f5fSchristos#define GEN8_VERTICAL_STRIDE_128 8 83542542f5fSchristos#define GEN8_VERTICAL_STRIDE_256 9 83642542f5fSchristos#define GEN8_VERTICAL_STRIDE_ONE_DIMENSIONAL 0xF 83742542f5fSchristos 83842542f5fSchristos#define GEN8_WIDTH_1 0 83942542f5fSchristos#define GEN8_WIDTH_2 1 84042542f5fSchristos#define GEN8_WIDTH_4 2 84142542f5fSchristos#define GEN8_WIDTH_8 3 84242542f5fSchristos#define GEN8_WIDTH_16 4 84342542f5fSchristos 84442542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_1K 0 84542542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_2K 1 84642542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_4K 2 84742542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_8K 3 84842542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_16K 4 84942542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_32K 5 85042542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_64K 6 85142542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_128K 7 85242542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_256K 8 85342542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_512K 9 85442542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_1M 10 85542542f5fSchristos#define GEN8_STATELESS_BUFFER_BOUNDARY_2M 11 85642542f5fSchristos 85742542f5fSchristos#define GEN8_POLYGON_FACING_FRONT 0 85842542f5fSchristos#define GEN8_POLYGON_FACING_BACK 1 85942542f5fSchristos 86042542f5fSchristos#define GEN8_MESSAGE_TARGET_NULL 0 86142542f5fSchristos#define GEN8_MESSAGE_TARGET_MATH 1 86242542f5fSchristos#define GEN8_MESSAGE_TARGET_SAMPLER 2 86342542f5fSchristos#define GEN8_MESSAGE_TARGET_GATEWAY 3 86442542f5fSchristos#define GEN8_MESSAGE_TARGET_DATAPORT_READ 4 86542542f5fSchristos#define GEN8_MESSAGE_TARGET_DATAPORT_WRITE 5 86642542f5fSchristos#define GEN8_MESSAGE_TARGET_URB 6 86742542f5fSchristos#define GEN8_MESSAGE_TARGET_THREAD_SPAWNER 7 86842542f5fSchristos 86942542f5fSchristos#define GEN8_SAMPLER_RETURN_FORMAT_FLOAT32 0 87042542f5fSchristos#define GEN8_SAMPLER_RETURN_FORMAT_UINT32 2 87142542f5fSchristos#define GEN8_SAMPLER_RETURN_FORMAT_SINT32 3 87242542f5fSchristos 87342542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD8_SAMPLE 0 87442542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD16_SAMPLE 0 87542542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS 0 87642542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD8_KILLPIX 1 87742542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD 1 87842542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD 1 87942542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_GRADIENTS 2 88042542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD8_SAMPLE_GRADIENTS 2 88142542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE 0 88242542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE 2 88342542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD4X2_RESINFO 2 88442542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD8_RESINFO 2 88542542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD16_RESINFO 2 88642542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD4X2_LD 3 88742542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD8_LD 3 88842542f5fSchristos#define GEN8_SAMPLER_MESSAGE_SIMD16_LD 3 88942542f5fSchristos 89042542f5fSchristos#define GEN8_DATAPORT_OWORD_BLOCK_1_OWORDLOW 0 89142542f5fSchristos#define GEN8_DATAPORT_OWORD_BLOCK_1_OWORDHIGH 1 89242542f5fSchristos#define GEN8_DATAPORT_OWORD_BLOCK_2_OWORDS 2 89342542f5fSchristos#define GEN8_DATAPORT_OWORD_BLOCK_4_OWORDS 3 89442542f5fSchristos#define GEN8_DATAPORT_OWORD_BLOCK_8_OWORDS 4 89542542f5fSchristos 89642542f5fSchristos#define GEN8_DATAPORT_OWORD_DUAL_BLOCK_1OWORD 0 89742542f5fSchristos#define GEN8_DATAPORT_OWORD_DUAL_BLOCK_4OWORDS 2 89842542f5fSchristos 89942542f5fSchristos#define GEN8_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS 2 90042542f5fSchristos#define GEN8_DATAPORT_DWORD_SCATTERED_BLOCK_16DWORDS 3 90142542f5fSchristos 90242542f5fSchristos#define GEN8_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ 0 90342542f5fSchristos#define GEN8_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ 1 90442542f5fSchristos#define GEN8_DATAPORT_READ_MESSAGE_DWORD_BLOCK_READ 2 90542542f5fSchristos#define GEN8_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ 3 90642542f5fSchristos 90742542f5fSchristos#define GEN8_DATAPORT_READ_TARGET_DATA_CACHE 0 90842542f5fSchristos#define GEN8_DATAPORT_READ_TARGET_RENDER_CACHE 1 90942542f5fSchristos#define GEN8_DATAPORT_READ_TARGET_SAMPLER_CACHE 2 91042542f5fSchristos 91142542f5fSchristos#define GEN8_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE 0 91242542f5fSchristos#define GEN8_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE_REPLICATED 1 91342542f5fSchristos#define GEN8_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN01 2 91442542f5fSchristos#define GEN8_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN23 3 91542542f5fSchristos#define GEN8_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01 4 91642542f5fSchristos 91742542f5fSchristos#define GEN8_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE 0 91842542f5fSchristos#define GEN8_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE 1 91942542f5fSchristos#define GEN8_DATAPORT_WRITE_MESSAGE_DWORD_BLOCK_WRITE 2 92042542f5fSchristos#define GEN8_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE 3 92142542f5fSchristos#define GEN8_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE 4 92242542f5fSchristos#define GEN8_DATAPORT_WRITE_MESSAGE_STREAMED_VERTEX_BUFFER_WRITE 5 92342542f5fSchristos#define GEN8_DATAPORT_WRITE_MESSAGE_FLUSH_RENDER_CACHE 7 92442542f5fSchristos 92542542f5fSchristos#define GEN8_MATH_FUNCTION_INV 1 92642542f5fSchristos#define GEN8_MATH_FUNCTION_LOG 2 92742542f5fSchristos#define GEN8_MATH_FUNCTION_EXP 3 92842542f5fSchristos#define GEN8_MATH_FUNCTION_SQRT 4 92942542f5fSchristos#define GEN8_MATH_FUNCTION_RSQ 5 93042542f5fSchristos#define GEN8_MATH_FUNCTION_SIN 6 /* was 7 */ 93142542f5fSchristos#define GEN8_MATH_FUNCTION_COS 7 /* was 8 */ 93242542f5fSchristos#define GEN8_MATH_FUNCTION_SINCOS 8 /* was 6 */ 93342542f5fSchristos#define GEN8_MATH_FUNCTION_TAN 9 93442542f5fSchristos#define GEN8_MATH_FUNCTION_POW 10 93542542f5fSchristos#define GEN8_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER 11 93642542f5fSchristos#define GEN8_MATH_FUNCTION_INT_DIV_QUOTIENT 12 93742542f5fSchristos#define GEN8_MATH_FUNCTION_INT_DIV_REMAINDER 13 93842542f5fSchristos 93942542f5fSchristos#define GEN8_MATH_INTEGER_UNSIGNED 0 94042542f5fSchristos#define GEN8_MATH_INTEGER_SIGNED 1 94142542f5fSchristos 94242542f5fSchristos#define GEN8_MATH_PRECISION_FULL 0 94342542f5fSchristos#define GEN8_MATH_PRECISION_PARTIAL 1 94442542f5fSchristos 94542542f5fSchristos#define GEN8_MATH_SATURATE_NONE 0 94642542f5fSchristos#define GEN8_MATH_SATURATE_SATURATE 1 94742542f5fSchristos 94842542f5fSchristos#define GEN8_MATH_DATA_VECTOR 0 94942542f5fSchristos#define GEN8_MATH_DATA_SCALAR 1 95042542f5fSchristos 95142542f5fSchristos#define GEN8_URB_OPCODE_WRITE 0 95242542f5fSchristos 95342542f5fSchristos#define GEN8_URB_SWIZZLE_NONE 0 95442542f5fSchristos#define GEN8_URB_SWIZZLE_INTERLEAVE 1 95542542f5fSchristos#define GEN8_URB_SWIZZLE_TRANSPOSE 2 95642542f5fSchristos 95742542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_1K 0 95842542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_2K 1 95942542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_4K 2 96042542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_8K 3 96142542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_16K 4 96242542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_32K 5 96342542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_64K 6 96442542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_128K 7 96542542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_256K 8 96642542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_512K 9 96742542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_1M 10 96842542f5fSchristos#define GEN8_SCRATCH_SPACE_SIZE_2M 11 96942542f5fSchristos 97042542f5fSchristosstruct gen8_blend_state { 97142542f5fSchristos struct { 97242542f5fSchristos /* 00 */ uint32_t pad:19; 97342542f5fSchristos /* 19 */ uint32_t y_dither_offset:2; 97442542f5fSchristos /* 21 */ uint32_t x_dither_offset:2; 97542542f5fSchristos /* 23 */ uint32_t color_dither_enable:1; 97642542f5fSchristos /* 24 */ uint32_t alpha_test_function:3; 97742542f5fSchristos /* 27 */ uint32_t alpha_test:1; 97842542f5fSchristos /* 28 */ uint32_t alpha_to_coverage_dither:1; 97942542f5fSchristos /* 29 */ uint32_t alpha_to_one:1; 98042542f5fSchristos /* 30 */ uint32_t ia_blend:1; 98142542f5fSchristos /* 31 */ uint32_t alpha_to_coverage:1; 98242542f5fSchristos } common; 98342542f5fSchristos 98442542f5fSchristos struct { 98542542f5fSchristos /* 00 */ uint32_t write_disable_blue:1; 98642542f5fSchristos /* 01 */ uint32_t write_disable_green:1; 98742542f5fSchristos /* 02 */ uint32_t write_disable_red:1; 98842542f5fSchristos /* 03 */ uint32_t write_disable_alpha:1; 98942542f5fSchristos /* 04 */ uint32_t pad0:1; 99042542f5fSchristos /* 05 */ uint32_t alpha_blend_function:3; 99142542f5fSchristos /* 08 */ uint32_t dest_alpha_blend_factor:5; 99242542f5fSchristos /* 13 */ uint32_t source_alpha_blend_factor:5; 99342542f5fSchristos /* 18 */ uint32_t color_blend_function:3; 99442542f5fSchristos /* 21 */ uint32_t dest_blend_factor:5; 99542542f5fSchristos /* 26 */ uint32_t source_blend_factor:5; 99642542f5fSchristos /* 31 */ uint32_t color_blend:1; 99742542f5fSchristos /* 32 */ uint32_t post_blend_clamp:1; 99842542f5fSchristos /* 33 */ uint32_t pre_blend_clamp:1; 99942542f5fSchristos /* 34 */ uint32_t color_clamp_range:2; 100042542f5fSchristos /* 36 */ uint32_t pre_blend_source_only_clamp:1; 100142542f5fSchristos /* 37 */ uint32_t pad1:22; 100242542f5fSchristos /* 59 */ uint32_t logic_op_function:4; 100342542f5fSchristos /* 63 */ uint32_t logic_op:1; 100442542f5fSchristos } rt; 100542542f5fSchristos}; 100642542f5fSchristos 100742542f5fSchristosstruct gen8_color_calc_state { 100842542f5fSchristos struct { 100942542f5fSchristos /* 00 */ uint32_t alpha_test_format:1; 101042542f5fSchristos /* 01 */ uint32_t pad0:14; 101142542f5fSchristos /* 15 */ uint32_t round_disable:1; 101242542f5fSchristos /* 16 */ uint32_t bf_stencil_ref:8; 101342542f5fSchristos /* 24 */ uint32_t stencil_ref:8; 101442542f5fSchristos } cc0; 101542542f5fSchristos 101642542f5fSchristos union { 101742542f5fSchristos float alpha_ref_f; 101842542f5fSchristos struct { 101942542f5fSchristos uint32_t ui:8; 102042542f5fSchristos uint32_t pad0:24; 102142542f5fSchristos } alpha_ref_fi; 102242542f5fSchristos } cc1; 102342542f5fSchristos 102442542f5fSchristos float constant_r; 102542542f5fSchristos float constant_g; 102642542f5fSchristos float constant_b; 102742542f5fSchristos float constant_a; 102842542f5fSchristos}; 102942542f5fSchristos 103042542f5fSchristosstruct gen8_sampler_state { 103142542f5fSchristos struct { 103242542f5fSchristos /* 00 */ unsigned int aniso_algorithm:1; 103342542f5fSchristos /* 01 */ unsigned int lod_bias:13; 103442542f5fSchristos /* 14 */ unsigned int min_filter:3; 103542542f5fSchristos /* 17 */ unsigned int mag_filter:3; 103642542f5fSchristos /* 20 */ unsigned int mip_filter:2; 103742542f5fSchristos /* 22 */ unsigned int base_level:5; 103842542f5fSchristos /* 27 */ unsigned int lod_preclamp:2; 103942542f5fSchristos /* 29 */ unsigned int default_color_mode:1; 104042542f5fSchristos /* 30 */ unsigned int flexible_filter_clamp:1; 104142542f5fSchristos /* 31 */ unsigned int disable:1; 104242542f5fSchristos } ss0; 104342542f5fSchristos 104442542f5fSchristos struct { 104542542f5fSchristos /* 00 */ unsigned int cube_control_mode:1; 104642542f5fSchristos /* 01 */ unsigned int shadow_function:3; 104742542f5fSchristos /* 04 */ unsigned int chroma_key_mode:1; 104842542f5fSchristos /* 05 */ unsigned int chroma_key_index:2; 104942542f5fSchristos /* 07 */ unsigned int chroma_key_enable:1; 105042542f5fSchristos /* 08 */ unsigned int max_lod:12; 105142542f5fSchristos /* 20 */ unsigned int min_lod:12; 105242542f5fSchristos } ss1; 105342542f5fSchristos 105442542f5fSchristos struct { 105542542f5fSchristos unsigned int pad:6; 105642542f5fSchristos unsigned int default_color_pointer:26; 105742542f5fSchristos } ss2; 105842542f5fSchristos 105942542f5fSchristos struct { 106042542f5fSchristos /* 00 */ unsigned int r_wrap_mode:3; 106142542f5fSchristos /* 03 */ unsigned int t_wrap_mode:3; 106242542f5fSchristos /* 06 */ unsigned int s_wrap_mode:3; 106342542f5fSchristos /* 09 */ unsigned int pad:1; 106442542f5fSchristos /* 10 */ unsigned int non_normalized_coord:1; 106542542f5fSchristos /* 11 */ unsigned int trilinear_quality:2; 106642542f5fSchristos /* 13 */ unsigned int address_round:6; 106742542f5fSchristos /* 19 */ unsigned int max_aniso:3; 106842542f5fSchristos /* 22 */ unsigned int pad0:2; 106942542f5fSchristos /* 24 */ unsigned int non_separable_filter:8; 107042542f5fSchristos } ss3; 107142542f5fSchristos}; 107242542f5fSchristos 107342542f5fSchristos/* Surface state DW0 */ 107442542f5fSchristos#define SURFACE_RC_READ_WRITE (1 << 8) 107542542f5fSchristos#define SURFACE_TILED (1 << 13) 107642542f5fSchristos#define SURFACE_TILED_Y (1 << 12) 107742542f5fSchristos#define SURFACE_FORMAT_SHIFT 18 107842542f5fSchristos#define SURFACE_VALIGN_1 (0 << 16) /* reserved! */ 107942542f5fSchristos#define SURFACE_VALIGN_4 (1 << 16) 108042542f5fSchristos#define SURFACE_VALIGN_8 (2 << 16) 108142542f5fSchristos#define SURFACE_VALIGN_16 (3 << 16) 108242542f5fSchristos#define SURFACE_HALIGN_1 (0 << 14) /* reserved! */ 108342542f5fSchristos#define SURFACE_HALIGN_4 (1 << 14) 108442542f5fSchristos#define SURFACE_HALIGN_8 (2 << 14) 108542542f5fSchristos#define SURFACE_HALIGN_16 (3 << 14) 108642542f5fSchristos#define SURFACE_TYPE_SHIFT 29 108742542f5fSchristos 108842542f5fSchristos/* Surface state DW2 */ 108942542f5fSchristos#define SURFACE_HEIGHT_SHIFT 16 109042542f5fSchristos#define SURFACE_WIDTH_SHIFT 0 109142542f5fSchristos 109242542f5fSchristos/* Surface state DW3 */ 109342542f5fSchristos#define SURFACE_DEPTH_SHIFT 21 109442542f5fSchristos#define SURFACE_PITCH_SHIFT 0 109542542f5fSchristos 109642542f5fSchristos#define SWIZZLE_ZERO 0 109742542f5fSchristos#define SWIZZLE_ONE 1 109842542f5fSchristos#define SWIZZLE_RED 4 109942542f5fSchristos#define SWIZZLE_GREEN 5 110042542f5fSchristos#define SWIZZLE_BLUE 6 110142542f5fSchristos#define SWIZZLE_ALPHA 7 110242542f5fSchristos#define __SURFACE_SWIZZLE(r,g,b,a) \ 110342542f5fSchristos ((a) << 16 | (b) << 19 | (g) << 22 | (r) << 25) 110442542f5fSchristos#define SURFACE_SWIZZLE(r,g,b,a) \ 110542542f5fSchristos __SURFACE_SWIZZLE(SWIZZLE_##r, SWIZZLE_##g, SWIZZLE_##b, SWIZZLE_##a) 110642542f5fSchristos 110742542f5fSchristostypedef enum { 110842542f5fSchristos SAMPLER_FILTER_NEAREST = 0, 110942542f5fSchristos SAMPLER_FILTER_BILINEAR, 111042542f5fSchristos FILTER_COUNT 111142542f5fSchristos} sampler_filter_t; 111242542f5fSchristos 111342542f5fSchristostypedef enum { 111442542f5fSchristos SAMPLER_EXTEND_NONE = 0, 111542542f5fSchristos SAMPLER_EXTEND_REPEAT, 111642542f5fSchristos SAMPLER_EXTEND_PAD, 111742542f5fSchristos SAMPLER_EXTEND_REFLECT, 111842542f5fSchristos EXTEND_COUNT 111942542f5fSchristos} sampler_extend_t; 112042542f5fSchristos 112142542f5fSchristos#endif 1122