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