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#ifndef GEN5_RENDER_H 29428d7b3dSmrg#define GEN5_RENDER_H 30428d7b3dSmrg 31428d7b3dSmrg#define GEN5_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \ 32428d7b3dSmrg ((Pipeline) << 27) | \ 33428d7b3dSmrg ((Opcode) << 24) | \ 34428d7b3dSmrg ((Subopcode) << 16)) 35428d7b3dSmrg 36428d7b3dSmrg#define GEN5_URB_FENCE GEN5_3D(0, 0, 0) 37428d7b3dSmrg#define GEN5_CS_URB_STATE GEN5_3D(0, 0, 1) 38428d7b3dSmrg#define GEN5_CONSTANT_BUFFER GEN5_3D(0, 0, 2) 39428d7b3dSmrg#define GEN5_STATE_PREFETCH GEN5_3D(0, 0, 3) 40428d7b3dSmrg 41428d7b3dSmrg#define GEN5_STATE_BASE_ADDRESS GEN5_3D(0, 1, 1) 42428d7b3dSmrg#define GEN5_STATE_SIP GEN5_3D(0, 1, 2) 43428d7b3dSmrg 44428d7b3dSmrg#define GEN5_PIPELINE_SELECT GEN5_3D(1, 1, 4) 45428d7b3dSmrg 46428d7b3dSmrg#define GEN5_MEDIA_STATE_POINTERS GEN5_3D(2, 0, 0) 47428d7b3dSmrg#define GEN5_MEDIA_OBJECT GEN5_3D(2, 1, 0) 48428d7b3dSmrg 49428d7b3dSmrg#define GEN5_3DSTATE_PIPELINED_POINTERS GEN5_3D(3, 0, 0) 50428d7b3dSmrg#define GEN5_3DSTATE_BINDING_TABLE_POINTERS GEN5_3D(3, 0, 1) 51428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_PS (1 << 12)/* for GEN6 */ 52428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_GS (1 << 9) /* for GEN6 */ 53428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_VS (1 << 8) /* for GEN6 */ 54428d7b3dSmrg 55428d7b3dSmrg#define GEN5_3DSTATE_VERTEX_BUFFERS GEN5_3D(3, 0, 8) 56428d7b3dSmrg#define GEN5_3DSTATE_VERTEX_ELEMENTS GEN5_3D(3, 0, 9) 57428d7b3dSmrg#define GEN5_3DSTATE_INDEX_BUFFER GEN5_3D(3, 0, 0xa) 58428d7b3dSmrg#define GEN5_3DSTATE_VF_STATISTICS GEN5_3D(3, 0, 0xb) 59428d7b3dSmrg 60428d7b3dSmrg#define GEN5_3DSTATE_DRAWING_RECTANGLE GEN5_3D(3, 1, 0) 61428d7b3dSmrg#define GEN5_3DSTATE_CONSTANT_COLOR GEN5_3D(3, 1, 1) 62428d7b3dSmrg#define GEN5_3DSTATE_SAMPLER_PALETTE_LOAD GEN5_3D(3, 1, 2) 63428d7b3dSmrg#define GEN5_3DSTATE_CHROMA_KEY GEN5_3D(3, 1, 4) 64428d7b3dSmrg#define GEN5_3DSTATE_DEPTH_BUFFER GEN5_3D(3, 1, 5) 65428d7b3dSmrg# define GEN5_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT 29 66428d7b3dSmrg# define GEN5_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT 18 67428d7b3dSmrg 68428d7b3dSmrg#define GEN5_3DSTATE_POLY_STIPPLE_OFFSET GEN5_3D(3, 1, 6) 69428d7b3dSmrg#define GEN5_3DSTATE_POLY_STIPPLE_PATTERN GEN5_3D(3, 1, 7) 70428d7b3dSmrg#define GEN5_3DSTATE_LINE_STIPPLE GEN5_3D(3, 1, 8) 71428d7b3dSmrg#define GEN5_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP GEN5_3D(3, 1, 9) 72428d7b3dSmrg/* These two are BLC and CTG only, not BW or CL */ 73428d7b3dSmrg#define GEN5_3DSTATE_AA_LINE_PARAMS GEN5_3D(3, 1, 0xa) 74428d7b3dSmrg#define GEN5_3DSTATE_GS_SVB_INDEX GEN5_3D(3, 1, 0xb) 75428d7b3dSmrg 76428d7b3dSmrg#define GEN5_PIPE_CONTROL GEN5_3D(3, 2, 0) 77428d7b3dSmrg 78428d7b3dSmrg#define GEN5_3DPRIMITIVE GEN5_3D(3, 3, 0) 79428d7b3dSmrg 80428d7b3dSmrg#define GEN5_3DSTATE_CLEAR_PARAMS GEN5_3D(3, 1, 0x10) 81428d7b3dSmrg/* DW1 */ 82428d7b3dSmrg# define GEN5_3DSTATE_DEPTH_CLEAR_VALID (1 << 15) 83428d7b3dSmrg 84428d7b3dSmrg/* for GEN6+ */ 85428d7b3dSmrg#define GEN6_3DSTATE_SAMPLER_STATE_POINTERS GEN5_3D(3, 0, 0x02) 86428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS (1 << 12) 87428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS (1 << 9) 88428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS (1 << 8) 89428d7b3dSmrg 90428d7b3dSmrg#define GEN6_3DSTATE_URB GEN5_3D(3, 0, 0x05) 91428d7b3dSmrg/* DW1 */ 92428d7b3dSmrg# define GEN6_3DSTATE_URB_VS_SIZE_SHIFT 16 93428d7b3dSmrg# define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT 0 94428d7b3dSmrg/* DW2 */ 95428d7b3dSmrg# define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT 8 96428d7b3dSmrg# define GEN6_3DSTATE_URB_GS_SIZE_SHIFT 0 97428d7b3dSmrg 98428d7b3dSmrg#define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS GEN5_3D(3, 0, 0x0d) 99428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC (1 << 12) 100428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF (1 << 11) 101428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP (1 << 10) 102428d7b3dSmrg 103428d7b3dSmrg#define GEN6_3DSTATE_CC_STATE_POINTERS GEN5_3D(3, 0, 0x0e) 104428d7b3dSmrg 105428d7b3dSmrg#define GEN6_3DSTATE_VS GEN5_3D(3, 0, 0x10) 106428d7b3dSmrg 107428d7b3dSmrg#define GEN6_3DSTATE_GS GEN5_3D(3, 0, 0x11) 108428d7b3dSmrg/* DW4 */ 109428d7b3dSmrg# define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT 0 110428d7b3dSmrg 111428d7b3dSmrg#define GEN6_3DSTATE_CLIP GEN5_3D(3, 0, 0x12) 112428d7b3dSmrg 113428d7b3dSmrg#define GEN6_3DSTATE_SF GEN5_3D(3, 0, 0x13) 114428d7b3dSmrg/* DW1 */ 115428d7b3dSmrg# define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT 22 116428d7b3dSmrg# define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT 11 117428d7b3dSmrg# define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT 4 118428d7b3dSmrg/* DW2 */ 119428d7b3dSmrg/* DW3 */ 120428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_BOTH (0 << 29) 121428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_NONE (1 << 29) 122428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_FRONT (2 << 29) 123428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_BACK (3 << 29) 124428d7b3dSmrg/* DW4 */ 125428d7b3dSmrg# define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT 29 126428d7b3dSmrg# define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT 27 127428d7b3dSmrg# define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT 25 128428d7b3dSmrg 129428d7b3dSmrg 130428d7b3dSmrg#define GEN6_3DSTATE_WM GEN5_3D(3, 0, 0x14) 131428d7b3dSmrg/* DW2 */ 132428d7b3dSmrg# define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF 27 133428d7b3dSmrg# define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 134428d7b3dSmrg/* DW4 */ 135428d7b3dSmrg# define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT 16 136428d7b3dSmrg/* DW5 */ 137428d7b3dSmrg# define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT 25 138428d7b3dSmrg# define GEN6_3DSTATE_WM_DISPATCH_ENABLE (1 << 19) 139428d7b3dSmrg# define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE (1 << 1) 140428d7b3dSmrg# define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE (1 << 0) 141428d7b3dSmrg/* DW6 */ 142428d7b3dSmrg# define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT 20 143428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 15) 144428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 14) 145428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 13) 146428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 12) 147428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 11) 148428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 10) 149428d7b3dSmrg 150428d7b3dSmrg 151428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_VS GEN5_3D(3, 0, 0x15) 152428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_GS GEN5_3D(3, 0, 0x16) 153428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_PS GEN5_3D(3, 0, 0x17) 154428d7b3dSmrg 155428d7b3dSmrg#define GEN6_3DSTATE_SAMPLE_MASK GEN5_3D(3, 0, 0x18) 156428d7b3dSmrg 157428d7b3dSmrg#define GEN6_3DSTATE_MULTISAMPLE GEN5_3D(3, 1, 0x0d) 158428d7b3dSmrg/* DW1 */ 159428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER (0 << 4) 160428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT (1 << 4) 161428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1 (0 << 1) 162428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4 (2 << 1) 163428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8 (3 << 1) 164428d7b3dSmrg 165428d7b3dSmrg#define PIPELINE_SELECT_3D 0 166428d7b3dSmrg#define PIPELINE_SELECT_MEDIA 1 167428d7b3dSmrg 168428d7b3dSmrg#define UF0_CS_REALLOC (1 << 13) 169428d7b3dSmrg#define UF0_VFE_REALLOC (1 << 12) 170428d7b3dSmrg#define UF0_SF_REALLOC (1 << 11) 171428d7b3dSmrg#define UF0_CLIP_REALLOC (1 << 10) 172428d7b3dSmrg#define UF0_GS_REALLOC (1 << 9) 173428d7b3dSmrg#define UF0_VS_REALLOC (1 << 8) 174428d7b3dSmrg#define UF1_CLIP_FENCE_SHIFT 20 175428d7b3dSmrg#define UF1_GS_FENCE_SHIFT 10 176428d7b3dSmrg#define UF1_VS_FENCE_SHIFT 0 177428d7b3dSmrg#define UF2_CS_FENCE_SHIFT 20 178428d7b3dSmrg#define UF2_VFE_FENCE_SHIFT 10 179428d7b3dSmrg#define UF2_SF_FENCE_SHIFT 0 180428d7b3dSmrg 181428d7b3dSmrg/* for GEN5_STATE_BASE_ADDRESS */ 182428d7b3dSmrg#define BASE_ADDRESS_MODIFY (1 << 0) 183428d7b3dSmrg 184428d7b3dSmrg/* for GEN5_3DSTATE_PIPELINED_POINTERS */ 185428d7b3dSmrg#define GEN5_GS_DISABLE 0 186428d7b3dSmrg#define GEN5_GS_ENABLE 1 187428d7b3dSmrg#define GEN5_CLIP_DISABLE 0 188428d7b3dSmrg#define GEN5_CLIP_ENABLE 1 189428d7b3dSmrg 190428d7b3dSmrg/* for GEN5_PIPE_CONTROL */ 191428d7b3dSmrg#define GEN5_PIPE_CONTROL_NOWRITE (0 << 14) 192428d7b3dSmrg#define GEN5_PIPE_CONTROL_WRITE_QWORD (1 << 14) 193428d7b3dSmrg#define GEN5_PIPE_CONTROL_WRITE_DEPTH (2 << 14) 194428d7b3dSmrg#define GEN5_PIPE_CONTROL_WRITE_TIME (3 << 14) 195428d7b3dSmrg#define GEN5_PIPE_CONTROL_DEPTH_STALL (1 << 13) 196428d7b3dSmrg#define GEN5_PIPE_CONTROL_WC_FLUSH (1 << 12) 197428d7b3dSmrg#define GEN5_PIPE_CONTROL_IS_FLUSH (1 << 11) 198428d7b3dSmrg#define GEN5_PIPE_CONTROL_TC_FLUSH (1 << 10) 199428d7b3dSmrg#define GEN5_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8) 200428d7b3dSmrg#define GEN5_PIPE_CONTROL_GLOBAL_GTT (1 << 2) 201428d7b3dSmrg#define GEN5_PIPE_CONTROL_LOCAL_PGTT (0 << 2) 202428d7b3dSmrg#define GEN5_PIPE_CONTROL_DEPTH_CACHE_FLUSH (1 << 0) 203428d7b3dSmrg 204428d7b3dSmrg/* VERTEX_BUFFER_STATE Structure */ 205428d7b3dSmrg#define VB0_BUFFER_INDEX_SHIFT 27 206428d7b3dSmrg#define GEN6_VB0_BUFFER_INDEX_SHIFT 26 207428d7b3dSmrg#define VB0_VERTEXDATA (0 << 26) 208428d7b3dSmrg#define VB0_INSTANCEDATA (1 << 26) 209428d7b3dSmrg#define GEN6_VB0_VERTEXDATA (0 << 20) 210428d7b3dSmrg#define GEN6_VB0_INSTANCEDATA (1 << 20) 211428d7b3dSmrg#define VB0_BUFFER_PITCH_SHIFT 0 212428d7b3dSmrg 213428d7b3dSmrg/* VERTEX_ELEMENT_STATE Structure */ 214428d7b3dSmrg#define VE0_VERTEX_BUFFER_INDEX_SHIFT 27 215428d7b3dSmrg#define GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT 26 /* for GEN6 */ 216428d7b3dSmrg#define VE0_VALID (1 << 26) 217428d7b3dSmrg#define GEN6_VE0_VALID (1 << 25) /* for GEN6 */ 218428d7b3dSmrg#define VE0_FORMAT_SHIFT 16 219428d7b3dSmrg#define VE0_OFFSET_SHIFT 0 220428d7b3dSmrg#define VE1_VFCOMPONENT_0_SHIFT 28 221428d7b3dSmrg#define VE1_VFCOMPONENT_1_SHIFT 24 222428d7b3dSmrg#define VE1_VFCOMPONENT_2_SHIFT 20 223428d7b3dSmrg#define VE1_VFCOMPONENT_3_SHIFT 16 224428d7b3dSmrg#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT 0 225428d7b3dSmrg 226428d7b3dSmrg/* 3DPRIMITIVE bits */ 227428d7b3dSmrg#define GEN5_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15) 228428d7b3dSmrg#define GEN5_3DPRIMITIVE_VERTEX_RANDOM (1 << 15) 229428d7b3dSmrg/* Primitive types are in gen5_defines.h */ 230428d7b3dSmrg#define GEN5_3DPRIMITIVE_TOPOLOGY_SHIFT 10 231428d7b3dSmrg 232428d7b3dSmrg#define GEN5_SVG_CTL 0x7400 233428d7b3dSmrg 234428d7b3dSmrg#define GEN5_SVG_CTL_GS_BA (0 << 8) 235428d7b3dSmrg#define GEN5_SVG_CTL_SS_BA (1 << 8) 236428d7b3dSmrg#define GEN5_SVG_CTL_IO_BA (2 << 8) 237428d7b3dSmrg#define GEN5_SVG_CTL_GS_AUB (3 << 8) 238428d7b3dSmrg#define GEN5_SVG_CTL_IO_AUB (4 << 8) 239428d7b3dSmrg#define GEN5_SVG_CTL_SIP (5 << 8) 240428d7b3dSmrg 241428d7b3dSmrg#define GEN5_SVG_RDATA 0x7404 242428d7b3dSmrg#define GEN5_SVG_WORK_CTL 0x7408 243428d7b3dSmrg 244428d7b3dSmrg#define GEN5_VF_CTL 0x7500 245428d7b3dSmrg 246428d7b3dSmrg#define GEN5_VF_CTL_SNAPSHOT_COMPLETE (1 << 31) 247428d7b3dSmrg#define GEN5_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID (0 << 8) 248428d7b3dSmrg#define GEN5_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG (1 << 8) 249428d7b3dSmrg#define GEN5_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE (0 << 4) 250428d7b3dSmrg#define GEN5_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX (1 << 4) 251428d7b3dSmrg#define GEN5_VF_CTL_SKIP_INITIAL_PRIMITIVES (1 << 3) 252428d7b3dSmrg#define GEN5_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE (1 << 2) 253428d7b3dSmrg#define GEN5_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE (1 << 1) 254428d7b3dSmrg#define GEN5_VF_CTL_SNAPSHOT_ENABLE (1 << 0) 255428d7b3dSmrg 256428d7b3dSmrg#define GEN5_VF_STRG_VAL 0x7504 257428d7b3dSmrg#define GEN5_VF_STR_VL_OVR 0x7508 258428d7b3dSmrg#define GEN5_VF_VC_OVR 0x750c 259428d7b3dSmrg#define GEN5_VF_STR_PSKIP 0x7510 260428d7b3dSmrg#define GEN5_VF_MAX_PRIM 0x7514 261428d7b3dSmrg#define GEN5_VF_RDATA 0x7518 262428d7b3dSmrg 263428d7b3dSmrg#define GEN5_VS_CTL 0x7600 264428d7b3dSmrg#define GEN5_VS_CTL_SNAPSHOT_COMPLETE (1 << 31) 265428d7b3dSmrg#define GEN5_VS_CTL_SNAPSHOT_MUX_VERTEX_0 (0 << 8) 266428d7b3dSmrg#define GEN5_VS_CTL_SNAPSHOT_MUX_VERTEX_1 (1 << 8) 267428d7b3dSmrg#define GEN5_VS_CTL_SNAPSHOT_MUX_VALID_COUNT (2 << 8) 268428d7b3dSmrg#define GEN5_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER (3 << 8) 269428d7b3dSmrg#define GEN5_VS_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 270428d7b3dSmrg#define GEN5_VS_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 271428d7b3dSmrg#define GEN5_VS_CTL_SNAPSHOT_ENABLE (1 << 0) 272428d7b3dSmrg 273428d7b3dSmrg#define GEN5_VS_STRG_VAL 0x7604 274428d7b3dSmrg#define GEN5_VS_RDATA 0x7608 275428d7b3dSmrg 276428d7b3dSmrg#define GEN5_SF_CTL 0x7b00 277428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_COMPLETE (1 << 31) 278428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID (0 << 8) 279428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8) 280428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID (2 << 8) 281428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8) 282428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID (4 << 8) 283428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8) 284428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT (6 << 8) 285428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER (7 << 8) 286428d7b3dSmrg#define GEN5_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE (1 << 4) 287428d7b3dSmrg#define GEN5_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE (1 << 3) 288428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 289428d7b3dSmrg#define GEN5_SF_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 290428d7b3dSmrg#define GEN5_SF_CTL_SNAPSHOT_ENABLE (1 << 0) 291428d7b3dSmrg 292428d7b3dSmrg#define GEN5_SF_STRG_VAL 0x7b04 293428d7b3dSmrg#define GEN5_SF_RDATA 0x7b18 294428d7b3dSmrg 295428d7b3dSmrg#define GEN5_WIZ_CTL 0x7c00 296428d7b3dSmrg#define GEN5_WIZ_CTL_SNAPSHOT_COMPLETE (1 << 31) 297428d7b3dSmrg#define GEN5_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT 16 298428d7b3dSmrg#define GEN5_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER (0 << 8) 299428d7b3dSmrg#define GEN5_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE (1 << 8) 300428d7b3dSmrg#define GEN5_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE (2 << 8) 301428d7b3dSmrg#define GEN5_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH (1 << 6) 302428d7b3dSmrg#define GEN5_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS (1 << 5) 303428d7b3dSmrg#define GEN5_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE (1 << 4) 304428d7b3dSmrg#define GEN5_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG (1 << 3) 305428d7b3dSmrg#define GEN5_WIZ_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 306428d7b3dSmrg#define GEN5_WIZ_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 307428d7b3dSmrg#define GEN5_WIZ_CTL_SNAPSHOT_ENABLE (1 << 0) 308428d7b3dSmrg 309428d7b3dSmrg#define GEN5_WIZ_STRG_VAL 0x7c04 310428d7b3dSmrg#define GEN5_WIZ_RDATA 0x7c18 311428d7b3dSmrg 312428d7b3dSmrg#define GEN5_TS_CTL 0x7e00 313428d7b3dSmrg#define GEN5_TS_CTL_SNAPSHOT_COMPLETE (1 << 31) 314428d7b3dSmrg#define GEN5_TS_CTL_SNAPSHOT_MESSAGE_ERROR (0 << 8) 315428d7b3dSmrg#define GEN5_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR (3 << 8) 316428d7b3dSmrg#define GEN5_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS (1 << 2) 317428d7b3dSmrg#define GEN5_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS (1 << 1) 318428d7b3dSmrg#define GEN5_TS_CTL_SNAPSHOT_ENABLE (1 << 0) 319428d7b3dSmrg 320428d7b3dSmrg#define GEN5_TS_STRG_VAL 0x7e04 321428d7b3dSmrg#define GEN5_TS_RDATA 0x7e08 322428d7b3dSmrg 323428d7b3dSmrg#define GEN5_TD_CTL 0x8000 324428d7b3dSmrg#define GEN5_TD_CTL_MUX_SHIFT 8 325428d7b3dSmrg#define GEN5_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH (1 << 7) 326428d7b3dSmrg#define GEN5_TD_CTL_FORCE_EXTERNAL_HALT (1 << 6) 327428d7b3dSmrg#define GEN5_TD_CTL_EXCEPTION_MASK_OVERRIDE (1 << 5) 328428d7b3dSmrg#define GEN5_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE (1 << 4) 329428d7b3dSmrg#define GEN5_TD_CTL_BREAKPOINT_ENABLE (1 << 2) 330428d7b3dSmrg#define GEN5_TD_CTL2 0x8004 331428d7b3dSmrg#define GEN5_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28) 332428d7b3dSmrg#define GEN5_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE (1 << 26) 333428d7b3dSmrg#define GEN5_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE (1 << 25) 334428d7b3dSmrg#define GEN5_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT 16 335428d7b3dSmrg#define GEN5_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE (1 << 8) 336428d7b3dSmrg#define GEN5_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7) 337428d7b3dSmrg#define GEN5_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE (1 << 6) 338428d7b3dSmrg#define GEN5_TD_CTL2_SF_EXECUTION_MASK_ENABLE (1 << 5) 339428d7b3dSmrg#define GEN5_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE (1 << 4) 340428d7b3dSmrg#define GEN5_TD_CTL2_GS_EXECUTION_MASK_ENABLE (1 << 3) 341428d7b3dSmrg#define GEN5_TD_CTL2_VS_EXECUTION_MASK_ENABLE (1 << 0) 342428d7b3dSmrg#define GEN5_TD_VF_VS_EMSK 0x8008 343428d7b3dSmrg#define GEN5_TD_GS_EMSK 0x800c 344428d7b3dSmrg#define GEN5_TD_CLIP_EMSK 0x8010 345428d7b3dSmrg#define GEN5_TD_SF_EMSK 0x8014 346428d7b3dSmrg#define GEN5_TD_WIZ_EMSK 0x8018 347428d7b3dSmrg#define GEN5_TD_0_6_EHTRG_VAL 0x801c 348428d7b3dSmrg#define GEN5_TD_0_7_EHTRG_VAL 0x8020 349428d7b3dSmrg#define GEN5_TD_0_6_EHTRG_MSK 0x8024 350428d7b3dSmrg#define GEN5_TD_0_7_EHTRG_MSK 0x8028 351428d7b3dSmrg#define GEN5_TD_RDATA 0x802c 352428d7b3dSmrg#define GEN5_TD_TS_EMSK 0x8030 353428d7b3dSmrg 354428d7b3dSmrg#define GEN5_EU_CTL 0x8800 355428d7b3dSmrg#define GEN5_EU_CTL_SELECT_SHIFT 16 356428d7b3dSmrg#define GEN5_EU_CTL_DATA_MUX_SHIFT 8 357428d7b3dSmrg#define GEN5_EU_ATT_0 0x8810 358428d7b3dSmrg#define GEN5_EU_ATT_1 0x8814 359428d7b3dSmrg#define GEN5_EU_ATT_DATA_0 0x8820 360428d7b3dSmrg#define GEN5_EU_ATT_DATA_1 0x8824 361428d7b3dSmrg#define GEN5_EU_ATT_CLR_0 0x8830 362428d7b3dSmrg#define GEN5_EU_ATT_CLR_1 0x8834 363428d7b3dSmrg#define GEN5_EU_RDATA 0x8840 364428d7b3dSmrg 365428d7b3dSmrg/* 3D state: 366428d7b3dSmrg */ 367428d7b3dSmrg#define _3DOP_3DSTATE_PIPELINED 0x0 368428d7b3dSmrg#define _3DOP_3DSTATE_NONPIPELINED 0x1 369428d7b3dSmrg#define _3DOP_3DCONTROL 0x2 370428d7b3dSmrg#define _3DOP_3DPRIMITIVE 0x3 371428d7b3dSmrg 372428d7b3dSmrg#define _3DSTATE_PIPELINED_POINTERS 0x00 373428d7b3dSmrg#define _3DSTATE_BINDING_TABLE_POINTERS 0x01 374428d7b3dSmrg#define _3DSTATE_VERTEX_BUFFERS 0x08 375428d7b3dSmrg#define _3DSTATE_VERTEX_ELEMENTS 0x09 376428d7b3dSmrg#define _3DSTATE_INDEX_BUFFER 0x0A 377428d7b3dSmrg#define _3DSTATE_VF_STATISTICS 0x0B 378428d7b3dSmrg#define _3DSTATE_DRAWING_RECTANGLE 0x00 379428d7b3dSmrg#define _3DSTATE_CONSTANT_COLOR 0x01 380428d7b3dSmrg#define _3DSTATE_SAMPLER_PALETTE_LOAD 0x02 381428d7b3dSmrg#define _3DSTATE_CHROMA_KEY 0x04 382428d7b3dSmrg#define _3DSTATE_DEPTH_BUFFER 0x05 383428d7b3dSmrg#define _3DSTATE_POLY_STIPPLE_OFFSET 0x06 384428d7b3dSmrg#define _3DSTATE_POLY_STIPPLE_PATTERN 0x07 385428d7b3dSmrg#define _3DSTATE_LINE_STIPPLE 0x08 386428d7b3dSmrg#define _3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP 0x09 387428d7b3dSmrg#define _3DCONTROL 0x00 388428d7b3dSmrg#define _3DPRIMITIVE 0x00 389428d7b3dSmrg 390428d7b3dSmrg#define _3DPRIM_POINTLIST 0x01 391428d7b3dSmrg#define _3DPRIM_LINELIST 0x02 392428d7b3dSmrg#define _3DPRIM_LINESTRIP 0x03 393428d7b3dSmrg#define _3DPRIM_TRILIST 0x04 394428d7b3dSmrg#define _3DPRIM_TRISTRIP 0x05 395428d7b3dSmrg#define _3DPRIM_TRIFAN 0x06 396428d7b3dSmrg#define _3DPRIM_QUADLIST 0x07 397428d7b3dSmrg#define _3DPRIM_QUADSTRIP 0x08 398428d7b3dSmrg#define _3DPRIM_LINELIST_ADJ 0x09 399428d7b3dSmrg#define _3DPRIM_LINESTRIP_ADJ 0x0A 400428d7b3dSmrg#define _3DPRIM_TRILIST_ADJ 0x0B 401428d7b3dSmrg#define _3DPRIM_TRISTRIP_ADJ 0x0C 402428d7b3dSmrg#define _3DPRIM_TRISTRIP_REVERSE 0x0D 403428d7b3dSmrg#define _3DPRIM_POLYGON 0x0E 404428d7b3dSmrg#define _3DPRIM_RECTLIST 0x0F 405428d7b3dSmrg#define _3DPRIM_LINELOOP 0x10 406428d7b3dSmrg#define _3DPRIM_POINTLIST_BF 0x11 407428d7b3dSmrg#define _3DPRIM_LINESTRIP_CONT 0x12 408428d7b3dSmrg#define _3DPRIM_LINESTRIP_BF 0x13 409428d7b3dSmrg#define _3DPRIM_LINESTRIP_CONT_BF 0x14 410428d7b3dSmrg#define _3DPRIM_TRIFAN_NOSTIPPLE 0x15 411428d7b3dSmrg 412428d7b3dSmrg#define _3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL 0 413428d7b3dSmrg#define _3DPRIM_VERTEXBUFFER_ACCESS_RANDOM 1 414428d7b3dSmrg 415428d7b3dSmrg#define GEN5_ANISORATIO_2 0 416428d7b3dSmrg#define GEN5_ANISORATIO_4 1 417428d7b3dSmrg#define GEN5_ANISORATIO_6 2 418428d7b3dSmrg#define GEN5_ANISORATIO_8 3 419428d7b3dSmrg#define GEN5_ANISORATIO_10 4 420428d7b3dSmrg#define GEN5_ANISORATIO_12 5 421428d7b3dSmrg#define GEN5_ANISORATIO_14 6 422428d7b3dSmrg#define GEN5_ANISORATIO_16 7 423428d7b3dSmrg 424428d7b3dSmrg#define GEN5_BLENDFACTOR_ONE 0x1 425428d7b3dSmrg#define GEN5_BLENDFACTOR_SRC_COLOR 0x2 426428d7b3dSmrg#define GEN5_BLENDFACTOR_SRC_ALPHA 0x3 427428d7b3dSmrg#define GEN5_BLENDFACTOR_DST_ALPHA 0x4 428428d7b3dSmrg#define GEN5_BLENDFACTOR_DST_COLOR 0x5 429428d7b3dSmrg#define GEN5_BLENDFACTOR_SRC_ALPHA_SATURATE 0x6 430428d7b3dSmrg#define GEN5_BLENDFACTOR_CONST_COLOR 0x7 431428d7b3dSmrg#define GEN5_BLENDFACTOR_CONST_ALPHA 0x8 432428d7b3dSmrg#define GEN5_BLENDFACTOR_SRC1_COLOR 0x9 433428d7b3dSmrg#define GEN5_BLENDFACTOR_SRC1_ALPHA 0x0A 434428d7b3dSmrg#define GEN5_BLENDFACTOR_ZERO 0x11 435428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_SRC_COLOR 0x12 436428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_SRC_ALPHA 0x13 437428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_DST_ALPHA 0x14 438428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_DST_COLOR 0x15 439428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_CONST_COLOR 0x17 440428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_CONST_ALPHA 0x18 441428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_SRC1_COLOR 0x19 442428d7b3dSmrg#define GEN5_BLENDFACTOR_INV_SRC1_ALPHA 0x1A 443428d7b3dSmrg 444428d7b3dSmrg#define GEN5_BLENDFUNCTION_ADD 0 445428d7b3dSmrg#define GEN5_BLENDFUNCTION_SUBTRACT 1 446428d7b3dSmrg#define GEN5_BLENDFUNCTION_REVERSE_SUBTRACT 2 447428d7b3dSmrg#define GEN5_BLENDFUNCTION_MIN 3 448428d7b3dSmrg#define GEN5_BLENDFUNCTION_MAX 4 449428d7b3dSmrg 450428d7b3dSmrg#define GEN5_ALPHATEST_FORMAT_UNORM8 0 451428d7b3dSmrg#define GEN5_ALPHATEST_FORMAT_FLOAT32 1 452428d7b3dSmrg 453428d7b3dSmrg#define GEN5_CHROMAKEY_KILL_ON_ANY_MATCH 0 454428d7b3dSmrg#define GEN5_CHROMAKEY_REPLACE_BLACK 1 455428d7b3dSmrg 456428d7b3dSmrg#define GEN5_CLIP_API_OGL 0 457428d7b3dSmrg#define GEN5_CLIP_API_DX 1 458428d7b3dSmrg 459428d7b3dSmrg#define GEN5_CLIPMODE_NORMAL 0 460428d7b3dSmrg#define GEN5_CLIPMODE_CLIP_ALL 1 461428d7b3dSmrg#define GEN5_CLIPMODE_CLIP_NON_REJECTED 2 462428d7b3dSmrg#define GEN5_CLIPMODE_REJECT_ALL 3 463428d7b3dSmrg#define GEN5_CLIPMODE_ACCEPT_ALL 4 464428d7b3dSmrg 465428d7b3dSmrg#define GEN5_CLIP_NDCSPACE 0 466428d7b3dSmrg#define GEN5_CLIP_SCREENSPACE 1 467428d7b3dSmrg 468428d7b3dSmrg#define GEN5_COMPAREFUNCTION_ALWAYS 0 469428d7b3dSmrg#define GEN5_COMPAREFUNCTION_NEVER 1 470428d7b3dSmrg#define GEN5_COMPAREFUNCTION_LESS 2 471428d7b3dSmrg#define GEN5_COMPAREFUNCTION_EQUAL 3 472428d7b3dSmrg#define GEN5_COMPAREFUNCTION_LEQUAL 4 473428d7b3dSmrg#define GEN5_COMPAREFUNCTION_GREATER 5 474428d7b3dSmrg#define GEN5_COMPAREFUNCTION_NOTEQUAL 6 475428d7b3dSmrg#define GEN5_COMPAREFUNCTION_GEQUAL 7 476428d7b3dSmrg 477428d7b3dSmrg#define GEN5_COVERAGE_PIXELS_HALF 0 478428d7b3dSmrg#define GEN5_COVERAGE_PIXELS_1 1 479428d7b3dSmrg#define GEN5_COVERAGE_PIXELS_2 2 480428d7b3dSmrg#define GEN5_COVERAGE_PIXELS_4 3 481428d7b3dSmrg 482428d7b3dSmrg#define GEN5_CULLMODE_BOTH 0 483428d7b3dSmrg#define GEN5_CULLMODE_NONE 1 484428d7b3dSmrg#define GEN5_CULLMODE_FRONT 2 485428d7b3dSmrg#define GEN5_CULLMODE_BACK 3 486428d7b3dSmrg 487428d7b3dSmrg#define GEN5_DEFAULTCOLOR_R8G8B8A8_UNORM 0 488428d7b3dSmrg#define GEN5_DEFAULTCOLOR_R32G32B32A32_FLOAT 1 489428d7b3dSmrg 490428d7b3dSmrg#define GEN5_DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0 491428d7b3dSmrg#define GEN5_DEPTHFORMAT_D32_FLOAT 1 492428d7b3dSmrg#define GEN5_DEPTHFORMAT_D24_UNORM_S8_UINT 2 493428d7b3dSmrg#define GEN5_DEPTHFORMAT_D16_UNORM 5 494428d7b3dSmrg 495428d7b3dSmrg#define GEN5_FLOATING_POINT_IEEE_754 0 496428d7b3dSmrg#define GEN5_FLOATING_POINT_NON_IEEE_754 1 497428d7b3dSmrg 498428d7b3dSmrg#define GEN5_FRONTWINDING_CW 0 499428d7b3dSmrg#define GEN5_FRONTWINDING_CCW 1 500428d7b3dSmrg 501428d7b3dSmrg#define GEN5_INDEX_BYTE 0 502428d7b3dSmrg#define GEN5_INDEX_WORD 1 503428d7b3dSmrg#define GEN5_INDEX_DWORD 2 504428d7b3dSmrg 505428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_CLEAR 0 506428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_NOR 1 507428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_AND_INVERTED 2 508428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_COPY_INVERTED 3 509428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_AND_REVERSE 4 510428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_INVERT 5 511428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_XOR 6 512428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_NAND 7 513428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_AND 8 514428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_EQUIV 9 515428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_NOOP 10 516428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_OR_INVERTED 11 517428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_COPY 12 518428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_OR_REVERSE 13 519428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_OR 14 520428d7b3dSmrg#define GEN5_LOGICOPFUNCTION_SET 15 521428d7b3dSmrg 522428d7b3dSmrg#define GEN5_MAPFILTER_NEAREST 0x0 523428d7b3dSmrg#define GEN5_MAPFILTER_LINEAR 0x1 524428d7b3dSmrg#define GEN5_MAPFILTER_ANISOTROPIC 0x2 525428d7b3dSmrg 526428d7b3dSmrg#define GEN5_MIPFILTER_NONE 0 527428d7b3dSmrg#define GEN5_MIPFILTER_NEAREST 1 528428d7b3dSmrg#define GEN5_MIPFILTER_LINEAR 3 529428d7b3dSmrg 530428d7b3dSmrg#define GEN5_POLYGON_FRONT_FACING 0 531428d7b3dSmrg#define GEN5_POLYGON_BACK_FACING 1 532428d7b3dSmrg 533428d7b3dSmrg#define GEN5_PREFILTER_ALWAYS 0x0 534428d7b3dSmrg#define GEN5_PREFILTER_NEVER 0x1 535428d7b3dSmrg#define GEN5_PREFILTER_LESS 0x2 536428d7b3dSmrg#define GEN5_PREFILTER_EQUAL 0x3 537428d7b3dSmrg#define GEN5_PREFILTER_LEQUAL 0x4 538428d7b3dSmrg#define GEN5_PREFILTER_GREATER 0x5 539428d7b3dSmrg#define GEN5_PREFILTER_NOTEQUAL 0x6 540428d7b3dSmrg#define GEN5_PREFILTER_GEQUAL 0x7 541428d7b3dSmrg 542428d7b3dSmrg#define GEN5_PROVOKING_VERTEX_0 0 543428d7b3dSmrg#define GEN5_PROVOKING_VERTEX_1 1 544428d7b3dSmrg#define GEN5_PROVOKING_VERTEX_2 2 545428d7b3dSmrg 546428d7b3dSmrg#define GEN5_RASTRULE_UPPER_LEFT 0 547428d7b3dSmrg#define GEN5_RASTRULE_UPPER_RIGHT 1 548428d7b3dSmrg 549428d7b3dSmrg#define GEN5_RENDERTARGET_CLAMPRANGE_UNORM 0 550428d7b3dSmrg#define GEN5_RENDERTARGET_CLAMPRANGE_SNORM 1 551428d7b3dSmrg#define GEN5_RENDERTARGET_CLAMPRANGE_FORMAT 2 552428d7b3dSmrg 553428d7b3dSmrg#define GEN5_STENCILOP_KEEP 0 554428d7b3dSmrg#define GEN5_STENCILOP_ZERO 1 555428d7b3dSmrg#define GEN5_STENCILOP_REPLACE 2 556428d7b3dSmrg#define GEN5_STENCILOP_INCRSAT 3 557428d7b3dSmrg#define GEN5_STENCILOP_DECRSAT 4 558428d7b3dSmrg#define GEN5_STENCILOP_INCR 5 559428d7b3dSmrg#define GEN5_STENCILOP_DECR 6 560428d7b3dSmrg#define GEN5_STENCILOP_INVERT 7 561428d7b3dSmrg 562428d7b3dSmrg#define GEN5_SURFACE_MIPMAPLAYOUT_BELOW 0 563428d7b3dSmrg#define GEN5_SURFACE_MIPMAPLAYOUT_RIGHT 1 564428d7b3dSmrg 565428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32A32_FLOAT 0x000 566428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32A32_SINT 0x001 567428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32A32_UINT 0x002 568428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32A32_UNORM 0x003 569428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32A32_SNORM 0x004 570428d7b3dSmrg#define GEN5_SURFACEFORMAT_R64G64_FLOAT 0x005 571428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32X32_FLOAT 0x006 572428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32A32_SSCALED 0x007 573428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32A32_USCALED 0x008 574428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32_FLOAT 0x040 575428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32_SINT 0x041 576428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32_UINT 0x042 577428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32_UNORM 0x043 578428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32_SNORM 0x044 579428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32_SSCALED 0x045 580428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32B32_USCALED 0x046 581428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16A16_UNORM 0x080 582428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16A16_SNORM 0x081 583428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16A16_SINT 0x082 584428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16A16_UINT 0x083 585428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16A16_FLOAT 0x084 586428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32_FLOAT 0x085 587428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32_SINT 0x086 588428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32_UINT 0x087 589428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS 0x088 590428d7b3dSmrg#define GEN5_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT 0x089 591428d7b3dSmrg#define GEN5_SURFACEFORMAT_L32A32_FLOAT 0x08A 592428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32_UNORM 0x08B 593428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32_SNORM 0x08C 594428d7b3dSmrg#define GEN5_SURFACEFORMAT_R64_FLOAT 0x08D 595428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16X16_UNORM 0x08E 596428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16X16_FLOAT 0x08F 597428d7b3dSmrg#define GEN5_SURFACEFORMAT_A32X32_FLOAT 0x090 598428d7b3dSmrg#define GEN5_SURFACEFORMAT_L32X32_FLOAT 0x091 599428d7b3dSmrg#define GEN5_SURFACEFORMAT_I32X32_FLOAT 0x092 600428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16A16_SSCALED 0x093 601428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16A16_USCALED 0x094 602428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32_SSCALED 0x095 603428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32G32_USCALED 0x096 604428d7b3dSmrg#define GEN5_SURFACEFORMAT_B8G8R8A8_UNORM 0x0C0 605428d7b3dSmrg#define GEN5_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB 0x0C1 606428d7b3dSmrg#define GEN5_SURFACEFORMAT_R10G10B10A2_UNORM 0x0C2 607428d7b3dSmrg#define GEN5_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB 0x0C3 608428d7b3dSmrg#define GEN5_SURFACEFORMAT_R10G10B10A2_UINT 0x0C4 609428d7b3dSmrg#define GEN5_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM 0x0C5 610428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8A8_UNORM 0x0C7 611428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB 0x0C8 612428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8A8_SNORM 0x0C9 613428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8A8_SINT 0x0CA 614428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8A8_UINT 0x0CB 615428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16_UNORM 0x0CC 616428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16_SNORM 0x0CD 617428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16_SINT 0x0CE 618428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16_UINT 0x0CF 619428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16_FLOAT 0x0D0 620428d7b3dSmrg#define GEN5_SURFACEFORMAT_B10G10R10A2_UNORM 0x0D1 621428d7b3dSmrg#define GEN5_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB 0x0D2 622428d7b3dSmrg#define GEN5_SURFACEFORMAT_R11G11B10_FLOAT 0x0D3 623428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_SINT 0x0D6 624428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_UINT 0x0D7 625428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_FLOAT 0x0D8 626428d7b3dSmrg#define GEN5_SURFACEFORMAT_R24_UNORM_X8_TYPELESS 0x0D9 627428d7b3dSmrg#define GEN5_SURFACEFORMAT_X24_TYPELESS_G8_UINT 0x0DA 628428d7b3dSmrg#define GEN5_SURFACEFORMAT_L16A16_UNORM 0x0DF 629428d7b3dSmrg#define GEN5_SURFACEFORMAT_I24X8_UNORM 0x0E0 630428d7b3dSmrg#define GEN5_SURFACEFORMAT_L24X8_UNORM 0x0E1 631428d7b3dSmrg#define GEN5_SURFACEFORMAT_A24X8_UNORM 0x0E2 632428d7b3dSmrg#define GEN5_SURFACEFORMAT_I32_FLOAT 0x0E3 633428d7b3dSmrg#define GEN5_SURFACEFORMAT_L32_FLOAT 0x0E4 634428d7b3dSmrg#define GEN5_SURFACEFORMAT_A32_FLOAT 0x0E5 635428d7b3dSmrg#define GEN5_SURFACEFORMAT_B8G8R8X8_UNORM 0x0E9 636428d7b3dSmrg#define GEN5_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB 0x0EA 637428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8X8_UNORM 0x0EB 638428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB 0x0EC 639428d7b3dSmrg#define GEN5_SURFACEFORMAT_R9G9B9E5_SHAREDEXP 0x0ED 640428d7b3dSmrg#define GEN5_SURFACEFORMAT_B10G10R10X2_UNORM 0x0EE 641428d7b3dSmrg#define GEN5_SURFACEFORMAT_L16A16_FLOAT 0x0F0 642428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_UNORM 0x0F1 643428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_SNORM 0x0F2 644428d7b3dSmrg#define GEN5_SURFACEFORMAT_R10G10B10X2_USCALED 0x0F3 645428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8A8_SSCALED 0x0F4 646428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8A8_USCALED 0x0F5 647428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16_SSCALED 0x0F6 648428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16_USCALED 0x0F7 649428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_SSCALED 0x0F8 650428d7b3dSmrg#define GEN5_SURFACEFORMAT_R32_USCALED 0x0F9 651428d7b3dSmrg#define GEN5_SURFACEFORMAT_B5G6R5_UNORM 0x100 652428d7b3dSmrg#define GEN5_SURFACEFORMAT_B5G6R5_UNORM_SRGB 0x101 653428d7b3dSmrg#define GEN5_SURFACEFORMAT_B5G5R5A1_UNORM 0x102 654428d7b3dSmrg#define GEN5_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB 0x103 655428d7b3dSmrg#define GEN5_SURFACEFORMAT_B4G4R4A4_UNORM 0x104 656428d7b3dSmrg#define GEN5_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB 0x105 657428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8_UNORM 0x106 658428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8_SNORM 0x107 659428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8_SINT 0x108 660428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8_UINT 0x109 661428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16_UNORM 0x10A 662428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16_SNORM 0x10B 663428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16_SINT 0x10C 664428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16_UINT 0x10D 665428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16_FLOAT 0x10E 666428d7b3dSmrg#define GEN5_SURFACEFORMAT_I16_UNORM 0x111 667428d7b3dSmrg#define GEN5_SURFACEFORMAT_L16_UNORM 0x112 668428d7b3dSmrg#define GEN5_SURFACEFORMAT_A16_UNORM 0x113 669428d7b3dSmrg#define GEN5_SURFACEFORMAT_L8A8_UNORM 0x114 670428d7b3dSmrg#define GEN5_SURFACEFORMAT_I16_FLOAT 0x115 671428d7b3dSmrg#define GEN5_SURFACEFORMAT_L16_FLOAT 0x116 672428d7b3dSmrg#define GEN5_SURFACEFORMAT_A16_FLOAT 0x117 673428d7b3dSmrg#define GEN5_SURFACEFORMAT_R5G5_SNORM_B6_UNORM 0x119 674428d7b3dSmrg#define GEN5_SURFACEFORMAT_B5G5R5X1_UNORM 0x11A 675428d7b3dSmrg#define GEN5_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB 0x11B 676428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8_SSCALED 0x11C 677428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8_USCALED 0x11D 678428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16_SSCALED 0x11E 679428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16_USCALED 0x11F 680428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8_UNORM 0x140 681428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8_SNORM 0x141 682428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8_SINT 0x142 683428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8_UINT 0x143 684428d7b3dSmrg#define GEN5_SURFACEFORMAT_A8_UNORM 0x144 685428d7b3dSmrg#define GEN5_SURFACEFORMAT_I8_UNORM 0x145 686428d7b3dSmrg#define GEN5_SURFACEFORMAT_L8_UNORM 0x146 687428d7b3dSmrg#define GEN5_SURFACEFORMAT_P4A4_UNORM 0x147 688428d7b3dSmrg#define GEN5_SURFACEFORMAT_A4P4_UNORM 0x148 689428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8_SSCALED 0x149 690428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8_USCALED 0x14A 691428d7b3dSmrg#define GEN5_SURFACEFORMAT_R1_UINT 0x181 692428d7b3dSmrg#define GEN5_SURFACEFORMAT_YCRCB_NORMAL 0x182 693428d7b3dSmrg#define GEN5_SURFACEFORMAT_YCRCB_SWAPUVY 0x183 694428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC1_UNORM 0x186 695428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC2_UNORM 0x187 696428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC3_UNORM 0x188 697428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC4_UNORM 0x189 698428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC5_UNORM 0x18A 699428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC1_UNORM_SRGB 0x18B 700428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC2_UNORM_SRGB 0x18C 701428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC3_UNORM_SRGB 0x18D 702428d7b3dSmrg#define GEN5_SURFACEFORMAT_MONO8 0x18E 703428d7b3dSmrg#define GEN5_SURFACEFORMAT_YCRCB_SWAPUV 0x18F 704428d7b3dSmrg#define GEN5_SURFACEFORMAT_YCRCB_SWAPY 0x190 705428d7b3dSmrg#define GEN5_SURFACEFORMAT_DXT1_RGB 0x191 706428d7b3dSmrg#define GEN5_SURFACEFORMAT_FXT1 0x192 707428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8_UNORM 0x193 708428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8_SNORM 0x194 709428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8_SSCALED 0x195 710428d7b3dSmrg#define GEN5_SURFACEFORMAT_R8G8B8_USCALED 0x196 711428d7b3dSmrg#define GEN5_SURFACEFORMAT_R64G64B64A64_FLOAT 0x197 712428d7b3dSmrg#define GEN5_SURFACEFORMAT_R64G64B64_FLOAT 0x198 713428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC4_SNORM 0x199 714428d7b3dSmrg#define GEN5_SURFACEFORMAT_BC5_SNORM 0x19A 715428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16_UNORM 0x19C 716428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16_SNORM 0x19D 717428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16_SSCALED 0x19E 718428d7b3dSmrg#define GEN5_SURFACEFORMAT_R16G16B16_USCALED 0x19F 719428d7b3dSmrg 720428d7b3dSmrg#define GEN5_SURFACERETURNFORMAT_FLOAT32 0 721428d7b3dSmrg#define GEN5_SURFACERETURNFORMAT_S1 1 722428d7b3dSmrg 723428d7b3dSmrg#define GEN5_SURFACE_1D 0 724428d7b3dSmrg#define GEN5_SURFACE_2D 1 725428d7b3dSmrg#define GEN5_SURFACE_3D 2 726428d7b3dSmrg#define GEN5_SURFACE_CUBE 3 727428d7b3dSmrg#define GEN5_SURFACE_BUFFER 4 728428d7b3dSmrg#define GEN5_SURFACE_NULL 7 729428d7b3dSmrg 730428d7b3dSmrg#define GEN5_BORDER_COLOR_MODE_DEFAULT 0 731428d7b3dSmrg#define GEN5_BORDER_COLOR_MODE_LEGACY 1 732428d7b3dSmrg 733428d7b3dSmrg#define GEN5_TEXCOORDMODE_WRAP 0 734428d7b3dSmrg#define GEN5_TEXCOORDMODE_MIRROR 1 735428d7b3dSmrg#define GEN5_TEXCOORDMODE_CLAMP 2 736428d7b3dSmrg#define GEN5_TEXCOORDMODE_CUBE 3 737428d7b3dSmrg#define GEN5_TEXCOORDMODE_CLAMP_BORDER 4 738428d7b3dSmrg#define GEN5_TEXCOORDMODE_MIRROR_ONCE 5 739428d7b3dSmrg 740428d7b3dSmrg#define GEN5_THREAD_PRIORITY_NORMAL 0 741428d7b3dSmrg#define GEN5_THREAD_PRIORITY_HIGH 1 742428d7b3dSmrg 743428d7b3dSmrg#define GEN5_TILEWALK_XMAJOR 0 744428d7b3dSmrg#define GEN5_TILEWALK_YMAJOR 1 745428d7b3dSmrg 746428d7b3dSmrg#define GEN5_VERTEX_SUBPIXEL_PRECISION_8BITS 0 747428d7b3dSmrg#define GEN5_VERTEX_SUBPIXEL_PRECISION_4BITS 1 748428d7b3dSmrg 749428d7b3dSmrg#define GEN5_VERTEXBUFFER_ACCESS_VERTEXDATA 0 750428d7b3dSmrg#define GEN5_VERTEXBUFFER_ACCESS_INSTANCEDATA 1 751428d7b3dSmrg 752428d7b3dSmrg#define VFCOMPONENT_NOSTORE 0 753428d7b3dSmrg#define VFCOMPONENT_STORE_SRC 1 754428d7b3dSmrg#define VFCOMPONENT_STORE_0 2 755428d7b3dSmrg#define VFCOMPONENT_STORE_1_FLT 3 756428d7b3dSmrg#define VFCOMPONENT_STORE_1_INT 4 757428d7b3dSmrg#define VFCOMPONENT_STORE_VID 5 758428d7b3dSmrg#define VFCOMPONENT_STORE_IID 6 759428d7b3dSmrg#define VFCOMPONENT_STORE_PID 7 760428d7b3dSmrg 761428d7b3dSmrg 762428d7b3dSmrg/* Execution Unit (EU) defines 763428d7b3dSmrg */ 764428d7b3dSmrg 765428d7b3dSmrg#define GEN5_ALIGN_1 0 766428d7b3dSmrg#define GEN5_ALIGN_16 1 767428d7b3dSmrg 768428d7b3dSmrg#define GEN5_ADDRESS_DIRECT 0 769428d7b3dSmrg#define GEN5_ADDRESS_REGISTER_INDIRECT_REGISTER 1 770428d7b3dSmrg 771428d7b3dSmrg#define GEN5_CHANNEL_X 0 772428d7b3dSmrg#define GEN5_CHANNEL_Y 1 773428d7b3dSmrg#define GEN5_CHANNEL_Z 2 774428d7b3dSmrg#define GEN5_CHANNEL_W 3 775428d7b3dSmrg 776428d7b3dSmrg#define GEN5_COMPRESSION_NONE 0 777428d7b3dSmrg#define GEN5_COMPRESSION_2NDHALF 1 778428d7b3dSmrg#define GEN5_COMPRESSION_COMPRESSED 2 779428d7b3dSmrg 780428d7b3dSmrg#define GEN5_CONDITIONAL_NONE 0 781428d7b3dSmrg#define GEN5_CONDITIONAL_Z 1 782428d7b3dSmrg#define GEN5_CONDITIONAL_NZ 2 783428d7b3dSmrg#define GEN5_CONDITIONAL_EQ 1 /* Z */ 784428d7b3dSmrg#define GEN5_CONDITIONAL_NEQ 2 /* NZ */ 785428d7b3dSmrg#define GEN5_CONDITIONAL_G 3 786428d7b3dSmrg#define GEN5_CONDITIONAL_GE 4 787428d7b3dSmrg#define GEN5_CONDITIONAL_L 5 788428d7b3dSmrg#define GEN5_CONDITIONAL_LE 6 789428d7b3dSmrg#define GEN5_CONDITIONAL_C 7 790428d7b3dSmrg#define GEN5_CONDITIONAL_O 8 791428d7b3dSmrg 792428d7b3dSmrg#define GEN5_DEBUG_NONE 0 793428d7b3dSmrg#define GEN5_DEBUG_BREAKPOINT 1 794428d7b3dSmrg 795428d7b3dSmrg#define GEN5_DEPENDENCY_NORMAL 0 796428d7b3dSmrg#define GEN5_DEPENDENCY_NOTCLEARED 1 797428d7b3dSmrg#define GEN5_DEPENDENCY_NOTCHECKED 2 798428d7b3dSmrg#define GEN5_DEPENDENCY_DISABLE 3 799428d7b3dSmrg 800428d7b3dSmrg#define GEN5_EXECUTE_1 0 801428d7b3dSmrg#define GEN5_EXECUTE_2 1 802428d7b3dSmrg#define GEN5_EXECUTE_4 2 803428d7b3dSmrg#define GEN5_EXECUTE_8 3 804428d7b3dSmrg#define GEN5_EXECUTE_16 4 805428d7b3dSmrg#define GEN5_EXECUTE_32 5 806428d7b3dSmrg 807428d7b3dSmrg#define GEN5_HORIZONTAL_STRIDE_0 0 808428d7b3dSmrg#define GEN5_HORIZONTAL_STRIDE_1 1 809428d7b3dSmrg#define GEN5_HORIZONTAL_STRIDE_2 2 810428d7b3dSmrg#define GEN5_HORIZONTAL_STRIDE_4 3 811428d7b3dSmrg 812428d7b3dSmrg#define GEN5_INSTRUCTION_NORMAL 0 813428d7b3dSmrg#define GEN5_INSTRUCTION_SATURATE 1 814428d7b3dSmrg 815428d7b3dSmrg#define GEN5_MASK_ENABLE 0 816428d7b3dSmrg#define GEN5_MASK_DISABLE 1 817428d7b3dSmrg 818428d7b3dSmrg#define GEN5_OPCODE_MOV 1 819428d7b3dSmrg#define GEN5_OPCODE_SEL 2 820428d7b3dSmrg#define GEN5_OPCODE_NOT 4 821428d7b3dSmrg#define GEN5_OPCODE_AND 5 822428d7b3dSmrg#define GEN5_OPCODE_OR 6 823428d7b3dSmrg#define GEN5_OPCODE_XOR 7 824428d7b3dSmrg#define GEN5_OPCODE_SHR 8 825428d7b3dSmrg#define GEN5_OPCODE_SHL 9 826428d7b3dSmrg#define GEN5_OPCODE_RSR 10 827428d7b3dSmrg#define GEN5_OPCODE_RSL 11 828428d7b3dSmrg#define GEN5_OPCODE_ASR 12 829428d7b3dSmrg#define GEN5_OPCODE_CMP 16 830428d7b3dSmrg#define GEN5_OPCODE_JMPI 32 831428d7b3dSmrg#define GEN5_OPCODE_IF 34 832428d7b3dSmrg#define GEN5_OPCODE_IFF 35 833428d7b3dSmrg#define GEN5_OPCODE_ELSE 36 834428d7b3dSmrg#define GEN5_OPCODE_ENDIF 37 835428d7b3dSmrg#define GEN5_OPCODE_DO 38 836428d7b3dSmrg#define GEN5_OPCODE_WHILE 39 837428d7b3dSmrg#define GEN5_OPCODE_BREAK 40 838428d7b3dSmrg#define GEN5_OPCODE_CONTINUE 41 839428d7b3dSmrg#define GEN5_OPCODE_HALT 42 840428d7b3dSmrg#define GEN5_OPCODE_MSAVE 44 841428d7b3dSmrg#define GEN5_OPCODE_MRESTORE 45 842428d7b3dSmrg#define GEN5_OPCODE_PUSH 46 843428d7b3dSmrg#define GEN5_OPCODE_POP 47 844428d7b3dSmrg#define GEN5_OPCODE_WAIT 48 845428d7b3dSmrg#define GEN5_OPCODE_SEND 49 846428d7b3dSmrg#define GEN5_OPCODE_ADD 64 847428d7b3dSmrg#define GEN5_OPCODE_MUL 65 848428d7b3dSmrg#define GEN5_OPCODE_AVG 66 849428d7b3dSmrg#define GEN5_OPCODE_FRC 67 850428d7b3dSmrg#define GEN5_OPCODE_RNDU 68 851428d7b3dSmrg#define GEN5_OPCODE_RNDD 69 852428d7b3dSmrg#define GEN5_OPCODE_RNDE 70 853428d7b3dSmrg#define GEN5_OPCODE_RNDZ 71 854428d7b3dSmrg#define GEN5_OPCODE_MAC 72 855428d7b3dSmrg#define GEN5_OPCODE_MACH 73 856428d7b3dSmrg#define GEN5_OPCODE_LZD 74 857428d7b3dSmrg#define GEN5_OPCODE_SAD2 80 858428d7b3dSmrg#define GEN5_OPCODE_SADA2 81 859428d7b3dSmrg#define GEN5_OPCODE_DP4 84 860428d7b3dSmrg#define GEN5_OPCODE_DPH 85 861428d7b3dSmrg#define GEN5_OPCODE_DP3 86 862428d7b3dSmrg#define GEN5_OPCODE_DP2 87 863428d7b3dSmrg#define GEN5_OPCODE_DPA2 88 864428d7b3dSmrg#define GEN5_OPCODE_LINE 89 865428d7b3dSmrg#define GEN5_OPCODE_NOP 126 866428d7b3dSmrg 867428d7b3dSmrg#define GEN5_PREDICATE_NONE 0 868428d7b3dSmrg#define GEN5_PREDICATE_NORMAL 1 869428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ANYV 2 870428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ALLV 3 871428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ANY2H 4 872428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ALL2H 5 873428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ANY4H 6 874428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ALL4H 7 875428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ANY8H 8 876428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ALL8H 9 877428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ANY16H 10 878428d7b3dSmrg#define GEN5_PREDICATE_ALIGN1_ALL16H 11 879428d7b3dSmrg#define GEN5_PREDICATE_ALIGN16_REPLICATE_X 2 880428d7b3dSmrg#define GEN5_PREDICATE_ALIGN16_REPLICATE_Y 3 881428d7b3dSmrg#define GEN5_PREDICATE_ALIGN16_REPLICATE_Z 4 882428d7b3dSmrg#define GEN5_PREDICATE_ALIGN16_REPLICATE_W 5 883428d7b3dSmrg#define GEN5_PREDICATE_ALIGN16_ANY4H 6 884428d7b3dSmrg#define GEN5_PREDICATE_ALIGN16_ALL4H 7 885428d7b3dSmrg 886428d7b3dSmrg#define GEN5_ARCHITECTURE_REGISTER_FILE 0 887428d7b3dSmrg#define GEN5_GENERAL_REGISTER_FILE 1 888428d7b3dSmrg#define GEN5_MESSAGE_REGISTER_FILE 2 889428d7b3dSmrg#define GEN5_IMMEDIATE_VALUE 3 890428d7b3dSmrg 891428d7b3dSmrg#define GEN5_REGISTER_TYPE_UD 0 892428d7b3dSmrg#define GEN5_REGISTER_TYPE_D 1 893428d7b3dSmrg#define GEN5_REGISTER_TYPE_UW 2 894428d7b3dSmrg#define GEN5_REGISTER_TYPE_W 3 895428d7b3dSmrg#define GEN5_REGISTER_TYPE_UB 4 896428d7b3dSmrg#define GEN5_REGISTER_TYPE_B 5 897428d7b3dSmrg#define GEN5_REGISTER_TYPE_VF 5 /* packed float vector, immediates only? */ 898428d7b3dSmrg#define GEN5_REGISTER_TYPE_HF 6 899428d7b3dSmrg#define GEN5_REGISTER_TYPE_V 6 /* packed int vector, immediates only, uword dest only */ 900428d7b3dSmrg#define GEN5_REGISTER_TYPE_F 7 901428d7b3dSmrg 902428d7b3dSmrg#define GEN5_ARF_NULL 0x00 903428d7b3dSmrg#define GEN5_ARF_ADDRESS 0x10 904428d7b3dSmrg#define GEN5_ARF_ACCUMULATOR 0x20 905428d7b3dSmrg#define GEN5_ARF_FLAG 0x30 906428d7b3dSmrg#define GEN5_ARF_MASK 0x40 907428d7b3dSmrg#define GEN5_ARF_MASK_STACK 0x50 908428d7b3dSmrg#define GEN5_ARF_MASK_STACK_DEPTH 0x60 909428d7b3dSmrg#define GEN5_ARF_STATE 0x70 910428d7b3dSmrg#define GEN5_ARF_CONTROL 0x80 911428d7b3dSmrg#define GEN5_ARF_NOTIFICATION_COUNT 0x90 912428d7b3dSmrg#define GEN5_ARF_IP 0xA0 913428d7b3dSmrg 914428d7b3dSmrg#define GEN5_AMASK 0 915428d7b3dSmrg#define GEN5_IMASK 1 916428d7b3dSmrg#define GEN5_LMASK 2 917428d7b3dSmrg#define GEN5_CMASK 3 918428d7b3dSmrg 919428d7b3dSmrg 920428d7b3dSmrg 921428d7b3dSmrg#define GEN5_THREAD_NORMAL 0 922428d7b3dSmrg#define GEN5_THREAD_ATOMIC 1 923428d7b3dSmrg#define GEN5_THREAD_SWITCH 2 924428d7b3dSmrg 925428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_0 0 926428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_1 1 927428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_2 2 928428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_4 3 929428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_8 4 930428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_16 5 931428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_32 6 932428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_64 7 933428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_128 8 934428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_256 9 935428d7b3dSmrg#define GEN5_VERTICAL_STRIDE_ONE_DIMENSIONAL 0xF 936428d7b3dSmrg 937428d7b3dSmrg#define GEN5_WIDTH_1 0 938428d7b3dSmrg#define GEN5_WIDTH_2 1 939428d7b3dSmrg#define GEN5_WIDTH_4 2 940428d7b3dSmrg#define GEN5_WIDTH_8 3 941428d7b3dSmrg#define GEN5_WIDTH_16 4 942428d7b3dSmrg 943428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_1K 0 944428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_2K 1 945428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_4K 2 946428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_8K 3 947428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_16K 4 948428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_32K 5 949428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_64K 6 950428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_128K 7 951428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_256K 8 952428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_512K 9 953428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_1M 10 954428d7b3dSmrg#define GEN5_STATELESS_BUFFER_BOUNDARY_2M 11 955428d7b3dSmrg 956428d7b3dSmrg#define GEN5_POLYGON_FACING_FRONT 0 957428d7b3dSmrg#define GEN5_POLYGON_FACING_BACK 1 958428d7b3dSmrg 959428d7b3dSmrg#define GEN5_MESSAGE_TARGET_NULL 0 960428d7b3dSmrg#define GEN5_MESSAGE_TARGET_MATH 1 961428d7b3dSmrg#define GEN5_MESSAGE_TARGET_SAMPLER 2 962428d7b3dSmrg#define GEN5_MESSAGE_TARGET_GATEWAY 3 963428d7b3dSmrg#define GEN5_MESSAGE_TARGET_DATAPORT_READ 4 964428d7b3dSmrg#define GEN5_MESSAGE_TARGET_DATAPORT_WRITE 5 965428d7b3dSmrg#define GEN5_MESSAGE_TARGET_URB 6 966428d7b3dSmrg#define GEN5_MESSAGE_TARGET_THREAD_SPAWNER 7 967428d7b3dSmrg 968428d7b3dSmrg#define GEN5_SAMPLER_RETURN_FORMAT_FLOAT32 0 969428d7b3dSmrg#define GEN5_SAMPLER_RETURN_FORMAT_UINT32 2 970428d7b3dSmrg#define GEN5_SAMPLER_RETURN_FORMAT_SINT32 3 971428d7b3dSmrg 972428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD8_SAMPLE 0 973428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD16_SAMPLE 0 974428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS 0 975428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD8_KILLPIX 1 976428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD 1 977428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD 1 978428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_GRADIENTS 2 979428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD8_SAMPLE_GRADIENTS 2 980428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE 0 981428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE 2 982428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD4X2_RESINFO 2 983428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD8_RESINFO 2 984428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD16_RESINFO 2 985428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD4X2_LD 3 986428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD8_LD 3 987428d7b3dSmrg#define GEN5_SAMPLER_MESSAGE_SIMD16_LD 3 988428d7b3dSmrg 989428d7b3dSmrg#define GEN5_DATAPORT_OWORD_BLOCK_1_OWORDLOW 0 990428d7b3dSmrg#define GEN5_DATAPORT_OWORD_BLOCK_1_OWORDHIGH 1 991428d7b3dSmrg#define GEN5_DATAPORT_OWORD_BLOCK_2_OWORDS 2 992428d7b3dSmrg#define GEN5_DATAPORT_OWORD_BLOCK_4_OWORDS 3 993428d7b3dSmrg#define GEN5_DATAPORT_OWORD_BLOCK_8_OWORDS 4 994428d7b3dSmrg 995428d7b3dSmrg#define GEN5_DATAPORT_OWORD_DUAL_BLOCK_1OWORD 0 996428d7b3dSmrg#define GEN5_DATAPORT_OWORD_DUAL_BLOCK_4OWORDS 2 997428d7b3dSmrg 998428d7b3dSmrg#define GEN5_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS 2 999428d7b3dSmrg#define GEN5_DATAPORT_DWORD_SCATTERED_BLOCK_16DWORDS 3 1000428d7b3dSmrg 1001428d7b3dSmrg#define GEN5_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ 0 1002428d7b3dSmrg#define GEN5_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ 1 1003428d7b3dSmrg#define GEN5_DATAPORT_READ_MESSAGE_DWORD_BLOCK_READ 2 1004428d7b3dSmrg#define GEN5_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ 3 1005428d7b3dSmrg 1006428d7b3dSmrg#define GEN5_DATAPORT_READ_TARGET_DATA_CACHE 0 1007428d7b3dSmrg#define GEN5_DATAPORT_READ_TARGET_RENDER_CACHE 1 1008428d7b3dSmrg#define GEN5_DATAPORT_READ_TARGET_SAMPLER_CACHE 2 1009428d7b3dSmrg 1010428d7b3dSmrg#define GEN5_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE 0 1011428d7b3dSmrg#define GEN5_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE_REPLICATED 1 1012428d7b3dSmrg#define GEN5_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN01 2 1013428d7b3dSmrg#define GEN5_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN23 3 1014428d7b3dSmrg#define GEN5_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01 4 1015428d7b3dSmrg 1016428d7b3dSmrg#define GEN5_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE 0 1017428d7b3dSmrg#define GEN5_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE 1 1018428d7b3dSmrg#define GEN5_DATAPORT_WRITE_MESSAGE_DWORD_BLOCK_WRITE 2 1019428d7b3dSmrg#define GEN5_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE 3 1020428d7b3dSmrg#define GEN5_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE 4 1021428d7b3dSmrg#define GEN5_DATAPORT_WRITE_MESSAGE_STREAMED_VERTEX_BUFFER_WRITE 5 1022428d7b3dSmrg#define GEN5_DATAPORT_WRITE_MESSAGE_FLUSH_RENDER_CACHE 7 1023428d7b3dSmrg 1024428d7b3dSmrg#define GEN5_MATH_FUNCTION_INV 1 1025428d7b3dSmrg#define GEN5_MATH_FUNCTION_LOG 2 1026428d7b3dSmrg#define GEN5_MATH_FUNCTION_EXP 3 1027428d7b3dSmrg#define GEN5_MATH_FUNCTION_SQRT 4 1028428d7b3dSmrg#define GEN5_MATH_FUNCTION_RSQ 5 1029428d7b3dSmrg#define GEN5_MATH_FUNCTION_SIN 6 /* was 7 */ 1030428d7b3dSmrg#define GEN5_MATH_FUNCTION_COS 7 /* was 8 */ 1031428d7b3dSmrg#define GEN5_MATH_FUNCTION_SINCOS 8 /* was 6 */ 1032428d7b3dSmrg#define GEN5_MATH_FUNCTION_TAN 9 1033428d7b3dSmrg#define GEN5_MATH_FUNCTION_POW 10 1034428d7b3dSmrg#define GEN5_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER 11 1035428d7b3dSmrg#define GEN5_MATH_FUNCTION_INT_DIV_QUOTIENT 12 1036428d7b3dSmrg#define GEN5_MATH_FUNCTION_INT_DIV_REMAINDER 13 1037428d7b3dSmrg 1038428d7b3dSmrg#define GEN5_MATH_INTEGER_UNSIGNED 0 1039428d7b3dSmrg#define GEN5_MATH_INTEGER_SIGNED 1 1040428d7b3dSmrg 1041428d7b3dSmrg#define GEN5_MATH_PRECISION_FULL 0 1042428d7b3dSmrg#define GEN5_MATH_PRECISION_PARTIAL 1 1043428d7b3dSmrg 1044428d7b3dSmrg#define GEN5_MATH_SATURATE_NONE 0 1045428d7b3dSmrg#define GEN5_MATH_SATURATE_SATURATE 1 1046428d7b3dSmrg 1047428d7b3dSmrg#define GEN5_MATH_DATA_VECTOR 0 1048428d7b3dSmrg#define GEN5_MATH_DATA_SCALAR 1 1049428d7b3dSmrg 1050428d7b3dSmrg#define GEN5_URB_OPCODE_WRITE 0 1051428d7b3dSmrg 1052428d7b3dSmrg#define GEN5_URB_SWIZZLE_NONE 0 1053428d7b3dSmrg#define GEN5_URB_SWIZZLE_INTERLEAVE 1 1054428d7b3dSmrg#define GEN5_URB_SWIZZLE_TRANSPOSE 2 1055428d7b3dSmrg 1056428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_1K 0 1057428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_2K 1 1058428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_4K 2 1059428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_8K 3 1060428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_16K 4 1061428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_32K 5 1062428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_64K 6 1063428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_128K 7 1064428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_256K 8 1065428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_512K 9 1066428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_1M 10 1067428d7b3dSmrg#define GEN5_SCRATCH_SPACE_SIZE_2M 11 1068428d7b3dSmrg 1069428d7b3dSmrg 1070428d7b3dSmrg 1071428d7b3dSmrg 1072428d7b3dSmrg#define CMD_URB_FENCE 0x6000 1073428d7b3dSmrg#define CMD_CONST_BUFFER_STATE 0x6001 1074428d7b3dSmrg#define CMD_CONST_BUFFER 0x6002 1075428d7b3dSmrg 1076428d7b3dSmrg#define CMD_STATE_BASE_ADDRESS 0x6101 1077428d7b3dSmrg#define CMD_STATE_INSN_POINTER 0x6102 1078428d7b3dSmrg#define CMD_PIPELINE_SELECT 0x6104 1079428d7b3dSmrg 1080428d7b3dSmrg#define CMD_PIPELINED_STATE_POINTERS 0x7800 1081428d7b3dSmrg#define CMD_BINDING_TABLE_PTRS 0x7801 1082428d7b3dSmrg#define CMD_VERTEX_BUFFER 0x7808 1083428d7b3dSmrg#define CMD_VERTEX_ELEMENT 0x7809 1084428d7b3dSmrg#define CMD_INDEX_BUFFER 0x780a 1085428d7b3dSmrg#define CMD_VF_STATISTICS 0x780b 1086428d7b3dSmrg 1087428d7b3dSmrg#define CMD_DRAW_RECT 0x7900 1088428d7b3dSmrg#define CMD_BLEND_CONSTANT_COLOR 0x7901 1089428d7b3dSmrg#define CMD_CHROMA_KEY 0x7904 1090428d7b3dSmrg#define CMD_DEPTH_BUFFER 0x7905 1091428d7b3dSmrg#define CMD_POLY_STIPPLE_OFFSET 0x7906 1092428d7b3dSmrg#define CMD_POLY_STIPPLE_PATTERN 0x7907 1093428d7b3dSmrg#define CMD_LINE_STIPPLE_PATTERN 0x7908 1094428d7b3dSmrg#define CMD_GLOBAL_DEPTH_OFFSET_CLAMP 0x7908 1095428d7b3dSmrg 1096428d7b3dSmrg#define CMD_PIPE_CONTROL 0x7a00 1097428d7b3dSmrg 1098428d7b3dSmrg#define CMD_3D_PRIM 0x7b00 1099428d7b3dSmrg 1100428d7b3dSmrg#define CMD_MI_FLUSH 0x0200 1101428d7b3dSmrg 1102428d7b3dSmrg 1103428d7b3dSmrg/* Various values from the R0 vertex header: 1104428d7b3dSmrg */ 1105428d7b3dSmrg#define R02_PRIM_END 0x1 1106428d7b3dSmrg#define R02_PRIM_START 0x2 1107428d7b3dSmrg 1108428d7b3dSmrg/* media pipeline */ 1109428d7b3dSmrg 1110428d7b3dSmrg#define GEN5_VFE_MODE_GENERIC 0x0 1111428d7b3dSmrg#define GEN5_VFE_MODE_VLD_MPEG2 0x1 1112428d7b3dSmrg#define GEN5_VFE_MODE_IS 0x2 1113428d7b3dSmrg#define GEN5_VFE_MODE_AVC_MC 0x4 1114428d7b3dSmrg#define GEN5_VFE_MODE_AVC_IT 0x7 1115428d7b3dSmrg#define GEN5_VFE_MODE_VC1_IT 0xB 1116428d7b3dSmrg 1117428d7b3dSmrg#define GEN5_VFE_DEBUG_COUNTER_FREE 0 1118428d7b3dSmrg#define GEN5_VFE_DEBUG_COUNTER_FROZEN 1 1119428d7b3dSmrg#define GEN5_VFE_DEBUG_COUNTER_ONCE 2 1120428d7b3dSmrg#define GEN5_VFE_DEBUG_COUNTER_ALWAYS 3 1121428d7b3dSmrg 1122428d7b3dSmrg/* VLD_STATE */ 1123428d7b3dSmrg#define GEN5_MPEG_TOP_FIELD 1 1124428d7b3dSmrg#define GEN5_MPEG_BOTTOM_FIELD 2 1125428d7b3dSmrg#define GEN5_MPEG_FRAME 3 1126428d7b3dSmrg#define GEN5_MPEG_QSCALE_LINEAR 0 1127428d7b3dSmrg#define GEN5_MPEG_QSCALE_NONLINEAR 1 1128428d7b3dSmrg#define GEN5_MPEG_ZIGZAG_SCAN 0 1129428d7b3dSmrg#define GEN5_MPEG_ALTER_VERTICAL_SCAN 1 1130428d7b3dSmrg#define GEN5_MPEG_I_PICTURE 1 1131428d7b3dSmrg#define GEN5_MPEG_P_PICTURE 2 1132428d7b3dSmrg#define GEN5_MPEG_B_PICTURE 3 1133428d7b3dSmrg 1134428d7b3dSmrg/* Command packets: 1135428d7b3dSmrg */ 1136428d7b3dSmrgstruct header 1137428d7b3dSmrg{ 1138428d7b3dSmrg unsigned int length:16; 1139428d7b3dSmrg unsigned int opcode:16; 1140428d7b3dSmrg}; 1141428d7b3dSmrg 1142428d7b3dSmrg 1143428d7b3dSmrgunion header_union 1144428d7b3dSmrg{ 1145428d7b3dSmrg struct header bits; 1146428d7b3dSmrg unsigned int dword; 1147428d7b3dSmrg}; 1148428d7b3dSmrg 1149428d7b3dSmrgstruct gen5_3d_control 1150428d7b3dSmrg{ 1151428d7b3dSmrg struct 1152428d7b3dSmrg { 1153428d7b3dSmrg unsigned int length:8; 1154428d7b3dSmrg unsigned int notify_enable:1; 1155428d7b3dSmrg unsigned int pad:3; 1156428d7b3dSmrg unsigned int wc_flush_enable:1; 1157428d7b3dSmrg unsigned int depth_stall_enable:1; 1158428d7b3dSmrg unsigned int operation:2; 1159428d7b3dSmrg unsigned int opcode:16; 1160428d7b3dSmrg } header; 1161428d7b3dSmrg 1162428d7b3dSmrg struct 1163428d7b3dSmrg { 1164428d7b3dSmrg unsigned int pad:2; 1165428d7b3dSmrg unsigned int dest_addr_type:1; 1166428d7b3dSmrg unsigned int dest_addr:29; 1167428d7b3dSmrg } dest; 1168428d7b3dSmrg 1169428d7b3dSmrg unsigned int dword2; 1170428d7b3dSmrg unsigned int dword3; 1171428d7b3dSmrg}; 1172428d7b3dSmrg 1173428d7b3dSmrg 1174428d7b3dSmrgstruct gen5_3d_primitive 1175428d7b3dSmrg{ 1176428d7b3dSmrg struct 1177428d7b3dSmrg { 1178428d7b3dSmrg unsigned int length:8; 1179428d7b3dSmrg unsigned int pad:2; 1180428d7b3dSmrg unsigned int topology:5; 1181428d7b3dSmrg unsigned int indexed:1; 1182428d7b3dSmrg unsigned int opcode:16; 1183428d7b3dSmrg } header; 1184428d7b3dSmrg 1185428d7b3dSmrg unsigned int verts_per_instance; 1186428d7b3dSmrg unsigned int start_vert_location; 1187428d7b3dSmrg unsigned int instance_count; 1188428d7b3dSmrg unsigned int start_instance_location; 1189428d7b3dSmrg unsigned int base_vert_location; 1190428d7b3dSmrg}; 1191428d7b3dSmrg 1192428d7b3dSmrg/* These seem to be passed around as function args, so it works out 1193428d7b3dSmrg * better to keep them as #defines: 1194428d7b3dSmrg */ 1195428d7b3dSmrg#define GEN5_FLUSH_READ_CACHE 0x1 1196428d7b3dSmrg#define GEN5_FLUSH_STATE_CACHE 0x2 1197428d7b3dSmrg#define GEN5_INHIBIT_FLUSH_RENDER_CACHE 0x4 1198428d7b3dSmrg#define GEN5_FLUSH_SNAPSHOT_COUNTERS 0x8 1199428d7b3dSmrg 1200428d7b3dSmrgstruct gen5_mi_flush 1201428d7b3dSmrg{ 1202428d7b3dSmrg unsigned int flags:4; 1203428d7b3dSmrg unsigned int pad:12; 1204428d7b3dSmrg unsigned int opcode:16; 1205428d7b3dSmrg}; 1206428d7b3dSmrg 1207428d7b3dSmrgstruct gen5_vf_statistics 1208428d7b3dSmrg{ 1209428d7b3dSmrg unsigned int statistics_enable:1; 1210428d7b3dSmrg unsigned int pad:15; 1211428d7b3dSmrg unsigned int opcode:16; 1212428d7b3dSmrg}; 1213428d7b3dSmrg 1214428d7b3dSmrg 1215428d7b3dSmrg 1216428d7b3dSmrgstruct gen5_binding_table_pointers 1217428d7b3dSmrg{ 1218428d7b3dSmrg struct header header; 1219428d7b3dSmrg unsigned int vs; 1220428d7b3dSmrg unsigned int gs; 1221428d7b3dSmrg unsigned int clp; 1222428d7b3dSmrg unsigned int sf; 1223428d7b3dSmrg unsigned int wm; 1224428d7b3dSmrg}; 1225428d7b3dSmrg 1226428d7b3dSmrg 1227428d7b3dSmrgstruct gen5_blend_constant_color 1228428d7b3dSmrg{ 1229428d7b3dSmrg struct header header; 1230428d7b3dSmrg float blend_constant_color[4]; 1231428d7b3dSmrg}; 1232428d7b3dSmrg 1233428d7b3dSmrg 1234428d7b3dSmrgstruct gen5_depthbuffer 1235428d7b3dSmrg{ 1236428d7b3dSmrg union header_union header; 1237428d7b3dSmrg 1238428d7b3dSmrg union { 1239428d7b3dSmrg struct { 1240428d7b3dSmrg unsigned int pitch:18; 1241428d7b3dSmrg unsigned int format:3; 1242428d7b3dSmrg unsigned int pad:4; 1243428d7b3dSmrg unsigned int depth_offset_disable:1; 1244428d7b3dSmrg unsigned int tile_walk:1; 1245428d7b3dSmrg unsigned int tiled_surface:1; 1246428d7b3dSmrg unsigned int pad2:1; 1247428d7b3dSmrg unsigned int surface_type:3; 1248428d7b3dSmrg } bits; 1249428d7b3dSmrg unsigned int dword; 1250428d7b3dSmrg } dword1; 1251428d7b3dSmrg 1252428d7b3dSmrg unsigned int dword2_base_addr; 1253428d7b3dSmrg 1254428d7b3dSmrg union { 1255428d7b3dSmrg struct { 1256428d7b3dSmrg unsigned int pad:1; 1257428d7b3dSmrg unsigned int mipmap_layout:1; 1258428d7b3dSmrg unsigned int lod:4; 1259428d7b3dSmrg unsigned int width:13; 1260428d7b3dSmrg unsigned int height:13; 1261428d7b3dSmrg } bits; 1262428d7b3dSmrg unsigned int dword; 1263428d7b3dSmrg } dword3; 1264428d7b3dSmrg 1265428d7b3dSmrg union { 1266428d7b3dSmrg struct { 1267428d7b3dSmrg unsigned int pad:12; 1268428d7b3dSmrg unsigned int min_array_element:9; 1269428d7b3dSmrg unsigned int depth:11; 1270428d7b3dSmrg } bits; 1271428d7b3dSmrg unsigned int dword; 1272428d7b3dSmrg } dword4; 1273428d7b3dSmrg}; 1274428d7b3dSmrg 1275428d7b3dSmrgstruct gen5_drawrect 1276428d7b3dSmrg{ 1277428d7b3dSmrg struct header header; 1278428d7b3dSmrg unsigned int xmin:16; 1279428d7b3dSmrg unsigned int ymin:16; 1280428d7b3dSmrg unsigned int xmax:16; 1281428d7b3dSmrg unsigned int ymax:16; 1282428d7b3dSmrg unsigned int xorg:16; 1283428d7b3dSmrg unsigned int yorg:16; 1284428d7b3dSmrg}; 1285428d7b3dSmrg 1286428d7b3dSmrg 1287428d7b3dSmrg 1288428d7b3dSmrg 1289428d7b3dSmrgstruct gen5_global_depth_offset_clamp 1290428d7b3dSmrg{ 1291428d7b3dSmrg struct header header; 1292428d7b3dSmrg float depth_offset_clamp; 1293428d7b3dSmrg}; 1294428d7b3dSmrg 1295428d7b3dSmrgstruct gen5_indexbuffer 1296428d7b3dSmrg{ 1297428d7b3dSmrg union { 1298428d7b3dSmrg struct 1299428d7b3dSmrg { 1300428d7b3dSmrg unsigned int length:8; 1301428d7b3dSmrg unsigned int index_format:2; 1302428d7b3dSmrg unsigned int cut_index_enable:1; 1303428d7b3dSmrg unsigned int pad:5; 1304428d7b3dSmrg unsigned int opcode:16; 1305428d7b3dSmrg } bits; 1306428d7b3dSmrg unsigned int dword; 1307428d7b3dSmrg 1308428d7b3dSmrg } header; 1309428d7b3dSmrg 1310428d7b3dSmrg unsigned int buffer_start; 1311428d7b3dSmrg unsigned int buffer_end; 1312428d7b3dSmrg}; 1313428d7b3dSmrg 1314428d7b3dSmrg 1315428d7b3dSmrgstruct gen5_line_stipple 1316428d7b3dSmrg{ 1317428d7b3dSmrg struct header header; 1318428d7b3dSmrg 1319428d7b3dSmrg struct 1320428d7b3dSmrg { 1321428d7b3dSmrg unsigned int pattern:16; 1322428d7b3dSmrg unsigned int pad:16; 1323428d7b3dSmrg } bits0; 1324428d7b3dSmrg 1325428d7b3dSmrg struct 1326428d7b3dSmrg { 1327428d7b3dSmrg unsigned int repeat_count:9; 1328428d7b3dSmrg unsigned int pad:7; 1329428d7b3dSmrg unsigned int inverse_repeat_count:16; 1330428d7b3dSmrg } bits1; 1331428d7b3dSmrg}; 1332428d7b3dSmrg 1333428d7b3dSmrg 1334428d7b3dSmrgstruct gen5_pipelined_state_pointers 1335428d7b3dSmrg{ 1336428d7b3dSmrg struct header header; 1337428d7b3dSmrg 1338428d7b3dSmrg struct { 1339428d7b3dSmrg unsigned int pad:5; 1340428d7b3dSmrg unsigned int offset:27; 1341428d7b3dSmrg } vs; 1342428d7b3dSmrg 1343428d7b3dSmrg struct 1344428d7b3dSmrg { 1345428d7b3dSmrg unsigned int enable:1; 1346428d7b3dSmrg unsigned int pad:4; 1347428d7b3dSmrg unsigned int offset:27; 1348428d7b3dSmrg } gs; 1349428d7b3dSmrg 1350428d7b3dSmrg struct 1351428d7b3dSmrg { 1352428d7b3dSmrg unsigned int enable:1; 1353428d7b3dSmrg unsigned int pad:4; 1354428d7b3dSmrg unsigned int offset:27; 1355428d7b3dSmrg } clp; 1356428d7b3dSmrg 1357428d7b3dSmrg struct 1358428d7b3dSmrg { 1359428d7b3dSmrg unsigned int pad:5; 1360428d7b3dSmrg unsigned int offset:27; 1361428d7b3dSmrg } sf; 1362428d7b3dSmrg 1363428d7b3dSmrg struct 1364428d7b3dSmrg { 1365428d7b3dSmrg unsigned int pad:5; 1366428d7b3dSmrg unsigned int offset:27; 1367428d7b3dSmrg } wm; 1368428d7b3dSmrg 1369428d7b3dSmrg struct 1370428d7b3dSmrg { 1371428d7b3dSmrg unsigned int pad:5; 1372428d7b3dSmrg unsigned int offset:27; /* KW: check me! */ 1373428d7b3dSmrg } cc; 1374428d7b3dSmrg}; 1375428d7b3dSmrg 1376428d7b3dSmrg 1377428d7b3dSmrgstruct gen5_polygon_stipple_offset 1378428d7b3dSmrg{ 1379428d7b3dSmrg struct header header; 1380428d7b3dSmrg 1381428d7b3dSmrg struct { 1382428d7b3dSmrg unsigned int y_offset:5; 1383428d7b3dSmrg unsigned int pad:3; 1384428d7b3dSmrg unsigned int x_offset:5; 1385428d7b3dSmrg unsigned int pad0:19; 1386428d7b3dSmrg } bits0; 1387428d7b3dSmrg}; 1388428d7b3dSmrg 1389428d7b3dSmrg 1390428d7b3dSmrg 1391428d7b3dSmrgstruct gen5_polygon_stipple 1392428d7b3dSmrg{ 1393428d7b3dSmrg struct header header; 1394428d7b3dSmrg unsigned int stipple[32]; 1395428d7b3dSmrg}; 1396428d7b3dSmrg 1397428d7b3dSmrg 1398428d7b3dSmrg 1399428d7b3dSmrgstruct gen5_pipeline_select 1400428d7b3dSmrg{ 1401428d7b3dSmrg struct 1402428d7b3dSmrg { 1403428d7b3dSmrg unsigned int pipeline_select:1; 1404428d7b3dSmrg unsigned int pad:15; 1405428d7b3dSmrg unsigned int opcode:16; 1406428d7b3dSmrg } header; 1407428d7b3dSmrg}; 1408428d7b3dSmrg 1409428d7b3dSmrg 1410428d7b3dSmrgstruct gen5_pipe_control 1411428d7b3dSmrg{ 1412428d7b3dSmrg struct 1413428d7b3dSmrg { 1414428d7b3dSmrg unsigned int length:8; 1415428d7b3dSmrg unsigned int notify_enable:1; 1416428d7b3dSmrg unsigned int pad:2; 1417428d7b3dSmrg unsigned int instruction_state_cache_flush_enable:1; 1418428d7b3dSmrg unsigned int write_cache_flush_enable:1; 1419428d7b3dSmrg unsigned int depth_stall_enable:1; 1420428d7b3dSmrg unsigned int post_sync_operation:2; 1421428d7b3dSmrg 1422428d7b3dSmrg unsigned int opcode:16; 1423428d7b3dSmrg } header; 1424428d7b3dSmrg 1425428d7b3dSmrg struct 1426428d7b3dSmrg { 1427428d7b3dSmrg unsigned int pad:2; 1428428d7b3dSmrg unsigned int dest_addr_type:1; 1429428d7b3dSmrg unsigned int dest_addr:29; 1430428d7b3dSmrg } bits1; 1431428d7b3dSmrg 1432428d7b3dSmrg unsigned int data0; 1433428d7b3dSmrg unsigned int data1; 1434428d7b3dSmrg}; 1435428d7b3dSmrg 1436428d7b3dSmrg 1437428d7b3dSmrgstruct gen5_urb_fence 1438428d7b3dSmrg{ 1439428d7b3dSmrg struct 1440428d7b3dSmrg { 1441428d7b3dSmrg unsigned int length:8; 1442428d7b3dSmrg unsigned int vs_realloc:1; 1443428d7b3dSmrg unsigned int gs_realloc:1; 1444428d7b3dSmrg unsigned int clp_realloc:1; 1445428d7b3dSmrg unsigned int sf_realloc:1; 1446428d7b3dSmrg unsigned int vfe_realloc:1; 1447428d7b3dSmrg unsigned int cs_realloc:1; 1448428d7b3dSmrg unsigned int pad:2; 1449428d7b3dSmrg unsigned int opcode:16; 1450428d7b3dSmrg } header; 1451428d7b3dSmrg 1452428d7b3dSmrg struct 1453428d7b3dSmrg { 1454428d7b3dSmrg unsigned int vs_fence:10; 1455428d7b3dSmrg unsigned int gs_fence:10; 1456428d7b3dSmrg unsigned int clp_fence:10; 1457428d7b3dSmrg unsigned int pad:2; 1458428d7b3dSmrg } bits0; 1459428d7b3dSmrg 1460428d7b3dSmrg struct 1461428d7b3dSmrg { 1462428d7b3dSmrg unsigned int sf_fence:10; 1463428d7b3dSmrg unsigned int vf_fence:10; 1464428d7b3dSmrg unsigned int cs_fence:10; 1465428d7b3dSmrg unsigned int pad:2; 1466428d7b3dSmrg } bits1; 1467428d7b3dSmrg}; 1468428d7b3dSmrg 1469428d7b3dSmrgstruct gen5_constant_buffer_state /* previously gen5_command_streamer */ 1470428d7b3dSmrg{ 1471428d7b3dSmrg struct header header; 1472428d7b3dSmrg 1473428d7b3dSmrg struct 1474428d7b3dSmrg { 1475428d7b3dSmrg unsigned int nr_urb_entries:3; 1476428d7b3dSmrg unsigned int pad:1; 1477428d7b3dSmrg unsigned int urb_entry_size:5; 1478428d7b3dSmrg unsigned int pad0:23; 1479428d7b3dSmrg } bits0; 1480428d7b3dSmrg}; 1481428d7b3dSmrg 1482428d7b3dSmrgstruct gen5_constant_buffer 1483428d7b3dSmrg{ 1484428d7b3dSmrg struct 1485428d7b3dSmrg { 1486428d7b3dSmrg unsigned int length:8; 1487428d7b3dSmrg unsigned int valid:1; 1488428d7b3dSmrg unsigned int pad:7; 1489428d7b3dSmrg unsigned int opcode:16; 1490428d7b3dSmrg } header; 1491428d7b3dSmrg 1492428d7b3dSmrg struct 1493428d7b3dSmrg { 1494428d7b3dSmrg unsigned int buffer_length:6; 1495428d7b3dSmrg unsigned int buffer_address:26; 1496428d7b3dSmrg } bits0; 1497428d7b3dSmrg}; 1498428d7b3dSmrg 1499428d7b3dSmrgstruct gen5_state_base_address 1500428d7b3dSmrg{ 1501428d7b3dSmrg struct header header; 1502428d7b3dSmrg 1503428d7b3dSmrg struct 1504428d7b3dSmrg { 1505428d7b3dSmrg unsigned int modify_enable:1; 1506428d7b3dSmrg unsigned int pad:4; 1507428d7b3dSmrg unsigned int general_state_address:27; 1508428d7b3dSmrg } bits0; 1509428d7b3dSmrg 1510428d7b3dSmrg struct 1511428d7b3dSmrg { 1512428d7b3dSmrg unsigned int modify_enable:1; 1513428d7b3dSmrg unsigned int pad:4; 1514428d7b3dSmrg unsigned int surface_state_address:27; 1515428d7b3dSmrg } bits1; 1516428d7b3dSmrg 1517428d7b3dSmrg struct 1518428d7b3dSmrg { 1519428d7b3dSmrg unsigned int modify_enable:1; 1520428d7b3dSmrg unsigned int pad:4; 1521428d7b3dSmrg unsigned int indirect_object_state_address:27; 1522428d7b3dSmrg } bits2; 1523428d7b3dSmrg 1524428d7b3dSmrg struct 1525428d7b3dSmrg { 1526428d7b3dSmrg unsigned int modify_enable:1; 1527428d7b3dSmrg unsigned int pad:11; 1528428d7b3dSmrg unsigned int general_state_upper_bound:20; 1529428d7b3dSmrg } bits3; 1530428d7b3dSmrg 1531428d7b3dSmrg struct 1532428d7b3dSmrg { 1533428d7b3dSmrg unsigned int modify_enable:1; 1534428d7b3dSmrg unsigned int pad:11; 1535428d7b3dSmrg unsigned int indirect_object_state_upper_bound:20; 1536428d7b3dSmrg } bits4; 1537428d7b3dSmrg}; 1538428d7b3dSmrg 1539428d7b3dSmrgstruct gen5_state_prefetch 1540428d7b3dSmrg{ 1541428d7b3dSmrg struct header header; 1542428d7b3dSmrg 1543428d7b3dSmrg struct 1544428d7b3dSmrg { 1545428d7b3dSmrg unsigned int prefetch_count:3; 1546428d7b3dSmrg unsigned int pad:3; 1547428d7b3dSmrg unsigned int prefetch_pointer:26; 1548428d7b3dSmrg } bits0; 1549428d7b3dSmrg}; 1550428d7b3dSmrg 1551428d7b3dSmrgstruct gen5_system_instruction_pointer 1552428d7b3dSmrg{ 1553428d7b3dSmrg struct header header; 1554428d7b3dSmrg 1555428d7b3dSmrg struct 1556428d7b3dSmrg { 1557428d7b3dSmrg unsigned int pad:4; 1558428d7b3dSmrg unsigned int system_instruction_pointer:28; 1559428d7b3dSmrg } bits0; 1560428d7b3dSmrg}; 1561428d7b3dSmrg 1562428d7b3dSmrg 1563428d7b3dSmrg 1564428d7b3dSmrg 1565428d7b3dSmrg/* State structs for the various fixed function units: 1566428d7b3dSmrg */ 1567428d7b3dSmrg 1568428d7b3dSmrg 1569428d7b3dSmrgstruct thread0 1570428d7b3dSmrg{ 1571428d7b3dSmrg unsigned int pad0:1; 1572428d7b3dSmrg unsigned int grf_reg_count:3; 1573428d7b3dSmrg unsigned int pad1:2; 1574428d7b3dSmrg unsigned int kernel_start_pointer:26; 1575428d7b3dSmrg}; 1576428d7b3dSmrg 1577428d7b3dSmrgstruct thread1 1578428d7b3dSmrg{ 1579428d7b3dSmrg unsigned int ext_halt_exception_enable:1; 1580428d7b3dSmrg unsigned int sw_exception_enable:1; 1581428d7b3dSmrg unsigned int mask_stack_exception_enable:1; 1582428d7b3dSmrg unsigned int timeout_exception_enable:1; 1583428d7b3dSmrg unsigned int illegal_op_exception_enable:1; 1584428d7b3dSmrg unsigned int pad0:3; 1585428d7b3dSmrg unsigned int depth_coef_urb_read_offset:6; /* WM only */ 1586428d7b3dSmrg unsigned int pad1:2; 1587428d7b3dSmrg unsigned int floating_point_mode:1; 1588428d7b3dSmrg unsigned int thread_priority:1; 1589428d7b3dSmrg unsigned int binding_table_entry_count:8; 1590428d7b3dSmrg unsigned int pad3:5; 1591428d7b3dSmrg unsigned int single_program_flow:1; 1592428d7b3dSmrg}; 1593428d7b3dSmrg 1594428d7b3dSmrgstruct thread2 1595428d7b3dSmrg{ 1596428d7b3dSmrg unsigned int per_thread_scratch_space:4; 1597428d7b3dSmrg unsigned int pad0:6; 1598428d7b3dSmrg unsigned int scratch_space_base_pointer:22; 1599428d7b3dSmrg}; 1600428d7b3dSmrg 1601428d7b3dSmrg 1602428d7b3dSmrgstruct thread3 1603428d7b3dSmrg{ 1604428d7b3dSmrg unsigned int dispatch_grf_start_reg:4; 1605428d7b3dSmrg unsigned int urb_entry_read_offset:6; 1606428d7b3dSmrg unsigned int pad0:1; 1607428d7b3dSmrg unsigned int urb_entry_read_length:6; 1608428d7b3dSmrg unsigned int pad1:1; 1609428d7b3dSmrg unsigned int const_urb_entry_read_offset:6; 1610428d7b3dSmrg unsigned int pad2:1; 1611428d7b3dSmrg unsigned int const_urb_entry_read_length:6; 1612428d7b3dSmrg unsigned int pad3:1; 1613428d7b3dSmrg}; 1614428d7b3dSmrg 1615428d7b3dSmrg 1616428d7b3dSmrg 1617428d7b3dSmrgstruct gen5_clip_unit_state 1618428d7b3dSmrg{ 1619428d7b3dSmrg struct thread0 thread0; 1620428d7b3dSmrg struct thread1 thread1; 1621428d7b3dSmrg struct thread2 thread2; 1622428d7b3dSmrg struct thread3 thread3; 1623428d7b3dSmrg 1624428d7b3dSmrg struct 1625428d7b3dSmrg { 1626428d7b3dSmrg unsigned int pad0:9; 1627428d7b3dSmrg unsigned int gs_output_stats:1; /* not always */ 1628428d7b3dSmrg unsigned int stats_enable:1; 1629428d7b3dSmrg unsigned int nr_urb_entries:7; 1630428d7b3dSmrg unsigned int pad1:1; 1631428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1632428d7b3dSmrg unsigned int pad2:1; 1633428d7b3dSmrg unsigned int max_threads:6; /* may be less */ 1634428d7b3dSmrg unsigned int pad3:1; 1635428d7b3dSmrg } thread4; 1636428d7b3dSmrg 1637428d7b3dSmrg struct 1638428d7b3dSmrg { 1639428d7b3dSmrg unsigned int pad0:13; 1640428d7b3dSmrg unsigned int clip_mode:3; 1641428d7b3dSmrg unsigned int userclip_enable_flags:8; 1642428d7b3dSmrg unsigned int userclip_must_clip:1; 1643428d7b3dSmrg unsigned int pad1:1; 1644428d7b3dSmrg unsigned int guard_band_enable:1; 1645428d7b3dSmrg unsigned int viewport_z_clip_enable:1; 1646428d7b3dSmrg unsigned int viewport_xy_clip_enable:1; 1647428d7b3dSmrg unsigned int vertex_position_space:1; 1648428d7b3dSmrg unsigned int api_mode:1; 1649428d7b3dSmrg unsigned int pad2:1; 1650428d7b3dSmrg } clip5; 1651428d7b3dSmrg 1652428d7b3dSmrg struct 1653428d7b3dSmrg { 1654428d7b3dSmrg unsigned int pad0:5; 1655428d7b3dSmrg unsigned int clipper_viewport_state_ptr:27; 1656428d7b3dSmrg } clip6; 1657428d7b3dSmrg 1658428d7b3dSmrg 1659428d7b3dSmrg float viewport_xmin; 1660428d7b3dSmrg float viewport_xmax; 1661428d7b3dSmrg float viewport_ymin; 1662428d7b3dSmrg float viewport_ymax; 1663428d7b3dSmrg}; 1664428d7b3dSmrg 1665428d7b3dSmrg 1666428d7b3dSmrg 1667428d7b3dSmrgstruct gen5_cc_unit_state 1668428d7b3dSmrg{ 1669428d7b3dSmrg struct 1670428d7b3dSmrg { 1671428d7b3dSmrg unsigned int pad0:3; 1672428d7b3dSmrg unsigned int bf_stencil_pass_depth_pass_op:3; 1673428d7b3dSmrg unsigned int bf_stencil_pass_depth_fail_op:3; 1674428d7b3dSmrg unsigned int bf_stencil_fail_op:3; 1675428d7b3dSmrg unsigned int bf_stencil_func:3; 1676428d7b3dSmrg unsigned int bf_stencil_enable:1; 1677428d7b3dSmrg unsigned int pad1:2; 1678428d7b3dSmrg unsigned int stencil_write_enable:1; 1679428d7b3dSmrg unsigned int stencil_pass_depth_pass_op:3; 1680428d7b3dSmrg unsigned int stencil_pass_depth_fail_op:3; 1681428d7b3dSmrg unsigned int stencil_fail_op:3; 1682428d7b3dSmrg unsigned int stencil_func:3; 1683428d7b3dSmrg unsigned int stencil_enable:1; 1684428d7b3dSmrg } cc0; 1685428d7b3dSmrg 1686428d7b3dSmrg 1687428d7b3dSmrg struct 1688428d7b3dSmrg { 1689428d7b3dSmrg unsigned int bf_stencil_ref:8; 1690428d7b3dSmrg unsigned int stencil_write_mask:8; 1691428d7b3dSmrg unsigned int stencil_test_mask:8; 1692428d7b3dSmrg unsigned int stencil_ref:8; 1693428d7b3dSmrg } cc1; 1694428d7b3dSmrg 1695428d7b3dSmrg 1696428d7b3dSmrg struct 1697428d7b3dSmrg { 1698428d7b3dSmrg unsigned int logicop_enable:1; 1699428d7b3dSmrg unsigned int pad0:10; 1700428d7b3dSmrg unsigned int depth_write_enable:1; 1701428d7b3dSmrg unsigned int depth_test_function:3; 1702428d7b3dSmrg unsigned int depth_test:1; 1703428d7b3dSmrg unsigned int bf_stencil_write_mask:8; 1704428d7b3dSmrg unsigned int bf_stencil_test_mask:8; 1705428d7b3dSmrg } cc2; 1706428d7b3dSmrg 1707428d7b3dSmrg 1708428d7b3dSmrg struct 1709428d7b3dSmrg { 1710428d7b3dSmrg unsigned int pad0:8; 1711428d7b3dSmrg unsigned int alpha_test_func:3; 1712428d7b3dSmrg unsigned int alpha_test:1; 1713428d7b3dSmrg unsigned int blend_enable:1; 1714428d7b3dSmrg unsigned int ia_blend_enable:1; 1715428d7b3dSmrg unsigned int pad1:1; 1716428d7b3dSmrg unsigned int alpha_test_format:1; 1717428d7b3dSmrg unsigned int pad2:16; 1718428d7b3dSmrg } cc3; 1719428d7b3dSmrg 1720428d7b3dSmrg struct 1721428d7b3dSmrg { 1722428d7b3dSmrg unsigned int pad0:5; 1723428d7b3dSmrg unsigned int cc_viewport_state_offset:27; 1724428d7b3dSmrg } cc4; 1725428d7b3dSmrg 1726428d7b3dSmrg struct 1727428d7b3dSmrg { 1728428d7b3dSmrg unsigned int pad0:2; 1729428d7b3dSmrg unsigned int ia_dest_blend_factor:5; 1730428d7b3dSmrg unsigned int ia_src_blend_factor:5; 1731428d7b3dSmrg unsigned int ia_blend_function:3; 1732428d7b3dSmrg unsigned int statistics_enable:1; 1733428d7b3dSmrg unsigned int logicop_func:4; 1734428d7b3dSmrg unsigned int pad1:11; 1735428d7b3dSmrg unsigned int dither_enable:1; 1736428d7b3dSmrg } cc5; 1737428d7b3dSmrg 1738428d7b3dSmrg struct 1739428d7b3dSmrg { 1740428d7b3dSmrg unsigned int clamp_post_alpha_blend:1; 1741428d7b3dSmrg unsigned int clamp_pre_alpha_blend:1; 1742428d7b3dSmrg unsigned int clamp_range:2; 1743428d7b3dSmrg unsigned int pad0:11; 1744428d7b3dSmrg unsigned int y_dither_offset:2; 1745428d7b3dSmrg unsigned int x_dither_offset:2; 1746428d7b3dSmrg unsigned int dest_blend_factor:5; 1747428d7b3dSmrg unsigned int src_blend_factor:5; 1748428d7b3dSmrg unsigned int blend_function:3; 1749428d7b3dSmrg } cc6; 1750428d7b3dSmrg 1751428d7b3dSmrg struct { 1752428d7b3dSmrg union { 1753428d7b3dSmrg float f; 1754428d7b3dSmrg unsigned char ub[4]; 1755428d7b3dSmrg } alpha_ref; 1756428d7b3dSmrg } cc7; 1757428d7b3dSmrg}; 1758428d7b3dSmrg 1759428d7b3dSmrg 1760428d7b3dSmrg 1761428d7b3dSmrgstruct gen5_sf_unit_state 1762428d7b3dSmrg{ 1763428d7b3dSmrg struct thread0 thread0; 1764428d7b3dSmrg struct { 1765428d7b3dSmrg unsigned int pad0:7; 1766428d7b3dSmrg unsigned int sw_exception_enable:1; 1767428d7b3dSmrg unsigned int pad1:3; 1768428d7b3dSmrg unsigned int mask_stack_exception_enable:1; 1769428d7b3dSmrg unsigned int pad2:1; 1770428d7b3dSmrg unsigned int illegal_op_exception_enable:1; 1771428d7b3dSmrg unsigned int pad3:2; 1772428d7b3dSmrg unsigned int floating_point_mode:1; 1773428d7b3dSmrg unsigned int thread_priority:1; 1774428d7b3dSmrg unsigned int binding_table_entry_count:8; 1775428d7b3dSmrg unsigned int pad4:5; 1776428d7b3dSmrg unsigned int single_program_flow:1; 1777428d7b3dSmrg } sf1; 1778428d7b3dSmrg 1779428d7b3dSmrg struct thread2 thread2; 1780428d7b3dSmrg struct thread3 thread3; 1781428d7b3dSmrg 1782428d7b3dSmrg struct 1783428d7b3dSmrg { 1784428d7b3dSmrg unsigned int pad0:10; 1785428d7b3dSmrg unsigned int stats_enable:1; 1786428d7b3dSmrg unsigned int nr_urb_entries:7; 1787428d7b3dSmrg unsigned int pad1:1; 1788428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1789428d7b3dSmrg unsigned int pad2:1; 1790428d7b3dSmrg unsigned int max_threads:6; 1791428d7b3dSmrg unsigned int pad3:1; 1792428d7b3dSmrg } thread4; 1793428d7b3dSmrg 1794428d7b3dSmrg struct 1795428d7b3dSmrg { 1796428d7b3dSmrg unsigned int front_winding:1; 1797428d7b3dSmrg unsigned int viewport_transform:1; 1798428d7b3dSmrg unsigned int pad0:3; 1799428d7b3dSmrg unsigned int sf_viewport_state_offset:27; 1800428d7b3dSmrg } sf5; 1801428d7b3dSmrg 1802428d7b3dSmrg struct 1803428d7b3dSmrg { 1804428d7b3dSmrg unsigned int pad0:9; 1805428d7b3dSmrg unsigned int dest_org_vbias:4; 1806428d7b3dSmrg unsigned int dest_org_hbias:4; 1807428d7b3dSmrg unsigned int scissor:1; 1808428d7b3dSmrg unsigned int disable_2x2_trifilter:1; 1809428d7b3dSmrg unsigned int disable_zero_pix_trifilter:1; 1810428d7b3dSmrg unsigned int point_rast_rule:2; 1811428d7b3dSmrg unsigned int line_endcap_aa_region_width:2; 1812428d7b3dSmrg unsigned int line_width:4; 1813428d7b3dSmrg unsigned int fast_scissor_disable:1; 1814428d7b3dSmrg unsigned int cull_mode:2; 1815428d7b3dSmrg unsigned int aa_enable:1; 1816428d7b3dSmrg } sf6; 1817428d7b3dSmrg 1818428d7b3dSmrg struct 1819428d7b3dSmrg { 1820428d7b3dSmrg unsigned int point_size:11; 1821428d7b3dSmrg unsigned int use_point_size_state:1; 1822428d7b3dSmrg unsigned int subpixel_precision:1; 1823428d7b3dSmrg unsigned int sprite_point:1; 1824428d7b3dSmrg unsigned int pad0:11; 1825428d7b3dSmrg unsigned int trifan_pv:2; 1826428d7b3dSmrg unsigned int linestrip_pv:2; 1827428d7b3dSmrg unsigned int tristrip_pv:2; 1828428d7b3dSmrg unsigned int line_last_pixel_enable:1; 1829428d7b3dSmrg } sf7; 1830428d7b3dSmrg 1831428d7b3dSmrg}; 1832428d7b3dSmrg 1833428d7b3dSmrg 1834428d7b3dSmrgstruct gen5_gs_unit_state 1835428d7b3dSmrg{ 1836428d7b3dSmrg struct thread0 thread0; 1837428d7b3dSmrg struct thread1 thread1; 1838428d7b3dSmrg struct thread2 thread2; 1839428d7b3dSmrg struct thread3 thread3; 1840428d7b3dSmrg 1841428d7b3dSmrg struct 1842428d7b3dSmrg { 1843428d7b3dSmrg unsigned int pad0:10; 1844428d7b3dSmrg unsigned int stats_enable:1; 1845428d7b3dSmrg unsigned int nr_urb_entries:7; 1846428d7b3dSmrg unsigned int pad1:1; 1847428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1848428d7b3dSmrg unsigned int pad2:1; 1849428d7b3dSmrg unsigned int max_threads:1; 1850428d7b3dSmrg unsigned int pad3:6; 1851428d7b3dSmrg } thread4; 1852428d7b3dSmrg 1853428d7b3dSmrg struct 1854428d7b3dSmrg { 1855428d7b3dSmrg unsigned int sampler_count:3; 1856428d7b3dSmrg unsigned int pad0:2; 1857428d7b3dSmrg unsigned int sampler_state_pointer:27; 1858428d7b3dSmrg } gs5; 1859428d7b3dSmrg 1860428d7b3dSmrg 1861428d7b3dSmrg struct 1862428d7b3dSmrg { 1863428d7b3dSmrg unsigned int max_vp_index:4; 1864428d7b3dSmrg unsigned int pad0:26; 1865428d7b3dSmrg unsigned int reorder_enable:1; 1866428d7b3dSmrg unsigned int pad1:1; 1867428d7b3dSmrg } gs6; 1868428d7b3dSmrg}; 1869428d7b3dSmrg 1870428d7b3dSmrg 1871428d7b3dSmrgstruct gen5_vs_unit_state 1872428d7b3dSmrg{ 1873428d7b3dSmrg struct thread0 thread0; 1874428d7b3dSmrg struct thread1 thread1; 1875428d7b3dSmrg struct thread2 thread2; 1876428d7b3dSmrg struct thread3 thread3; 1877428d7b3dSmrg 1878428d7b3dSmrg struct 1879428d7b3dSmrg { 1880428d7b3dSmrg unsigned int pad0:10; 1881428d7b3dSmrg unsigned int stats_enable:1; 1882428d7b3dSmrg unsigned int nr_urb_entries:7; 1883428d7b3dSmrg unsigned int pad1:1; 1884428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1885428d7b3dSmrg unsigned int pad2:1; 1886428d7b3dSmrg unsigned int max_threads:4; 1887428d7b3dSmrg unsigned int pad3:3; 1888428d7b3dSmrg } thread4; 1889428d7b3dSmrg 1890428d7b3dSmrg struct 1891428d7b3dSmrg { 1892428d7b3dSmrg unsigned int sampler_count:3; 1893428d7b3dSmrg unsigned int pad0:2; 1894428d7b3dSmrg unsigned int sampler_state_pointer:27; 1895428d7b3dSmrg } vs5; 1896428d7b3dSmrg 1897428d7b3dSmrg struct 1898428d7b3dSmrg { 1899428d7b3dSmrg unsigned int vs_enable:1; 1900428d7b3dSmrg unsigned int vert_cache_disable:1; 1901428d7b3dSmrg unsigned int pad0:30; 1902428d7b3dSmrg } vs6; 1903428d7b3dSmrg}; 1904428d7b3dSmrg 1905428d7b3dSmrg 1906428d7b3dSmrgstruct gen5_wm_unit_state 1907428d7b3dSmrg{ 1908428d7b3dSmrg struct thread0 thread0; 1909428d7b3dSmrg struct thread1 thread1; 1910428d7b3dSmrg struct thread2 thread2; 1911428d7b3dSmrg struct thread3 thread3; 1912428d7b3dSmrg 1913428d7b3dSmrg struct { 1914428d7b3dSmrg unsigned int stats_enable:1; 1915428d7b3dSmrg unsigned int pad0:1; 1916428d7b3dSmrg unsigned int sampler_count:3; 1917428d7b3dSmrg unsigned int sampler_state_pointer:27; 1918428d7b3dSmrg } wm4; 1919428d7b3dSmrg 1920428d7b3dSmrg struct 1921428d7b3dSmrg { 1922428d7b3dSmrg unsigned int enable_8_pix:1; 1923428d7b3dSmrg unsigned int enable_16_pix:1; 1924428d7b3dSmrg unsigned int enable_32_pix:1; 1925428d7b3dSmrg unsigned int pad0:7; 1926428d7b3dSmrg unsigned int legacy_global_depth_bias:1; 1927428d7b3dSmrg unsigned int line_stipple:1; 1928428d7b3dSmrg unsigned int depth_offset:1; 1929428d7b3dSmrg unsigned int polygon_stipple:1; 1930428d7b3dSmrg unsigned int line_aa_region_width:2; 1931428d7b3dSmrg unsigned int line_endcap_aa_region_width:2; 1932428d7b3dSmrg unsigned int early_depth_test:1; 1933428d7b3dSmrg unsigned int thread_dispatch_enable:1; 1934428d7b3dSmrg unsigned int program_uses_depth:1; 1935428d7b3dSmrg unsigned int program_computes_depth:1; 1936428d7b3dSmrg unsigned int program_uses_killpixel:1; 1937428d7b3dSmrg unsigned int legacy_line_rast: 1; 1938428d7b3dSmrg unsigned int transposed_urb_read:1; 1939428d7b3dSmrg unsigned int max_threads:7; 1940428d7b3dSmrg } wm5; 1941428d7b3dSmrg 1942428d7b3dSmrg float global_depth_offset_constant; 1943428d7b3dSmrg float global_depth_offset_scale; 1944428d7b3dSmrg 1945428d7b3dSmrg struct { 1946428d7b3dSmrg unsigned int pad0:1; 1947428d7b3dSmrg unsigned int grf_reg_count_1:3; 1948428d7b3dSmrg unsigned int pad1:2; 1949428d7b3dSmrg unsigned int kernel_start_pointer_1:26; 1950428d7b3dSmrg } wm8; 1951428d7b3dSmrg 1952428d7b3dSmrg struct { 1953428d7b3dSmrg unsigned int pad0:1; 1954428d7b3dSmrg unsigned int grf_reg_count_2:3; 1955428d7b3dSmrg unsigned int pad1:2; 1956428d7b3dSmrg unsigned int kernel_start_pointer_2:26; 1957428d7b3dSmrg } wm9; 1958428d7b3dSmrg 1959428d7b3dSmrg struct { 1960428d7b3dSmrg unsigned int pad0:1; 1961428d7b3dSmrg unsigned int grf_reg_count_3:3; 1962428d7b3dSmrg unsigned int pad1:2; 1963428d7b3dSmrg unsigned int kernel_start_pointer_3:26; 1964428d7b3dSmrg } wm10; 1965428d7b3dSmrg}; 1966428d7b3dSmrg 1967428d7b3dSmrgstruct gen5_wm_unit_state_padded { 1968428d7b3dSmrg struct gen5_wm_unit_state state; 1969428d7b3dSmrg char pad[64 - sizeof(struct gen5_wm_unit_state)]; 1970428d7b3dSmrg}; 1971428d7b3dSmrg 1972428d7b3dSmrg/* The hardware supports two different modes for border color. The 1973428d7b3dSmrg * default (OpenGL) mode uses floating-point color channels, while the 1974428d7b3dSmrg * legacy mode uses 4 bytes. 1975428d7b3dSmrg * 1976428d7b3dSmrg * More significantly, the legacy mode respects the components of the 1977428d7b3dSmrg * border color for channels not present in the source, (whereas the 1978428d7b3dSmrg * default mode will ignore the border color's alpha channel and use 1979428d7b3dSmrg * alpha==1 for an RGB source, for example). 1980428d7b3dSmrg * 1981428d7b3dSmrg * The legacy mode matches the semantics specified by the Render 1982428d7b3dSmrg * extension. 1983428d7b3dSmrg */ 1984428d7b3dSmrgstruct gen5_sampler_default_border_color { 1985428d7b3dSmrg float color[4]; 1986428d7b3dSmrg}; 1987428d7b3dSmrg 1988428d7b3dSmrgstruct gen5_sampler_legacy_border_color { 1989428d7b3dSmrg uint8_t color[4]; 1990428d7b3dSmrg}; 1991428d7b3dSmrg 1992428d7b3dSmrgstruct gen5_sampler_state { 1993428d7b3dSmrg struct { 1994428d7b3dSmrg unsigned int shadow_function:3; 1995428d7b3dSmrg unsigned int lod_bias:11; 1996428d7b3dSmrg unsigned int min_filter:3; 1997428d7b3dSmrg unsigned int mag_filter:3; 1998428d7b3dSmrg unsigned int mip_filter:2; 1999428d7b3dSmrg unsigned int base_level:5; 2000428d7b3dSmrg unsigned int pad:1; 2001428d7b3dSmrg unsigned int lod_preclamp:1; 2002428d7b3dSmrg unsigned int border_color_mode:1; 2003428d7b3dSmrg unsigned int pad0:1; 2004428d7b3dSmrg unsigned int disable:1; 2005428d7b3dSmrg } ss0; 2006428d7b3dSmrg 2007428d7b3dSmrg struct { 2008428d7b3dSmrg unsigned int r_wrap_mode:3; 2009428d7b3dSmrg unsigned int t_wrap_mode:3; 2010428d7b3dSmrg unsigned int s_wrap_mode:3; 2011428d7b3dSmrg unsigned int pad:3; 2012428d7b3dSmrg unsigned int max_lod:10; 2013428d7b3dSmrg unsigned int min_lod:10; 2014428d7b3dSmrg } ss1; 2015428d7b3dSmrg 2016428d7b3dSmrg struct { 2017428d7b3dSmrg unsigned int pad:5; 2018428d7b3dSmrg unsigned int border_color_pointer:27; 2019428d7b3dSmrg } ss2; 2020428d7b3dSmrg 2021428d7b3dSmrg struct { 2022428d7b3dSmrg uint32_t pad:13; 2023428d7b3dSmrg uint32_t address_round:6; 2024428d7b3dSmrg uint32_t max_aniso:3; 2025428d7b3dSmrg uint32_t chroma_key_mode:1; 2026428d7b3dSmrg uint32_t chroma_key_index:2; 2027428d7b3dSmrg uint32_t chroma_key_enable:1; 2028428d7b3dSmrg uint32_t mbz:6; 2029428d7b3dSmrg } ss3; 2030428d7b3dSmrg}; 2031428d7b3dSmrg 2032428d7b3dSmrg 2033428d7b3dSmrgstruct gen5_clipper_viewport 2034428d7b3dSmrg{ 2035428d7b3dSmrg float xmin; 2036428d7b3dSmrg float xmax; 2037428d7b3dSmrg float ymin; 2038428d7b3dSmrg float ymax; 2039428d7b3dSmrg}; 2040428d7b3dSmrg 2041428d7b3dSmrgstruct gen5_cc_viewport 2042428d7b3dSmrg{ 2043428d7b3dSmrg float min_depth; 2044428d7b3dSmrg float max_depth; 2045428d7b3dSmrg}; 2046428d7b3dSmrg 2047428d7b3dSmrgstruct gen5_sf_viewport 2048428d7b3dSmrg{ 2049428d7b3dSmrg struct { 2050428d7b3dSmrg float m00; 2051428d7b3dSmrg float m11; 2052428d7b3dSmrg float m22; 2053428d7b3dSmrg float m30; 2054428d7b3dSmrg float m31; 2055428d7b3dSmrg float m32; 2056428d7b3dSmrg } viewport; 2057428d7b3dSmrg 2058428d7b3dSmrg struct { 2059428d7b3dSmrg short xmin; 2060428d7b3dSmrg short ymin; 2061428d7b3dSmrg short xmax; 2062428d7b3dSmrg short ymax; 2063428d7b3dSmrg } scissor; 2064428d7b3dSmrg}; 2065428d7b3dSmrg 2066428d7b3dSmrg/* Documented in the subsystem/shared-functions/sampler chapter... 2067428d7b3dSmrg */ 2068428d7b3dSmrgstruct gen5_surface_state 2069428d7b3dSmrg{ 2070428d7b3dSmrg struct { 2071428d7b3dSmrg unsigned int cube_pos_z:1; 2072428d7b3dSmrg unsigned int cube_neg_z:1; 2073428d7b3dSmrg unsigned int cube_pos_y:1; 2074428d7b3dSmrg unsigned int cube_neg_y:1; 2075428d7b3dSmrg unsigned int cube_pos_x:1; 2076428d7b3dSmrg unsigned int cube_neg_x:1; 2077428d7b3dSmrg unsigned int pad:3; 2078428d7b3dSmrg unsigned int render_cache_read_mode:1; 2079428d7b3dSmrg unsigned int mipmap_layout_mode:1; 2080428d7b3dSmrg unsigned int vert_line_stride_ofs:1; 2081428d7b3dSmrg unsigned int vert_line_stride:1; 2082428d7b3dSmrg unsigned int color_blend:1; 2083428d7b3dSmrg unsigned int writedisable_blue:1; 2084428d7b3dSmrg unsigned int writedisable_green:1; 2085428d7b3dSmrg unsigned int writedisable_red:1; 2086428d7b3dSmrg unsigned int writedisable_alpha:1; 2087428d7b3dSmrg unsigned int surface_format:9; 2088428d7b3dSmrg unsigned int data_return_format:1; 2089428d7b3dSmrg unsigned int pad0:1; 2090428d7b3dSmrg unsigned int surface_type:3; 2091428d7b3dSmrg } ss0; 2092428d7b3dSmrg 2093428d7b3dSmrg struct { 2094428d7b3dSmrg unsigned int base_addr; 2095428d7b3dSmrg } ss1; 2096428d7b3dSmrg 2097428d7b3dSmrg struct { 2098428d7b3dSmrg unsigned int render_target_rotation:2; 2099428d7b3dSmrg unsigned int mip_count:4; 2100428d7b3dSmrg unsigned int width:13; 2101428d7b3dSmrg unsigned int height:13; 2102428d7b3dSmrg } ss2; 2103428d7b3dSmrg 2104428d7b3dSmrg struct { 2105428d7b3dSmrg unsigned int tile_walk:1; 2106428d7b3dSmrg unsigned int tiled_surface:1; 2107428d7b3dSmrg unsigned int pad:1; 2108428d7b3dSmrg unsigned int pitch:18; 2109428d7b3dSmrg unsigned int depth:11; 2110428d7b3dSmrg } ss3; 2111428d7b3dSmrg 2112428d7b3dSmrg struct { 2113428d7b3dSmrg unsigned int pad:19; 2114428d7b3dSmrg unsigned int min_array_elt:9; 2115428d7b3dSmrg unsigned int min_lod:4; 2116428d7b3dSmrg } ss4; 2117428d7b3dSmrg 2118428d7b3dSmrg struct { 2119428d7b3dSmrg unsigned int pad:20; 2120428d7b3dSmrg unsigned int y_offset:4; 2121428d7b3dSmrg unsigned int pad2:1; 2122428d7b3dSmrg unsigned int x_offset:7; 2123428d7b3dSmrg } ss5; 2124428d7b3dSmrg}; 2125428d7b3dSmrg 2126428d7b3dSmrg/* Surface state DW0 */ 2127428d7b3dSmrg#define GEN5_SURFACE_RC_READ_WRITE (1 << 8) 2128428d7b3dSmrg#define GEN5_SURFACE_MIPLAYOUT_SHIFT 10 2129428d7b3dSmrg#define GEN5_SURFACE_MIPMAPLAYOUT_BELOW 0 2130428d7b3dSmrg#define GEN5_SURFACE_MIPMAPLAYOUT_RIGHT 1 2131428d7b3dSmrg#define GEN5_SURFACE_CUBEFACE_ENABLES 0x3f 2132428d7b3dSmrg#define GEN5_SURFACE_BLEND_ENABLED (1 << 13) 2133428d7b3dSmrg#define GEN5_SURFACE_WRITEDISABLE_B_SHIFT 14 2134428d7b3dSmrg#define GEN5_SURFACE_WRITEDISABLE_G_SHIFT 15 2135428d7b3dSmrg#define GEN5_SURFACE_WRITEDISABLE_R_SHIFT 16 2136428d7b3dSmrg#define GEN5_SURFACE_WRITEDISABLE_A_SHIFT 17 2137428d7b3dSmrg#define GEN5_SURFACE_FORMAT_SHIFT 18 2138428d7b3dSmrg#define GEN5_SURFACE_FORMAT_MASK INTEL_MASK(26, 18) 2139428d7b3dSmrg 2140428d7b3dSmrg#define GEN5_SURFACE_TYPE_SHIFT 29 2141428d7b3dSmrg#define GEN5_SURFACE_TYPE_MASK GEN5_MASK(31, 29) 2142428d7b3dSmrg#define GEN5_SURFACE_1D 0 2143428d7b3dSmrg#define GEN5_SURFACE_2D 1 2144428d7b3dSmrg#define GEN5_SURFACE_3D 2 2145428d7b3dSmrg#define GEN5_SURFACE_CUBE 3 2146428d7b3dSmrg#define GEN5_SURFACE_BUFFER 4 2147428d7b3dSmrg#define GEN5_SURFACE_NULL 7 2148428d7b3dSmrg 2149428d7b3dSmrg/* Surface state DW2 */ 2150428d7b3dSmrg#define GEN5_SURFACE_HEIGHT_SHIFT 19 2151428d7b3dSmrg#define GEN5_SURFACE_HEIGHT_MASK GEN5_MASK(31, 19) 2152428d7b3dSmrg#define GEN5_SURFACE_WIDTH_SHIFT 6 2153428d7b3dSmrg#define GEN5_SURFACE_WIDTH_MASK GEN5_MASK(18, 6) 2154428d7b3dSmrg#define GEN5_SURFACE_LOD_SHIFT 2 2155428d7b3dSmrg#define GEN5_SURFACE_LOD_MASK GEN5_MASK(5, 2) 2156428d7b3dSmrg 2157428d7b3dSmrg/* Surface state DW3 */ 2158428d7b3dSmrg#define GEN5_SURFACE_DEPTH_SHIFT 21 2159428d7b3dSmrg#define GEN5_SURFACE_DEPTH_MASK GEN5_MASK(31, 21) 2160428d7b3dSmrg#define GEN5_SURFACE_PITCH_SHIFT 3 2161428d7b3dSmrg#define GEN5_SURFACE_PITCH_MASK GEN5_MASK(19, 3) 2162428d7b3dSmrg#define GEN5_SURFACE_TILED (1 << 1) 2163428d7b3dSmrg#define GEN5_SURFACE_TILED_Y (1 << 0) 2164428d7b3dSmrg 2165428d7b3dSmrg/* Surface state DW4 */ 2166428d7b3dSmrg#define GEN5_SURFACE_MIN_LOD_SHIFT 28 2167428d7b3dSmrg#define GEN5_SURFACE_MIN_LOD_MASK GEN5_MASK(31, 28) 2168428d7b3dSmrg 2169428d7b3dSmrg/* Surface state DW5 */ 2170428d7b3dSmrg#define GEN5_SURFACE_X_OFFSET_SHIFT 25 2171428d7b3dSmrg#define GEN5_SURFACE_X_OFFSET_MASK GEN5_MASK(31, 25) 2172428d7b3dSmrg#define GEN5_SURFACE_Y_OFFSET_SHIFT 20 2173428d7b3dSmrg#define GEN5_SURFACE_Y_OFFSET_MASK GEN5_MASK(23, 20) 2174428d7b3dSmrg 2175428d7b3dSmrgstruct gen5_vertex_buffer_state 2176428d7b3dSmrg{ 2177428d7b3dSmrg struct { 2178428d7b3dSmrg unsigned int pitch:11; 2179428d7b3dSmrg unsigned int pad:15; 2180428d7b3dSmrg unsigned int access_type:1; 2181428d7b3dSmrg unsigned int vb_index:5; 2182428d7b3dSmrg } vb0; 2183428d7b3dSmrg 2184428d7b3dSmrg unsigned int start_addr; 2185428d7b3dSmrg unsigned int max_index; 2186428d7b3dSmrg#if 1 2187428d7b3dSmrg unsigned int instance_data_step_rate; /* not included for sequential/random vertices? */ 2188428d7b3dSmrg#endif 2189428d7b3dSmrg}; 2190428d7b3dSmrg 2191428d7b3dSmrg#define GEN5_VBP_MAX 17 2192428d7b3dSmrg 2193428d7b3dSmrgstruct gen5_vb_array_state { 2194428d7b3dSmrg struct header header; 2195428d7b3dSmrg struct gen5_vertex_buffer_state vb[GEN5_VBP_MAX]; 2196428d7b3dSmrg}; 2197428d7b3dSmrg 2198428d7b3dSmrg 2199428d7b3dSmrgstruct gen5_vertex_element_state 2200428d7b3dSmrg{ 2201428d7b3dSmrg struct 2202428d7b3dSmrg { 2203428d7b3dSmrg unsigned int src_offset:11; 2204428d7b3dSmrg unsigned int pad:5; 2205428d7b3dSmrg unsigned int src_format:9; 2206428d7b3dSmrg unsigned int pad0:1; 2207428d7b3dSmrg unsigned int valid:1; 2208428d7b3dSmrg unsigned int vertex_buffer_index:5; 2209428d7b3dSmrg } ve0; 2210428d7b3dSmrg 2211428d7b3dSmrg struct 2212428d7b3dSmrg { 2213428d7b3dSmrg unsigned int dst_offset:8; 2214428d7b3dSmrg unsigned int pad:8; 2215428d7b3dSmrg unsigned int vfcomponent3:4; 2216428d7b3dSmrg unsigned int vfcomponent2:4; 2217428d7b3dSmrg unsigned int vfcomponent1:4; 2218428d7b3dSmrg unsigned int vfcomponent0:4; 2219428d7b3dSmrg } ve1; 2220428d7b3dSmrg}; 2221428d7b3dSmrg 2222428d7b3dSmrg#define GEN5_VEP_MAX 18 2223428d7b3dSmrg 2224428d7b3dSmrgstruct gen5_vertex_element_packet { 2225428d7b3dSmrg struct header header; 2226428d7b3dSmrg struct gen5_vertex_element_state ve[GEN5_VEP_MAX]; /* note: less than _TNL_ATTRIB_MAX */ 2227428d7b3dSmrg}; 2228428d7b3dSmrg 2229428d7b3dSmrg 2230428d7b3dSmrgstruct gen5_urb_immediate { 2231428d7b3dSmrg unsigned int opcode:4; 2232428d7b3dSmrg unsigned int offset:6; 2233428d7b3dSmrg unsigned int swizzle_control:2; 2234428d7b3dSmrg unsigned int pad:1; 2235428d7b3dSmrg unsigned int allocate:1; 2236428d7b3dSmrg unsigned int used:1; 2237428d7b3dSmrg unsigned int complete:1; 2238428d7b3dSmrg unsigned int response_length:4; 2239428d7b3dSmrg unsigned int msg_length:4; 2240428d7b3dSmrg unsigned int msg_target:4; 2241428d7b3dSmrg unsigned int pad1:3; 2242428d7b3dSmrg unsigned int end_of_thread:1; 2243428d7b3dSmrg}; 2244428d7b3dSmrg 2245428d7b3dSmrg/* Instruction format for the execution units: 2246428d7b3dSmrg */ 2247428d7b3dSmrg 2248428d7b3dSmrgstruct gen5_instruction 2249428d7b3dSmrg{ 2250428d7b3dSmrg struct 2251428d7b3dSmrg { 2252428d7b3dSmrg unsigned int opcode:7; 2253428d7b3dSmrg unsigned int pad:1; 2254428d7b3dSmrg unsigned int access_mode:1; 2255428d7b3dSmrg unsigned int mask_control:1; 2256428d7b3dSmrg unsigned int dependency_control:2; 2257428d7b3dSmrg unsigned int compression_control:2; 2258428d7b3dSmrg unsigned int thread_control:2; 2259428d7b3dSmrg unsigned int predicate_control:4; 2260428d7b3dSmrg unsigned int predicate_inverse:1; 2261428d7b3dSmrg unsigned int execution_size:3; 2262428d7b3dSmrg unsigned int destreg__conditonalmod:4; /* destreg - send, conditionalmod - others */ 2263428d7b3dSmrg unsigned int pad0:2; 2264428d7b3dSmrg unsigned int debug_control:1; 2265428d7b3dSmrg unsigned int saturate:1; 2266428d7b3dSmrg } header; 2267428d7b3dSmrg 2268428d7b3dSmrg union { 2269428d7b3dSmrg struct 2270428d7b3dSmrg { 2271428d7b3dSmrg unsigned int dest_reg_file:2; 2272428d7b3dSmrg unsigned int dest_reg_type:3; 2273428d7b3dSmrg unsigned int src0_reg_file:2; 2274428d7b3dSmrg unsigned int src0_reg_type:3; 2275428d7b3dSmrg unsigned int src1_reg_file:2; 2276428d7b3dSmrg unsigned int src1_reg_type:3; 2277428d7b3dSmrg unsigned int pad:1; 2278428d7b3dSmrg unsigned int dest_subreg_nr:5; 2279428d7b3dSmrg unsigned int dest_reg_nr:8; 2280428d7b3dSmrg unsigned int dest_horiz_stride:2; 2281428d7b3dSmrg unsigned int dest_address_mode:1; 2282428d7b3dSmrg } da1; 2283428d7b3dSmrg 2284428d7b3dSmrg struct 2285428d7b3dSmrg { 2286428d7b3dSmrg unsigned int dest_reg_file:2; 2287428d7b3dSmrg unsigned int dest_reg_type:3; 2288428d7b3dSmrg unsigned int src0_reg_file:2; 2289428d7b3dSmrg unsigned int src0_reg_type:3; 2290428d7b3dSmrg unsigned int pad:6; 2291428d7b3dSmrg int dest_indirect_offset:10; /* offset against the deref'd address reg */ 2292428d7b3dSmrg unsigned int dest_subreg_nr:3; /* subnr for the address reg a0.x */ 2293428d7b3dSmrg unsigned int dest_horiz_stride:2; 2294428d7b3dSmrg unsigned int dest_address_mode:1; 2295428d7b3dSmrg } ia1; 2296428d7b3dSmrg 2297428d7b3dSmrg struct 2298428d7b3dSmrg { 2299428d7b3dSmrg unsigned int dest_reg_file:2; 2300428d7b3dSmrg unsigned int dest_reg_type:3; 2301428d7b3dSmrg unsigned int src0_reg_file:2; 2302428d7b3dSmrg unsigned int src0_reg_type:3; 2303428d7b3dSmrg unsigned int src1_reg_file:2; 2304428d7b3dSmrg unsigned int src1_reg_type:3; 2305428d7b3dSmrg unsigned int pad0:1; 2306428d7b3dSmrg unsigned int dest_writemask:4; 2307428d7b3dSmrg unsigned int dest_subreg_nr:1; 2308428d7b3dSmrg unsigned int dest_reg_nr:8; 2309428d7b3dSmrg unsigned int pad1:2; 2310428d7b3dSmrg unsigned int dest_address_mode:1; 2311428d7b3dSmrg } da16; 2312428d7b3dSmrg 2313428d7b3dSmrg struct 2314428d7b3dSmrg { 2315428d7b3dSmrg unsigned int dest_reg_file:2; 2316428d7b3dSmrg unsigned int dest_reg_type:3; 2317428d7b3dSmrg unsigned int src0_reg_file:2; 2318428d7b3dSmrg unsigned int src0_reg_type:3; 2319428d7b3dSmrg unsigned int pad0:6; 2320428d7b3dSmrg unsigned int dest_writemask:4; 2321428d7b3dSmrg int dest_indirect_offset:6; 2322428d7b3dSmrg unsigned int dest_subreg_nr:3; 2323428d7b3dSmrg unsigned int pad1:2; 2324428d7b3dSmrg unsigned int dest_address_mode:1; 2325428d7b3dSmrg } ia16; 2326428d7b3dSmrg } bits1; 2327428d7b3dSmrg 2328428d7b3dSmrg 2329428d7b3dSmrg union { 2330428d7b3dSmrg struct 2331428d7b3dSmrg { 2332428d7b3dSmrg unsigned int src0_subreg_nr:5; 2333428d7b3dSmrg unsigned int src0_reg_nr:8; 2334428d7b3dSmrg unsigned int src0_abs:1; 2335428d7b3dSmrg unsigned int src0_negate:1; 2336428d7b3dSmrg unsigned int src0_address_mode:1; 2337428d7b3dSmrg unsigned int src0_horiz_stride:2; 2338428d7b3dSmrg unsigned int src0_width:3; 2339428d7b3dSmrg unsigned int src0_vert_stride:4; 2340428d7b3dSmrg unsigned int flag_reg_nr:1; 2341428d7b3dSmrg unsigned int pad:6; 2342428d7b3dSmrg } da1; 2343428d7b3dSmrg 2344428d7b3dSmrg struct 2345428d7b3dSmrg { 2346428d7b3dSmrg int src0_indirect_offset:10; 2347428d7b3dSmrg unsigned int src0_subreg_nr:3; 2348428d7b3dSmrg unsigned int src0_abs:1; 2349428d7b3dSmrg unsigned int src0_negate:1; 2350428d7b3dSmrg unsigned int src0_address_mode:1; 2351428d7b3dSmrg unsigned int src0_horiz_stride:2; 2352428d7b3dSmrg unsigned int src0_width:3; 2353428d7b3dSmrg unsigned int src0_vert_stride:4; 2354428d7b3dSmrg unsigned int flag_reg_nr:1; 2355428d7b3dSmrg unsigned int pad:6; 2356428d7b3dSmrg } ia1; 2357428d7b3dSmrg 2358428d7b3dSmrg struct 2359428d7b3dSmrg { 2360428d7b3dSmrg unsigned int src0_swz_x:2; 2361428d7b3dSmrg unsigned int src0_swz_y:2; 2362428d7b3dSmrg unsigned int src0_subreg_nr:1; 2363428d7b3dSmrg unsigned int src0_reg_nr:8; 2364428d7b3dSmrg unsigned int src0_abs:1; 2365428d7b3dSmrg unsigned int src0_negate:1; 2366428d7b3dSmrg unsigned int src0_address_mode:1; 2367428d7b3dSmrg unsigned int src0_swz_z:2; 2368428d7b3dSmrg unsigned int src0_swz_w:2; 2369428d7b3dSmrg unsigned int pad0:1; 2370428d7b3dSmrg unsigned int src0_vert_stride:4; 2371428d7b3dSmrg unsigned int flag_reg_nr:1; 2372428d7b3dSmrg unsigned int pad1:6; 2373428d7b3dSmrg } da16; 2374428d7b3dSmrg 2375428d7b3dSmrg struct 2376428d7b3dSmrg { 2377428d7b3dSmrg unsigned int src0_swz_x:2; 2378428d7b3dSmrg unsigned int src0_swz_y:2; 2379428d7b3dSmrg int src0_indirect_offset:6; 2380428d7b3dSmrg unsigned int src0_subreg_nr:3; 2381428d7b3dSmrg unsigned int src0_abs:1; 2382428d7b3dSmrg unsigned int src0_negate:1; 2383428d7b3dSmrg unsigned int src0_address_mode:1; 2384428d7b3dSmrg unsigned int src0_swz_z:2; 2385428d7b3dSmrg unsigned int src0_swz_w:2; 2386428d7b3dSmrg unsigned int pad0:1; 2387428d7b3dSmrg unsigned int src0_vert_stride:4; 2388428d7b3dSmrg unsigned int flag_reg_nr:1; 2389428d7b3dSmrg unsigned int pad1:6; 2390428d7b3dSmrg } ia16; 2391428d7b3dSmrg 2392428d7b3dSmrg } bits2; 2393428d7b3dSmrg 2394428d7b3dSmrg union 2395428d7b3dSmrg { 2396428d7b3dSmrg struct 2397428d7b3dSmrg { 2398428d7b3dSmrg unsigned int src1_subreg_nr:5; 2399428d7b3dSmrg unsigned int src1_reg_nr:8; 2400428d7b3dSmrg unsigned int src1_abs:1; 2401428d7b3dSmrg unsigned int src1_negate:1; 2402428d7b3dSmrg unsigned int pad:1; 2403428d7b3dSmrg unsigned int src1_horiz_stride:2; 2404428d7b3dSmrg unsigned int src1_width:3; 2405428d7b3dSmrg unsigned int src1_vert_stride:4; 2406428d7b3dSmrg unsigned int pad0:7; 2407428d7b3dSmrg } da1; 2408428d7b3dSmrg 2409428d7b3dSmrg struct 2410428d7b3dSmrg { 2411428d7b3dSmrg unsigned int src1_swz_x:2; 2412428d7b3dSmrg unsigned int src1_swz_y:2; 2413428d7b3dSmrg unsigned int src1_subreg_nr:1; 2414428d7b3dSmrg unsigned int src1_reg_nr:8; 2415428d7b3dSmrg unsigned int src1_abs:1; 2416428d7b3dSmrg unsigned int src1_negate:1; 2417428d7b3dSmrg unsigned int pad0:1; 2418428d7b3dSmrg unsigned int src1_swz_z:2; 2419428d7b3dSmrg unsigned int src1_swz_w:2; 2420428d7b3dSmrg unsigned int pad1:1; 2421428d7b3dSmrg unsigned int src1_vert_stride:4; 2422428d7b3dSmrg unsigned int pad2:7; 2423428d7b3dSmrg } da16; 2424428d7b3dSmrg 2425428d7b3dSmrg struct 2426428d7b3dSmrg { 2427428d7b3dSmrg int src1_indirect_offset:10; 2428428d7b3dSmrg unsigned int src1_subreg_nr:3; 2429428d7b3dSmrg unsigned int src1_abs:1; 2430428d7b3dSmrg unsigned int src1_negate:1; 2431428d7b3dSmrg unsigned int pad0:1; 2432428d7b3dSmrg unsigned int src1_horiz_stride:2; 2433428d7b3dSmrg unsigned int src1_width:3; 2434428d7b3dSmrg unsigned int src1_vert_stride:4; 2435428d7b3dSmrg unsigned int flag_reg_nr:1; 2436428d7b3dSmrg unsigned int pad1:6; 2437428d7b3dSmrg } ia1; 2438428d7b3dSmrg 2439428d7b3dSmrg struct 2440428d7b3dSmrg { 2441428d7b3dSmrg unsigned int src1_swz_x:2; 2442428d7b3dSmrg unsigned int src1_swz_y:2; 2443428d7b3dSmrg int src1_indirect_offset:6; 2444428d7b3dSmrg unsigned int src1_subreg_nr:3; 2445428d7b3dSmrg unsigned int src1_abs:1; 2446428d7b3dSmrg unsigned int src1_negate:1; 2447428d7b3dSmrg unsigned int pad0:1; 2448428d7b3dSmrg unsigned int src1_swz_z:2; 2449428d7b3dSmrg unsigned int src1_swz_w:2; 2450428d7b3dSmrg unsigned int pad1:1; 2451428d7b3dSmrg unsigned int src1_vert_stride:4; 2452428d7b3dSmrg unsigned int flag_reg_nr:1; 2453428d7b3dSmrg unsigned int pad2:6; 2454428d7b3dSmrg } ia16; 2455428d7b3dSmrg 2456428d7b3dSmrg 2457428d7b3dSmrg struct 2458428d7b3dSmrg { 2459428d7b3dSmrg int jump_count:16; /* note: signed */ 2460428d7b3dSmrg unsigned int pop_count:4; 2461428d7b3dSmrg unsigned int pad0:12; 2462428d7b3dSmrg } if_else; 2463428d7b3dSmrg 2464428d7b3dSmrg struct { 2465428d7b3dSmrg unsigned int function:4; 2466428d7b3dSmrg unsigned int int_type:1; 2467428d7b3dSmrg unsigned int precision:1; 2468428d7b3dSmrg unsigned int saturate:1; 2469428d7b3dSmrg unsigned int data_type:1; 2470428d7b3dSmrg unsigned int pad0:8; 2471428d7b3dSmrg unsigned int response_length:4; 2472428d7b3dSmrg unsigned int msg_length:4; 2473428d7b3dSmrg unsigned int msg_target:4; 2474428d7b3dSmrg unsigned int pad1:3; 2475428d7b3dSmrg unsigned int end_of_thread:1; 2476428d7b3dSmrg } math; 2477428d7b3dSmrg 2478428d7b3dSmrg struct { 2479428d7b3dSmrg unsigned int binding_table_index:8; 2480428d7b3dSmrg unsigned int sampler:4; 2481428d7b3dSmrg unsigned int return_format:2; 2482428d7b3dSmrg unsigned int msg_type:2; 2483428d7b3dSmrg unsigned int response_length:4; 2484428d7b3dSmrg unsigned int msg_length:4; 2485428d7b3dSmrg unsigned int msg_target:4; 2486428d7b3dSmrg unsigned int pad1:3; 2487428d7b3dSmrg unsigned int end_of_thread:1; 2488428d7b3dSmrg } sampler; 2489428d7b3dSmrg 2490428d7b3dSmrg struct gen5_urb_immediate urb; 2491428d7b3dSmrg 2492428d7b3dSmrg struct { 2493428d7b3dSmrg unsigned int binding_table_index:8; 2494428d7b3dSmrg unsigned int msg_control:4; 2495428d7b3dSmrg unsigned int msg_type:2; 2496428d7b3dSmrg unsigned int target_cache:2; 2497428d7b3dSmrg unsigned int response_length:4; 2498428d7b3dSmrg unsigned int msg_length:4; 2499428d7b3dSmrg unsigned int msg_target:4; 2500428d7b3dSmrg unsigned int pad1:3; 2501428d7b3dSmrg unsigned int end_of_thread:1; 2502428d7b3dSmrg } dp_read; 2503428d7b3dSmrg 2504428d7b3dSmrg struct { 2505428d7b3dSmrg unsigned int binding_table_index:8; 2506428d7b3dSmrg unsigned int msg_control:3; 2507428d7b3dSmrg unsigned int pixel_scoreboard_clear:1; 2508428d7b3dSmrg unsigned int msg_type:3; 2509428d7b3dSmrg unsigned int send_commit_msg:1; 2510428d7b3dSmrg unsigned int response_length:4; 2511428d7b3dSmrg unsigned int msg_length:4; 2512428d7b3dSmrg unsigned int msg_target:4; 2513428d7b3dSmrg unsigned int pad1:3; 2514428d7b3dSmrg unsigned int end_of_thread:1; 2515428d7b3dSmrg } dp_write; 2516428d7b3dSmrg 2517428d7b3dSmrg struct { 2518428d7b3dSmrg unsigned int pad:16; 2519428d7b3dSmrg unsigned int response_length:4; 2520428d7b3dSmrg unsigned int msg_length:4; 2521428d7b3dSmrg unsigned int msg_target:4; 2522428d7b3dSmrg unsigned int pad1:3; 2523428d7b3dSmrg unsigned int end_of_thread:1; 2524428d7b3dSmrg } generic; 2525428d7b3dSmrg 2526428d7b3dSmrg unsigned int ud; 2527428d7b3dSmrg } bits3; 2528428d7b3dSmrg}; 2529428d7b3dSmrg 2530428d7b3dSmrg/* media pipeline */ 2531428d7b3dSmrg 2532428d7b3dSmrgstruct gen5_vfe_state { 2533428d7b3dSmrg struct { 2534428d7b3dSmrg unsigned int per_thread_scratch_space:4; 2535428d7b3dSmrg unsigned int pad3:3; 2536428d7b3dSmrg unsigned int extend_vfe_state_present:1; 2537428d7b3dSmrg unsigned int pad2:2; 2538428d7b3dSmrg unsigned int scratch_base:22; 2539428d7b3dSmrg } vfe0; 2540428d7b3dSmrg 2541428d7b3dSmrg struct { 2542428d7b3dSmrg unsigned int debug_counter_control:2; 2543428d7b3dSmrg unsigned int children_present:1; 2544428d7b3dSmrg unsigned int vfe_mode:4; 2545428d7b3dSmrg unsigned int pad2:2; 2546428d7b3dSmrg unsigned int num_urb_entries:7; 2547428d7b3dSmrg unsigned int urb_entry_alloc_size:9; 2548428d7b3dSmrg unsigned int max_threads:7; 2549428d7b3dSmrg } vfe1; 2550428d7b3dSmrg 2551428d7b3dSmrg struct { 2552428d7b3dSmrg unsigned int pad4:4; 2553428d7b3dSmrg unsigned int interface_descriptor_base:28; 2554428d7b3dSmrg } vfe2; 2555428d7b3dSmrg}; 2556428d7b3dSmrg 2557428d7b3dSmrgstruct gen5_vld_state { 2558428d7b3dSmrg struct { 2559428d7b3dSmrg unsigned int pad6:6; 2560428d7b3dSmrg unsigned int scan_order:1; 2561428d7b3dSmrg unsigned int intra_vlc_format:1; 2562428d7b3dSmrg unsigned int quantizer_scale_type:1; 2563428d7b3dSmrg unsigned int concealment_motion_vector:1; 2564428d7b3dSmrg unsigned int frame_predict_frame_dct:1; 2565428d7b3dSmrg unsigned int top_field_first:1; 2566428d7b3dSmrg unsigned int picture_structure:2; 2567428d7b3dSmrg unsigned int intra_dc_precision:2; 2568428d7b3dSmrg unsigned int f_code_0_0:4; 2569428d7b3dSmrg unsigned int f_code_0_1:4; 2570428d7b3dSmrg unsigned int f_code_1_0:4; 2571428d7b3dSmrg unsigned int f_code_1_1:4; 2572428d7b3dSmrg } vld0; 2573428d7b3dSmrg 2574428d7b3dSmrg struct { 2575428d7b3dSmrg unsigned int pad2:9; 2576428d7b3dSmrg unsigned int picture_coding_type:2; 2577428d7b3dSmrg unsigned int pad:21; 2578428d7b3dSmrg } vld1; 2579428d7b3dSmrg 2580428d7b3dSmrg struct { 2581428d7b3dSmrg unsigned int index_0:4; 2582428d7b3dSmrg unsigned int index_1:4; 2583428d7b3dSmrg unsigned int index_2:4; 2584428d7b3dSmrg unsigned int index_3:4; 2585428d7b3dSmrg unsigned int index_4:4; 2586428d7b3dSmrg unsigned int index_5:4; 2587428d7b3dSmrg unsigned int index_6:4; 2588428d7b3dSmrg unsigned int index_7:4; 2589428d7b3dSmrg } desc_remap_table0; 2590428d7b3dSmrg 2591428d7b3dSmrg struct { 2592428d7b3dSmrg unsigned int index_8:4; 2593428d7b3dSmrg unsigned int index_9:4; 2594428d7b3dSmrg unsigned int index_10:4; 2595428d7b3dSmrg unsigned int index_11:4; 2596428d7b3dSmrg unsigned int index_12:4; 2597428d7b3dSmrg unsigned int index_13:4; 2598428d7b3dSmrg unsigned int index_14:4; 2599428d7b3dSmrg unsigned int index_15:4; 2600428d7b3dSmrg } desc_remap_table1; 2601428d7b3dSmrg}; 2602428d7b3dSmrg 2603428d7b3dSmrgstruct gen5_interface_descriptor { 2604428d7b3dSmrg struct { 2605428d7b3dSmrg unsigned int grf_reg_blocks:4; 2606428d7b3dSmrg unsigned int pad:2; 2607428d7b3dSmrg unsigned int kernel_start_pointer:26; 2608428d7b3dSmrg } desc0; 2609428d7b3dSmrg 2610428d7b3dSmrg struct { 2611428d7b3dSmrg unsigned int pad:7; 2612428d7b3dSmrg unsigned int software_exception:1; 2613428d7b3dSmrg unsigned int pad2:3; 2614428d7b3dSmrg unsigned int maskstack_exception:1; 2615428d7b3dSmrg unsigned int pad3:1; 2616428d7b3dSmrg unsigned int illegal_opcode_exception:1; 2617428d7b3dSmrg unsigned int pad4:2; 2618428d7b3dSmrg unsigned int floating_point_mode:1; 2619428d7b3dSmrg unsigned int thread_priority:1; 2620428d7b3dSmrg unsigned int single_program_flow:1; 2621428d7b3dSmrg unsigned int pad5:1; 2622428d7b3dSmrg unsigned int const_urb_entry_read_offset:6; 2623428d7b3dSmrg unsigned int const_urb_entry_read_len:6; 2624428d7b3dSmrg } desc1; 2625428d7b3dSmrg 2626428d7b3dSmrg struct { 2627428d7b3dSmrg unsigned int pad:2; 2628428d7b3dSmrg unsigned int sampler_count:3; 2629428d7b3dSmrg unsigned int sampler_state_pointer:27; 2630428d7b3dSmrg } desc2; 2631428d7b3dSmrg 2632428d7b3dSmrg struct { 2633428d7b3dSmrg unsigned int binding_table_entry_count:5; 2634428d7b3dSmrg unsigned int binding_table_pointer:27; 2635428d7b3dSmrg } desc3; 2636428d7b3dSmrg}; 2637428d7b3dSmrg 2638428d7b3dSmrgstruct gen6_blend_state 2639428d7b3dSmrg{ 2640428d7b3dSmrg struct { 2641428d7b3dSmrg unsigned int dest_blend_factor:5; 2642428d7b3dSmrg unsigned int source_blend_factor:5; 2643428d7b3dSmrg unsigned int pad3:1; 2644428d7b3dSmrg unsigned int blend_func:3; 2645428d7b3dSmrg unsigned int pad2:1; 2646428d7b3dSmrg unsigned int ia_dest_blend_factor:5; 2647428d7b3dSmrg unsigned int ia_source_blend_factor:5; 2648428d7b3dSmrg unsigned int pad1:1; 2649428d7b3dSmrg unsigned int ia_blend_func:3; 2650428d7b3dSmrg unsigned int pad0:1; 2651428d7b3dSmrg unsigned int ia_blend_enable:1; 2652428d7b3dSmrg unsigned int blend_enable:1; 2653428d7b3dSmrg } blend0; 2654428d7b3dSmrg 2655428d7b3dSmrg struct { 2656428d7b3dSmrg unsigned int post_blend_clamp_enable:1; 2657428d7b3dSmrg unsigned int pre_blend_clamp_enable:1; 2658428d7b3dSmrg unsigned int clamp_range:2; 2659428d7b3dSmrg unsigned int pad0:4; 2660428d7b3dSmrg unsigned int x_dither_offset:2; 2661428d7b3dSmrg unsigned int y_dither_offset:2; 2662428d7b3dSmrg unsigned int dither_enable:1; 2663428d7b3dSmrg unsigned int alpha_test_func:3; 2664428d7b3dSmrg unsigned int alpha_test_enable:1; 2665428d7b3dSmrg unsigned int pad1:1; 2666428d7b3dSmrg unsigned int logic_op_func:4; 2667428d7b3dSmrg unsigned int logic_op_enable:1; 2668428d7b3dSmrg unsigned int pad2:1; 2669428d7b3dSmrg unsigned int write_disable_b:1; 2670428d7b3dSmrg unsigned int write_disable_g:1; 2671428d7b3dSmrg unsigned int write_disable_r:1; 2672428d7b3dSmrg unsigned int write_disable_a:1; 2673428d7b3dSmrg unsigned int pad3:1; 2674428d7b3dSmrg unsigned int alpha_to_coverage_dither:1; 2675428d7b3dSmrg unsigned int alpha_to_one:1; 2676428d7b3dSmrg unsigned int alpha_to_coverage:1; 2677428d7b3dSmrg } blend1; 2678428d7b3dSmrg}; 2679428d7b3dSmrg 2680428d7b3dSmrgstruct gen6_color_calc_state 2681428d7b3dSmrg{ 2682428d7b3dSmrg struct { 2683428d7b3dSmrg unsigned int alpha_test_format:1; 2684428d7b3dSmrg unsigned int pad0:14; 2685428d7b3dSmrg unsigned int round_disable:1; 2686428d7b3dSmrg unsigned int bf_stencil_ref:8; 2687428d7b3dSmrg unsigned int stencil_ref:8; 2688428d7b3dSmrg } cc0; 2689428d7b3dSmrg 2690428d7b3dSmrg union { 2691428d7b3dSmrg float alpha_ref_f; 2692428d7b3dSmrg struct { 2693428d7b3dSmrg unsigned int ui:8; 2694428d7b3dSmrg unsigned int pad0:24; 2695428d7b3dSmrg } alpha_ref_fi; 2696428d7b3dSmrg } cc1; 2697428d7b3dSmrg 2698428d7b3dSmrg float constant_r; 2699428d7b3dSmrg float constant_g; 2700428d7b3dSmrg float constant_b; 2701428d7b3dSmrg float constant_a; 2702428d7b3dSmrg}; 2703428d7b3dSmrg 2704428d7b3dSmrgstruct gen6_depth_stencil_state 2705428d7b3dSmrg{ 2706428d7b3dSmrg struct { 2707428d7b3dSmrg unsigned int pad0:3; 2708428d7b3dSmrg unsigned int bf_stencil_pass_depth_pass_op:3; 2709428d7b3dSmrg unsigned int bf_stencil_pass_depth_fail_op:3; 2710428d7b3dSmrg unsigned int bf_stencil_fail_op:3; 2711428d7b3dSmrg unsigned int bf_stencil_func:3; 2712428d7b3dSmrg unsigned int bf_stencil_enable:1; 2713428d7b3dSmrg unsigned int pad1:2; 2714428d7b3dSmrg unsigned int stencil_write_enable:1; 2715428d7b3dSmrg unsigned int stencil_pass_depth_pass_op:3; 2716428d7b3dSmrg unsigned int stencil_pass_depth_fail_op:3; 2717428d7b3dSmrg unsigned int stencil_fail_op:3; 2718428d7b3dSmrg unsigned int stencil_func:3; 2719428d7b3dSmrg unsigned int stencil_enable:1; 2720428d7b3dSmrg } ds0; 2721428d7b3dSmrg 2722428d7b3dSmrg struct { 2723428d7b3dSmrg unsigned int bf_stencil_write_mask:8; 2724428d7b3dSmrg unsigned int bf_stencil_test_mask:8; 2725428d7b3dSmrg unsigned int stencil_write_mask:8; 2726428d7b3dSmrg unsigned int stencil_test_mask:8; 2727428d7b3dSmrg } ds1; 2728428d7b3dSmrg 2729428d7b3dSmrg struct { 2730428d7b3dSmrg unsigned int pad0:26; 2731428d7b3dSmrg unsigned int depth_write_enable:1; 2732428d7b3dSmrg unsigned int depth_test_func:3; 2733428d7b3dSmrg unsigned int pad1:1; 2734428d7b3dSmrg unsigned int depth_test_enable:1; 2735428d7b3dSmrg } ds2; 2736428d7b3dSmrg}; 2737428d7b3dSmrg 2738428d7b3dSmrgtypedef enum { 2739428d7b3dSmrg SAMPLER_FILTER_NEAREST = 0, 2740428d7b3dSmrg SAMPLER_FILTER_BILINEAR, 2741428d7b3dSmrg FILTER_COUNT 2742428d7b3dSmrg} sampler_filter_t; 2743428d7b3dSmrg 2744428d7b3dSmrgtypedef enum { 2745428d7b3dSmrg SAMPLER_EXTEND_NONE = 0, 2746428d7b3dSmrg SAMPLER_EXTEND_REPEAT, 2747428d7b3dSmrg SAMPLER_EXTEND_PAD, 2748428d7b3dSmrg SAMPLER_EXTEND_REFLECT, 2749428d7b3dSmrg EXTEND_COUNT 2750428d7b3dSmrg} sampler_extend_t; 2751428d7b3dSmrg 2752428d7b3dSmrgtypedef enum { 2753428d7b3dSmrg WM_KERNEL = 0, 2754428d7b3dSmrg WM_KERNEL_P, 2755428d7b3dSmrg 2756428d7b3dSmrg WM_KERNEL_MASK, 2757428d7b3dSmrg WM_KERNEL_MASK_P, 2758428d7b3dSmrg 2759428d7b3dSmrg WM_KERNEL_MASKCA, 2760428d7b3dSmrg WM_KERNEL_MASKCA_P, 2761428d7b3dSmrg 2762428d7b3dSmrg WM_KERNEL_MASKSA, 2763428d7b3dSmrg WM_KERNEL_MASKSA_P, 2764428d7b3dSmrg 2765428d7b3dSmrg WM_KERNEL_OPACITY, 2766428d7b3dSmrg WM_KERNEL_OPACITY_P, 2767428d7b3dSmrg 2768428d7b3dSmrg WM_KERNEL_VIDEO_PLANAR, 2769428d7b3dSmrg WM_KERNEL_VIDEO_PACKED, 2770428d7b3dSmrg KERNEL_COUNT 2771428d7b3dSmrg} wm_kernel_t; 2772428d7b3dSmrg#endif 2773