1428d7b3dSmrg/************************************************************************** 2428d7b3dSmrg * 3428d7b3dSmrg * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 4428d7b3dSmrg * All Rights Reserved. 5428d7b3dSmrg * 6428d7b3dSmrg * Permission is hereby granted, free of charge, to any person obtaining a 7428d7b3dSmrg * copy of this software and associated documentation files (the 8428d7b3dSmrg * "Software"), to deal in the Software without restriction, including 9428d7b3dSmrg * without limitation the rights to use, copy, modify, merge, publish, 10428d7b3dSmrg * distribute, sub license, and/or sell copies of the Software, and to 11428d7b3dSmrg * permit persons to whom the Software is furnished to do so, subject to 12428d7b3dSmrg * the following conditions: 13428d7b3dSmrg * 14428d7b3dSmrg * The above copyright notice and this permission notice (including the 15428d7b3dSmrg * next paragraph) shall be included in all copies or substantial portions 16428d7b3dSmrg * of the Software. 17428d7b3dSmrg * 18428d7b3dSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19428d7b3dSmrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20428d7b3dSmrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21428d7b3dSmrg * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22428d7b3dSmrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23428d7b3dSmrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24428d7b3dSmrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25428d7b3dSmrg * 26428d7b3dSmrg **************************************************************************/ 27428d7b3dSmrg 28428d7b3dSmrg/* 29428d7b3dSmrg * New regs for broadwater -- we need to split this file up sensibly somehow. 30428d7b3dSmrg */ 31428d7b3dSmrg#define BRW_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \ 32428d7b3dSmrg ((Pipeline) << 27) | \ 33428d7b3dSmrg ((Opcode) << 24) | \ 34428d7b3dSmrg ((Subopcode) << 16)) 35428d7b3dSmrg 36428d7b3dSmrg#define BRW_URB_FENCE BRW_3D(0, 0, 0) 37428d7b3dSmrg#define BRW_CS_URB_STATE BRW_3D(0, 0, 1) 38428d7b3dSmrg#define BRW_CONSTANT_BUFFER BRW_3D(0, 0, 2) 39428d7b3dSmrg#define BRW_STATE_PREFETCH BRW_3D(0, 0, 3) 40428d7b3dSmrg 41428d7b3dSmrg#define BRW_STATE_BASE_ADDRESS BRW_3D(0, 1, 1) 42428d7b3dSmrg#define BRW_STATE_SIP BRW_3D(0, 1, 2) 43428d7b3dSmrg#define BRW_PIPELINE_SELECT BRW_3D(0, 1, 4) 44428d7b3dSmrg 45428d7b3dSmrg#define NEW_PIPELINE_SELECT BRW_3D(1, 1, 4) 46428d7b3dSmrg 47428d7b3dSmrg#define BRW_MEDIA_STATE_POINTERS BRW_3D(2, 0, 0) 48428d7b3dSmrg#define BRW_MEDIA_OBJECT BRW_3D(2, 1, 0) 49428d7b3dSmrg 50428d7b3dSmrg#define BRW_3DSTATE_PIPELINED_POINTERS BRW_3D(3, 0, 0) 51428d7b3dSmrg#define BRW_3DSTATE_BINDING_TABLE_POINTERS BRW_3D(3, 0, 1) 52428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_PS (1 << 12)/* for GEN6 */ 53428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_GS (1 << 9) /* for GEN6 */ 54428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_VS (1 << 8) /* for GEN6 */ 55428d7b3dSmrg 56428d7b3dSmrg#define BRW_3DSTATE_VERTEX_BUFFERS BRW_3D(3, 0, 8) 57428d7b3dSmrg#define BRW_3DSTATE_VERTEX_ELEMENTS BRW_3D(3, 0, 9) 58428d7b3dSmrg#define BRW_3DSTATE_INDEX_BUFFER BRW_3D(3, 0, 0xa) 59428d7b3dSmrg#define BRW_3DSTATE_VF_STATISTICS BRW_3D(3, 0, 0xb) 60428d7b3dSmrg 61428d7b3dSmrg#define BRW_3DSTATE_DRAWING_RECTANGLE BRW_3D(3, 1, 0) 62428d7b3dSmrg#define BRW_3DSTATE_CONSTANT_COLOR BRW_3D(3, 1, 1) 63428d7b3dSmrg#define BRW_3DSTATE_SAMPLER_PALETTE_LOAD BRW_3D(3, 1, 2) 64428d7b3dSmrg#define BRW_3DSTATE_CHROMA_KEY BRW_3D(3, 1, 4) 65428d7b3dSmrg#define BRW_3DSTATE_DEPTH_BUFFER BRW_3D(3, 1, 5) 66428d7b3dSmrg# define BRW_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT 29 67428d7b3dSmrg# define BRW_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT 18 68428d7b3dSmrg 69428d7b3dSmrg#define BRW_3DSTATE_POLY_STIPPLE_OFFSET BRW_3D(3, 1, 6) 70428d7b3dSmrg#define BRW_3DSTATE_POLY_STIPPLE_PATTERN BRW_3D(3, 1, 7) 71428d7b3dSmrg#define BRW_3DSTATE_LINE_STIPPLE BRW_3D(3, 1, 8) 72428d7b3dSmrg#define BRW_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP BRW_3D(3, 1, 9) 73428d7b3dSmrg/* These two are BLC and CTG only, not BW or CL */ 74428d7b3dSmrg#define BRW_3DSTATE_AA_LINE_PARAMS BRW_3D(3, 1, 0xa) 75428d7b3dSmrg#define BRW_3DSTATE_GS_SVB_INDEX BRW_3D(3, 1, 0xb) 76428d7b3dSmrg 77428d7b3dSmrg#define BRW_PIPE_CONTROL BRW_3D(3, 2, 0) 78428d7b3dSmrg 79428d7b3dSmrg#define BRW_3DPRIMITIVE BRW_3D(3, 3, 0) 80428d7b3dSmrg 81428d7b3dSmrg#define BRW_3DSTATE_CLEAR_PARAMS BRW_3D(3, 1, 0x10) 82428d7b3dSmrg/* DW1 */ 83428d7b3dSmrg# define BRW_3DSTATE_DEPTH_CLEAR_VALID (1 << 15) 84428d7b3dSmrg 85428d7b3dSmrg/* for GEN6+ */ 86428d7b3dSmrg#define GEN6_3DSTATE_SAMPLER_STATE_POINTERS BRW_3D(3, 0, 0x02) 87428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS (1 << 12) 88428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS (1 << 9) 89428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS (1 << 8) 90428d7b3dSmrg 91428d7b3dSmrg#define GEN6_3DSTATE_URB BRW_3D(3, 0, 0x05) 92428d7b3dSmrg/* DW1 */ 93428d7b3dSmrg# define GEN6_3DSTATE_URB_VS_SIZE_SHIFT 16 94428d7b3dSmrg# define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT 0 95428d7b3dSmrg/* DW2 */ 96428d7b3dSmrg# define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT 8 97428d7b3dSmrg# define GEN6_3DSTATE_URB_GS_SIZE_SHIFT 0 98428d7b3dSmrg 99428d7b3dSmrg#define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS BRW_3D(3, 0, 0x0d) 100428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC (1 << 12) 101428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF (1 << 11) 102428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP (1 << 10) 103428d7b3dSmrg 104428d7b3dSmrg#define GEN6_3DSTATE_CC_STATE_POINTERS BRW_3D(3, 0, 0x0e) 105428d7b3dSmrg 106428d7b3dSmrg#define GEN6_3DSTATE_VS BRW_3D(3, 0, 0x10) 107428d7b3dSmrg 108428d7b3dSmrg#define GEN6_3DSTATE_GS BRW_3D(3, 0, 0x11) 109428d7b3dSmrg/* DW4 */ 110428d7b3dSmrg# define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT 0 111428d7b3dSmrg 112428d7b3dSmrg#define GEN6_3DSTATE_CLIP BRW_3D(3, 0, 0x12) 113428d7b3dSmrg 114428d7b3dSmrg#define GEN6_3DSTATE_SF BRW_3D(3, 0, 0x13) 115428d7b3dSmrg/* DW1 */ 116428d7b3dSmrg# define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT 22 117428d7b3dSmrg# define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT 11 118428d7b3dSmrg# define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT 4 119428d7b3dSmrg/* DW2 */ 120428d7b3dSmrg/* DW3 */ 121428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_BOTH (0 << 29) 122428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_NONE (1 << 29) 123428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_FRONT (2 << 29) 124428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_BACK (3 << 29) 125428d7b3dSmrg/* DW4 */ 126428d7b3dSmrg# define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT 29 127428d7b3dSmrg# define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT 27 128428d7b3dSmrg# define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT 25 129428d7b3dSmrg 130428d7b3dSmrg 131428d7b3dSmrg#define GEN6_3DSTATE_WM BRW_3D(3, 0, 0x14) 132428d7b3dSmrg/* DW2 */ 133428d7b3dSmrg# define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF 27 134428d7b3dSmrg# define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 135428d7b3dSmrg/* DW4 */ 136428d7b3dSmrg# define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT 16 137428d7b3dSmrg/* DW5 */ 138428d7b3dSmrg# define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT 25 139428d7b3dSmrg# define GEN6_3DSTATE_WM_DISPATCH_ENABLE (1 << 19) 140428d7b3dSmrg# define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE (1 << 1) 141428d7b3dSmrg# define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE (1 << 0) 142428d7b3dSmrg/* DW6 */ 143428d7b3dSmrg# define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT 20 144428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 15) 145428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 14) 146428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 13) 147428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 12) 148428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 11) 149428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 10) 150428d7b3dSmrg 151428d7b3dSmrg 152428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_VS BRW_3D(3, 0, 0x15) 153428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_GS BRW_3D(3, 0, 0x16) 154428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_PS BRW_3D(3, 0, 0x17) 155428d7b3dSmrg 156428d7b3dSmrg#define GEN6_3DSTATE_SAMPLE_MASK BRW_3D(3, 0, 0x18) 157428d7b3dSmrg 158428d7b3dSmrg#define GEN6_3DSTATE_MULTISAMPLE BRW_3D(3, 1, 0x0d) 159428d7b3dSmrg/* DW1 */ 160428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER (0 << 4) 161428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT (1 << 4) 162428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1 (0 << 1) 163428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4 (2 << 1) 164428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8 (3 << 1) 165428d7b3dSmrg 166428d7b3dSmrg/* on GEN7+ */ 167428d7b3dSmrg/* _3DSTATE_VERTEX_BUFFERS on GEN7*/ 168428d7b3dSmrg/* DW1 */ 169428d7b3dSmrg#define GEN7_VB0_ADDRESS_MODIFYENABLE (1 << 14) 170428d7b3dSmrg 171428d7b3dSmrg/* _3DPRIMITIVE on GEN7 */ 172428d7b3dSmrg/* DW1 */ 173428d7b3dSmrg# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 8) 174428d7b3dSmrg# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM (1 << 8) 175428d7b3dSmrg 176428d7b3dSmrg/* 3DSTATE_WM on GEN7 */ 177428d7b3dSmrg/* DW1 */ 178428d7b3dSmrg# define GEN7_WM_STATISTICS_ENABLE (1 << 31) 179428d7b3dSmrg# define GEN7_WM_DEPTH_CLEAR (1 << 30) 180428d7b3dSmrg# define GEN7_WM_DISPATCH_ENABLE (1 << 29) 181428d7b3dSmrg# define GEN6_WM_DEPTH_RESOLVE (1 << 28) 182428d7b3dSmrg# define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE (1 << 27) 183428d7b3dSmrg# define GEN7_WM_KILL_ENABLE (1 << 25) 184428d7b3dSmrg# define GEN7_WM_PSCDEPTH_OFF (0 << 23) 185428d7b3dSmrg# define GEN7_WM_PSCDEPTH_ON (1 << 23) 186428d7b3dSmrg# define GEN7_WM_PSCDEPTH_ON_GE (2 << 23) 187428d7b3dSmrg# define GEN7_WM_PSCDEPTH_ON_LE (3 << 23) 188428d7b3dSmrg# define GEN7_WM_USES_SOURCE_DEPTH (1 << 20) 189428d7b3dSmrg# define GEN7_WM_USES_SOURCE_W (1 << 19) 190428d7b3dSmrg# define GEN7_WM_POSITION_ZW_PIXEL (0 << 17) 191428d7b3dSmrg# define GEN7_WM_POSITION_ZW_CENTROID (2 << 17) 192428d7b3dSmrg# define GEN7_WM_POSITION_ZW_SAMPLE (3 << 17) 193428d7b3dSmrg# define GEN7_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 16) 194428d7b3dSmrg# define GEN7_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 15) 195428d7b3dSmrg# define GEN7_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 14) 196428d7b3dSmrg# define GEN7_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 13) 197428d7b3dSmrg# define GEN7_WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 12) 198428d7b3dSmrg# define GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 11) 199428d7b3dSmrg# define GEN7_WM_USES_INPUT_COVERAGE_MASK (1 << 10) 200428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5 (0 << 8) 201428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0 (1 << 8) 202428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0 (2 << 8) 203428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0 (3 << 8) 204428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_0_5 (0 << 6) 205428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_1_0 (1 << 6) 206428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_2_0 (2 << 6) 207428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_4_0 (3 << 6) 208428d7b3dSmrg# define GEN7_WM_POLYGON_STIPPLE_ENABLE (1 << 4) 209428d7b3dSmrg# define GEN7_WM_LINE_STIPPLE_ENABLE (1 << 3) 210428d7b3dSmrg# define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT (1 << 2) 211428d7b3dSmrg# define GEN7_WM_MSRAST_OFF_PIXEL (0 << 0) 212428d7b3dSmrg# define GEN7_WM_MSRAST_OFF_PATTERN (1 << 0) 213428d7b3dSmrg# define GEN7_WM_MSRAST_ON_PIXEL (2 << 0) 214428d7b3dSmrg# define GEN7_WM_MSRAST_ON_PATTERN (3 << 0) 215428d7b3dSmrg/* DW2 */ 216428d7b3dSmrg# define GEN7_WM_MSDISPMODE_PERPIXEL (1 << 31) 217428d7b3dSmrg 218428d7b3dSmrg#define GEN7_3DSTATE_CLEAR_PARAMS BRW_3D(3, 0, 0x04) 219428d7b3dSmrg#define GEN7_3DSTATE_DEPTH_BUFFER BRW_3D(3, 0, 0x05) 220428d7b3dSmrg 221428d7b3dSmrg#define GEN7_3DSTATE_CONSTANT_HS BRW_3D(3, 0, 0x19) 222428d7b3dSmrg#define GEN7_3DSTATE_CONSTANT_DS BRW_3D(3, 0, 0x1a) 223428d7b3dSmrg 224428d7b3dSmrg#define GEN7_3DSTATE_HS BRW_3D(3, 0, 0x1b) 225428d7b3dSmrg#define GEN7_3DSTATE_TE BRW_3D(3, 0, 0x1c) 226428d7b3dSmrg#define GEN7_3DSTATE_DS BRW_3D(3, 0, 0x1d) 227428d7b3dSmrg#define GEN7_3DSTATE_STREAMOUT BRW_3D(3, 0, 0x1e) 228428d7b3dSmrg#define GEN7_3DSTATE_SBE BRW_3D(3, 0, 0x1f) 229428d7b3dSmrg 230428d7b3dSmrg/* DW1 */ 231428d7b3dSmrg# define GEN7_SBE_SWIZZLE_CONTROL_MODE (1 << 28) 232428d7b3dSmrg# define GEN7_SBE_NUM_OUTPUTS_SHIFT 22 233428d7b3dSmrg# define GEN7_SBE_SWIZZLE_ENABLE (1 << 21) 234428d7b3dSmrg# define GEN7_SBE_POINT_SPRITE_LOWERLEFT (1 << 20) 235428d7b3dSmrg# define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT 11 236428d7b3dSmrg# define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT 4 237428d7b3dSmrg 238428d7b3dSmrg#define GEN7_3DSTATE_PS BRW_3D(3, 0, 0x20) 239428d7b3dSmrg/* DW1: kernel pointer */ 240428d7b3dSmrg/* DW2 */ 241428d7b3dSmrg# define GEN7_PS_SPF_MODE (1 << 31) 242428d7b3dSmrg# define GEN7_PS_VECTOR_MASK_ENABLE (1 << 30) 243428d7b3dSmrg# define GEN7_PS_SAMPLER_COUNT_SHIFT 27 244428d7b3dSmrg# define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 245428d7b3dSmrg# define GEN7_PS_FLOATING_POINT_MODE_IEEE_754 (0 << 16) 246428d7b3dSmrg# define GEN7_PS_FLOATING_POINT_MODE_ALT (1 << 16) 247428d7b3dSmrg/* DW3: scratch space */ 248428d7b3dSmrg/* DW4 */ 249428d7b3dSmrg# define GEN7_PS_MAX_THREADS_SHIFT_IVB 24 250428d7b3dSmrg# define GEN7_PS_MAX_THREADS_SHIFT_HSW 23 251428d7b3dSmrg# define GEN7_PS_SAMPLE_MASK_SHIFT_HSW 12 252428d7b3dSmrg# define GEN7_PS_PUSH_CONSTANT_ENABLE (1 << 11) 253428d7b3dSmrg# define GEN7_PS_ATTRIBUTE_ENABLE (1 << 10) 254428d7b3dSmrg# define GEN7_PS_OMASK_TO_RENDER_TARGET (1 << 9) 255428d7b3dSmrg# define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE (1 << 7) 256428d7b3dSmrg# define GEN7_PS_POSOFFSET_NONE (0 << 3) 257428d7b3dSmrg# define GEN7_PS_POSOFFSET_CENTROID (2 << 3) 258428d7b3dSmrg# define GEN7_PS_POSOFFSET_SAMPLE (3 << 3) 259428d7b3dSmrg# define GEN7_PS_32_DISPATCH_ENABLE (1 << 2) 260428d7b3dSmrg# define GEN7_PS_16_DISPATCH_ENABLE (1 << 1) 261428d7b3dSmrg# define GEN7_PS_8_DISPATCH_ENABLE (1 << 0) 262428d7b3dSmrg/* DW5 */ 263428d7b3dSmrg# define GEN7_PS_DISPATCH_START_GRF_SHIFT_0 16 264428d7b3dSmrg# define GEN7_PS_DISPATCH_START_GRF_SHIFT_1 8 265428d7b3dSmrg# define GEN7_PS_DISPATCH_START_GRF_SHIFT_2 0 266428d7b3dSmrg/* DW6: kernel 1 pointer */ 267428d7b3dSmrg/* DW7: kernel 2 pointer */ 268428d7b3dSmrg 269428d7b3dSmrg#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL BRW_3D(3, 0, 0x21) 270428d7b3dSmrg#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC BRW_3D(3, 0, 0x23) 271428d7b3dSmrg 272428d7b3dSmrg#define GEN7_3DSTATE_BLEND_STATE_POINTERS BRW_3D(3, 0, 0x24) 273428d7b3dSmrg#define GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS BRW_3D(3, 0, 0x25) 274428d7b3dSmrg 275428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS BRW_3D(3, 0, 0x26) 276428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS BRW_3D(3, 0, 0x27) 277428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS BRW_3D(3, 0, 0x28) 278428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS BRW_3D(3, 0, 0x29) 279428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS BRW_3D(3, 0, 0x2a) 280428d7b3dSmrg 281428d7b3dSmrg#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS BRW_3D(3, 0, 0x2b) 282428d7b3dSmrg#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS BRW_3D(3, 0, 0x2e) 283428d7b3dSmrg#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS BRW_3D(3, 0, 0x2f) 284428d7b3dSmrg 285428d7b3dSmrg#define GEN7_3DSTATE_URB_VS BRW_3D(3, 0, 0x30) 286428d7b3dSmrg#define GEN7_3DSTATE_URB_HS BRW_3D(3, 0, 0x31) 287428d7b3dSmrg#define GEN7_3DSTATE_URB_DS BRW_3D(3, 0, 0x32) 288428d7b3dSmrg#define GEN7_3DSTATE_URB_GS BRW_3D(3, 0, 0x33) 289428d7b3dSmrg/* DW1 */ 290428d7b3dSmrg# define GEN7_URB_ENTRY_NUMBER_SHIFT 0 291428d7b3dSmrg# define GEN7_URB_ENTRY_SIZE_SHIFT 16 292428d7b3dSmrg# define GEN7_URB_STARTING_ADDRESS_SHIFT 25 293428d7b3dSmrg 294428d7b3dSmrg#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS BRW_3D(3, 1, 0x12) 295428d7b3dSmrg#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS BRW_3D(3, 1, 0x16) 296428d7b3dSmrg/* DW1 */ 297428d7b3dSmrg# define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16 298428d7b3dSmrg 299428d7b3dSmrg 300428d7b3dSmrg#define PIPELINE_SELECT_3D 0 301428d7b3dSmrg#define PIPELINE_SELECT_MEDIA 1 302428d7b3dSmrg 303428d7b3dSmrg#define UF0_CS_REALLOC (1 << 13) 304428d7b3dSmrg#define UF0_VFE_REALLOC (1 << 12) 305428d7b3dSmrg#define UF0_SF_REALLOC (1 << 11) 306428d7b3dSmrg#define UF0_CLIP_REALLOC (1 << 10) 307428d7b3dSmrg#define UF0_GS_REALLOC (1 << 9) 308428d7b3dSmrg#define UF0_VS_REALLOC (1 << 8) 309428d7b3dSmrg#define UF1_CLIP_FENCE_SHIFT 20 310428d7b3dSmrg#define UF1_GS_FENCE_SHIFT 10 311428d7b3dSmrg#define UF1_VS_FENCE_SHIFT 0 312428d7b3dSmrg#define UF2_CS_FENCE_SHIFT 20 313428d7b3dSmrg#define UF2_VFE_FENCE_SHIFT 10 314428d7b3dSmrg#define UF2_SF_FENCE_SHIFT 0 315428d7b3dSmrg 316428d7b3dSmrg/* for BRW_STATE_BASE_ADDRESS */ 317428d7b3dSmrg#define BASE_ADDRESS_MODIFY (1 << 0) 318428d7b3dSmrg 319428d7b3dSmrg/* for BRW_3DSTATE_PIPELINED_POINTERS */ 320428d7b3dSmrg#define BRW_GS_DISABLE 0 321428d7b3dSmrg#define BRW_GS_ENABLE 1 322428d7b3dSmrg#define BRW_CLIP_DISABLE 0 323428d7b3dSmrg#define BRW_CLIP_ENABLE 1 324428d7b3dSmrg 325428d7b3dSmrg/* for BRW_PIPE_CONTROL */ 326428d7b3dSmrg#define BRW_PIPE_CONTROL_CS_STALL (1 << 20) 327428d7b3dSmrg#define BRW_PIPE_CONTROL_NOWRITE (0 << 14) 328428d7b3dSmrg#define BRW_PIPE_CONTROL_WRITE_QWORD (1 << 14) 329428d7b3dSmrg#define BRW_PIPE_CONTROL_WRITE_DEPTH (2 << 14) 330428d7b3dSmrg#define BRW_PIPE_CONTROL_WRITE_TIME (3 << 14) 331428d7b3dSmrg#define BRW_PIPE_CONTROL_DEPTH_STALL (1 << 13) 332428d7b3dSmrg#define BRW_PIPE_CONTROL_WC_FLUSH (1 << 12) 333428d7b3dSmrg#define BRW_PIPE_CONTROL_IS_FLUSH (1 << 11) 334428d7b3dSmrg#define BRW_PIPE_CONTROL_TC_FLUSH (1 << 10) 335428d7b3dSmrg#define BRW_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8) 336428d7b3dSmrg#define BRW_PIPE_CONTROL_GLOBAL_GTT (1 << 2) 337428d7b3dSmrg#define BRW_PIPE_CONTROL_LOCAL_PGTT (0 << 2) 338428d7b3dSmrg#define BRW_PIPE_CONTROL_STALL_AT_SCOREBOARD (1 << 1) 339428d7b3dSmrg#define BRW_PIPE_CONTROL_DEPTH_CACHE_FLUSH (1 << 0) 340428d7b3dSmrg 341428d7b3dSmrg/* VERTEX_BUFFER_STATE Structure */ 342428d7b3dSmrg#define VB0_BUFFER_INDEX_SHIFT 27 343428d7b3dSmrg#define GEN6_VB0_BUFFER_INDEX_SHIFT 26 344428d7b3dSmrg#define VB0_VERTEXDATA (0 << 26) 345428d7b3dSmrg#define VB0_INSTANCEDATA (1 << 26) 346428d7b3dSmrg#define GEN6_VB0_VERTEXDATA (0 << 20) 347428d7b3dSmrg#define GEN6_VB0_INSTANCEDATA (1 << 20) 348428d7b3dSmrg#define VB0_BUFFER_PITCH_SHIFT 0 349428d7b3dSmrg 350428d7b3dSmrg/* VERTEX_ELEMENT_STATE Structure */ 351428d7b3dSmrg#define VE0_VERTEX_BUFFER_INDEX_SHIFT 27 352428d7b3dSmrg#define GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT 26 /* for GEN6 */ 353428d7b3dSmrg#define VE0_VALID (1 << 26) 354428d7b3dSmrg#define GEN6_VE0_VALID (1 << 25) /* for GEN6 */ 355428d7b3dSmrg#define VE0_FORMAT_SHIFT 16 356428d7b3dSmrg#define VE0_OFFSET_SHIFT 0 357428d7b3dSmrg#define VE1_VFCOMPONENT_0_SHIFT 28 358428d7b3dSmrg#define VE1_VFCOMPONENT_1_SHIFT 24 359428d7b3dSmrg#define VE1_VFCOMPONENT_2_SHIFT 20 360428d7b3dSmrg#define VE1_VFCOMPONENT_3_SHIFT 16 361428d7b3dSmrg#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT 0 362428d7b3dSmrg 363428d7b3dSmrg/* 3DPRIMITIVE bits */ 364428d7b3dSmrg#define BRW_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15) 365428d7b3dSmrg#define BRW_3DPRIMITIVE_VERTEX_RANDOM (1 << 15) 366428d7b3dSmrg/* Primitive types are in brw_defines.h */ 367428d7b3dSmrg#define BRW_3DPRIMITIVE_TOPOLOGY_SHIFT 10 368428d7b3dSmrg 369428d7b3dSmrg#define BRW_SVG_CTL 0x7400 370428d7b3dSmrg 371428d7b3dSmrg#define BRW_SVG_CTL_GS_BA (0 << 8) 372428d7b3dSmrg#define BRW_SVG_CTL_SS_BA (1 << 8) 373428d7b3dSmrg#define BRW_SVG_CTL_IO_BA (2 << 8) 374428d7b3dSmrg#define BRW_SVG_CTL_GS_AUB (3 << 8) 375428d7b3dSmrg#define BRW_SVG_CTL_IO_AUB (4 << 8) 376428d7b3dSmrg#define BRW_SVG_CTL_SIP (5 << 8) 377428d7b3dSmrg 378428d7b3dSmrg#define BRW_SVG_RDATA 0x7404 379428d7b3dSmrg#define BRW_SVG_WORK_CTL 0x7408 380428d7b3dSmrg 381428d7b3dSmrg#define BRW_VF_CTL 0x7500 382428d7b3dSmrg 383428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_COMPLETE (1 << 31) 384428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID (0 << 8) 385428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG (1 << 8) 386428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE (0 << 4) 387428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX (1 << 4) 388428d7b3dSmrg#define BRW_VF_CTL_SKIP_INITIAL_PRIMITIVES (1 << 3) 389428d7b3dSmrg#define BRW_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE (1 << 2) 390428d7b3dSmrg#define BRW_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE (1 << 1) 391428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_ENABLE (1 << 0) 392428d7b3dSmrg 393428d7b3dSmrg#define BRW_VF_STRG_VAL 0x7504 394428d7b3dSmrg#define BRW_VF_STR_VL_OVR 0x7508 395428d7b3dSmrg#define BRW_VF_VC_OVR 0x750c 396428d7b3dSmrg#define BRW_VF_STR_PSKIP 0x7510 397428d7b3dSmrg#define BRW_VF_MAX_PRIM 0x7514 398428d7b3dSmrg#define BRW_VF_RDATA 0x7518 399428d7b3dSmrg 400428d7b3dSmrg#define BRW_VS_CTL 0x7600 401428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_COMPLETE (1 << 31) 402428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_0 (0 << 8) 403428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_1 (1 << 8) 404428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VALID_COUNT (2 << 8) 405428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER (3 << 8) 406428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 407428d7b3dSmrg#define BRW_VS_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 408428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_ENABLE (1 << 0) 409428d7b3dSmrg 410428d7b3dSmrg#define BRW_VS_STRG_VAL 0x7604 411428d7b3dSmrg#define BRW_VS_RDATA 0x7608 412428d7b3dSmrg 413428d7b3dSmrg#define BRW_SF_CTL 0x7b00 414428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_COMPLETE (1 << 31) 415428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID (0 << 8) 416428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8) 417428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID (2 << 8) 418428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8) 419428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID (4 << 8) 420428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8) 421428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT (6 << 8) 422428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER (7 << 8) 423428d7b3dSmrg#define BRW_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE (1 << 4) 424428d7b3dSmrg#define BRW_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE (1 << 3) 425428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 426428d7b3dSmrg#define BRW_SF_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 427428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_ENABLE (1 << 0) 428428d7b3dSmrg 429428d7b3dSmrg#define BRW_SF_STRG_VAL 0x7b04 430428d7b3dSmrg#define BRW_SF_RDATA 0x7b18 431428d7b3dSmrg 432428d7b3dSmrg#define BRW_WIZ_CTL 0x7c00 433428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_COMPLETE (1 << 31) 434428d7b3dSmrg#define BRW_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT 16 435428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER (0 << 8) 436428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE (1 << 8) 437428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE (2 << 8) 438428d7b3dSmrg#define BRW_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH (1 << 6) 439428d7b3dSmrg#define BRW_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS (1 << 5) 440428d7b3dSmrg#define BRW_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE (1 << 4) 441428d7b3dSmrg#define BRW_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG (1 << 3) 442428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 443428d7b3dSmrg#define BRW_WIZ_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 444428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_ENABLE (1 << 0) 445428d7b3dSmrg 446428d7b3dSmrg#define BRW_WIZ_STRG_VAL 0x7c04 447428d7b3dSmrg#define BRW_WIZ_RDATA 0x7c18 448428d7b3dSmrg 449428d7b3dSmrg#define BRW_TS_CTL 0x7e00 450428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_COMPLETE (1 << 31) 451428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_MESSAGE_ERROR (0 << 8) 452428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR (3 << 8) 453428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS (1 << 2) 454428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS (1 << 1) 455428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_ENABLE (1 << 0) 456428d7b3dSmrg 457428d7b3dSmrg#define BRW_TS_STRG_VAL 0x7e04 458428d7b3dSmrg#define BRW_TS_RDATA 0x7e08 459428d7b3dSmrg 460428d7b3dSmrg#define BRW_TD_CTL 0x8000 461428d7b3dSmrg#define BRW_TD_CTL_MUX_SHIFT 8 462428d7b3dSmrg#define BRW_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH (1 << 7) 463428d7b3dSmrg#define BRW_TD_CTL_FORCE_EXTERNAL_HALT (1 << 6) 464428d7b3dSmrg#define BRW_TD_CTL_EXCEPTION_MASK_OVERRIDE (1 << 5) 465428d7b3dSmrg#define BRW_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE (1 << 4) 466428d7b3dSmrg#define BRW_TD_CTL_BREAKPOINT_ENABLE (1 << 2) 467428d7b3dSmrg#define BRW_TD_CTL2 0x8004 468428d7b3dSmrg#define BRW_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28) 469428d7b3dSmrg#define BRW_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE (1 << 26) 470428d7b3dSmrg#define BRW_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE (1 << 25) 471428d7b3dSmrg#define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT 16 472428d7b3dSmrg#define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE (1 << 8) 473428d7b3dSmrg#define BRW_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7) 474428d7b3dSmrg#define BRW_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE (1 << 6) 475428d7b3dSmrg#define BRW_TD_CTL2_SF_EXECUTION_MASK_ENABLE (1 << 5) 476428d7b3dSmrg#define BRW_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE (1 << 4) 477428d7b3dSmrg#define BRW_TD_CTL2_GS_EXECUTION_MASK_ENABLE (1 << 3) 478428d7b3dSmrg#define BRW_TD_CTL2_VS_EXECUTION_MASK_ENABLE (1 << 0) 479428d7b3dSmrg#define BRW_TD_VF_VS_EMSK 0x8008 480428d7b3dSmrg#define BRW_TD_GS_EMSK 0x800c 481428d7b3dSmrg#define BRW_TD_CLIP_EMSK 0x8010 482428d7b3dSmrg#define BRW_TD_SF_EMSK 0x8014 483428d7b3dSmrg#define BRW_TD_WIZ_EMSK 0x8018 484428d7b3dSmrg#define BRW_TD_0_6_EHTRG_VAL 0x801c 485428d7b3dSmrg#define BRW_TD_0_7_EHTRG_VAL 0x8020 486428d7b3dSmrg#define BRW_TD_0_6_EHTRG_MSK 0x8024 487428d7b3dSmrg#define BRW_TD_0_7_EHTRG_MSK 0x8028 488428d7b3dSmrg#define BRW_TD_RDATA 0x802c 489428d7b3dSmrg#define BRW_TD_TS_EMSK 0x8030 490428d7b3dSmrg 491428d7b3dSmrg#define BRW_EU_CTL 0x8800 492428d7b3dSmrg#define BRW_EU_CTL_SELECT_SHIFT 16 493428d7b3dSmrg#define BRW_EU_CTL_DATA_MUX_SHIFT 8 494428d7b3dSmrg#define BRW_EU_ATT_0 0x8810 495428d7b3dSmrg#define BRW_EU_ATT_1 0x8814 496428d7b3dSmrg#define BRW_EU_ATT_DATA_0 0x8820 497428d7b3dSmrg#define BRW_EU_ATT_DATA_1 0x8824 498428d7b3dSmrg#define BRW_EU_ATT_CLR_0 0x8830 499428d7b3dSmrg#define BRW_EU_ATT_CLR_1 0x8834 500428d7b3dSmrg#define BRW_EU_RDATA 0x8840 501428d7b3dSmrg 502428d7b3dSmrg/* End regs for broadwater */ 503428d7b3dSmrg 504