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 GEN4_RENDER_H 29428d7b3dSmrg#define GEN4_RENDER_H 30428d7b3dSmrg 31428d7b3dSmrg#define GEN4_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \ 32428d7b3dSmrg ((Pipeline) << 27) | \ 33428d7b3dSmrg ((Opcode) << 24) | \ 34428d7b3dSmrg ((Subopcode) << 16)) 35428d7b3dSmrg 36428d7b3dSmrg#define GEN4_URB_FENCE GEN4_3D(0, 0, 0) 37428d7b3dSmrg#define GEN4_CS_URB_STATE GEN4_3D(0, 0, 1) 38428d7b3dSmrg#define GEN4_CONSTANT_BUFFER GEN4_3D(0, 0, 2) 39428d7b3dSmrg#define GEN4_STATE_PREFETCH GEN4_3D(0, 0, 3) 40428d7b3dSmrg 41428d7b3dSmrg#define GEN4_STATE_BASE_ADDRESS GEN4_3D(0, 1, 1) 42428d7b3dSmrg#define GEN4_STATE_SIP GEN4_3D(0, 1, 2) 43428d7b3dSmrg#define GEN4_PIPELINE_SELECT GEN4_3D(0, 1, 4) 44428d7b3dSmrg 45428d7b3dSmrg#define NEW_PIPELINE_SELECT GEN4_3D(1, 1, 4) 46428d7b3dSmrg 47428d7b3dSmrg#define GEN4_MEDIA_STATE_POINTERS GEN4_3D(2, 0, 0) 48428d7b3dSmrg#define GEN4_MEDIA_OBJECT GEN4_3D(2, 1, 0) 49428d7b3dSmrg 50428d7b3dSmrg#define GEN4_3DSTATE_PIPELINED_POINTERS GEN4_3D(3, 0, 0) 51428d7b3dSmrg#define GEN4_3DSTATE_BINDING_TABLE_POINTERS GEN4_3D(3, 0, 1) 52428d7b3dSmrg 53428d7b3dSmrg#define GEN4_3DSTATE_VERTEX_BUFFERS GEN4_3D(3, 0, 8) 54428d7b3dSmrg#define GEN4_3DSTATE_VERTEX_ELEMENTS GEN4_3D(3, 0, 9) 55428d7b3dSmrg#define GEN4_3DSTATE_INDEX_BUFFER GEN4_3D(3, 0, 0xa) 56428d7b3dSmrg#define GEN4_3DSTATE_VF_STATISTICS GEN4_3D(3, 0, 0xb) 57428d7b3dSmrg 58428d7b3dSmrg#define GEN4_3DSTATE_DRAWING_RECTANGLE GEN4_3D(3, 1, 0) 59428d7b3dSmrg#define GEN4_3DSTATE_CONSTANT_COLOR GEN4_3D(3, 1, 1) 60428d7b3dSmrg#define GEN4_3DSTATE_SAMPLER_PALETTE_LOAD GEN4_3D(3, 1, 2) 61428d7b3dSmrg#define GEN4_3DSTATE_CHROMA_KEY GEN4_3D(3, 1, 4) 62428d7b3dSmrg#define GEN4_3DSTATE_DEPTH_BUFFER GEN4_3D(3, 1, 5) 63428d7b3dSmrg# define GEN4_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT 29 64428d7b3dSmrg# define GEN4_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT 18 65428d7b3dSmrg 66428d7b3dSmrg#define GEN4_3DSTATE_POLY_STIPPLE_OFFSET GEN4_3D(3, 1, 6) 67428d7b3dSmrg#define GEN4_3DSTATE_POLY_STIPPLE_PATTERN GEN4_3D(3, 1, 7) 68428d7b3dSmrg#define GEN4_3DSTATE_LINE_STIPPLE GEN4_3D(3, 1, 8) 69428d7b3dSmrg#define GEN4_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP GEN4_3D(3, 1, 9) 70428d7b3dSmrg/* These two are BLC and CTG only, not BW or CL */ 71428d7b3dSmrg#define GEN4_3DSTATE_AA_LINE_PARAMS GEN4_3D(3, 1, 0xa) 72428d7b3dSmrg#define GEN4_3DSTATE_GS_SVB_INDEX GEN4_3D(3, 1, 0xb) 73428d7b3dSmrg 74428d7b3dSmrg#define GEN4_PIPE_CONTROL GEN4_3D(3, 2, 0) 75428d7b3dSmrg 76428d7b3dSmrg#define GEN4_3DPRIMITIVE GEN4_3D(3, 3, 0) 77428d7b3dSmrg 78428d7b3dSmrg#define GEN4_3DSTATE_CLEAR_PARAMS GEN4_3D(3, 1, 0x10) 79428d7b3dSmrg/* DW1 */ 80428d7b3dSmrg# define GEN4_3DSTATE_DEPTH_CLEAR_VALID (1 << 15) 81428d7b3dSmrg 82428d7b3dSmrg#define PIPELINE_SELECT_3D 0 83428d7b3dSmrg#define PIPELINE_SELECT_MEDIA 1 84428d7b3dSmrg 85428d7b3dSmrg#define UF0_CS_REALLOC (1 << 13) 86428d7b3dSmrg#define UF0_VFE_REALLOC (1 << 12) 87428d7b3dSmrg#define UF0_SF_REALLOC (1 << 11) 88428d7b3dSmrg#define UF0_CLIP_REALLOC (1 << 10) 89428d7b3dSmrg#define UF0_GS_REALLOC (1 << 9) 90428d7b3dSmrg#define UF0_VS_REALLOC (1 << 8) 91428d7b3dSmrg#define UF1_CLIP_FENCE_SHIFT 20 92428d7b3dSmrg#define UF1_GS_FENCE_SHIFT 10 93428d7b3dSmrg#define UF1_VS_FENCE_SHIFT 0 94428d7b3dSmrg#define UF2_CS_FENCE_SHIFT 20 95428d7b3dSmrg#define UF2_VFE_FENCE_SHIFT 10 96428d7b3dSmrg#define UF2_SF_FENCE_SHIFT 0 97428d7b3dSmrg 98428d7b3dSmrg/* for GEN4_STATE_BASE_ADDRESS */ 99428d7b3dSmrg#define BASE_ADDRESS_MODIFY (1 << 0) 100428d7b3dSmrg 101428d7b3dSmrg/* for GEN4_3DSTATE_PIPELINED_POINTERS */ 102428d7b3dSmrg#define GEN4_GS_DISABLE 0 103428d7b3dSmrg#define GEN4_GS_ENABLE 1 104428d7b3dSmrg#define GEN4_CLIP_DISABLE 0 105428d7b3dSmrg#define GEN4_CLIP_ENABLE 1 106428d7b3dSmrg 107428d7b3dSmrg/* for GEN4_PIPE_CONTROL */ 108428d7b3dSmrg#define GEN4_PIPE_CONTROL_NOWRITE (0 << 14) 109428d7b3dSmrg#define GEN4_PIPE_CONTROL_WRITE_QWORD (1 << 14) 110428d7b3dSmrg#define GEN4_PIPE_CONTROL_WRITE_DEPTH (2 << 14) 111428d7b3dSmrg#define GEN4_PIPE_CONTROL_WRITE_TIME (3 << 14) 112428d7b3dSmrg#define GEN4_PIPE_CONTROL_DEPTH_STALL (1 << 13) 113428d7b3dSmrg#define GEN4_PIPE_CONTROL_WC_FLUSH (1 << 12) 114428d7b3dSmrg#define GEN4_PIPE_CONTROL_IS_FLUSH (1 << 11) 115428d7b3dSmrg#define GEN4_PIPE_CONTROL_TC_FLUSH (1 << 10) /* ctg+ */ 116428d7b3dSmrg#define GEN4_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8) 117428d7b3dSmrg#define GEN4_PIPE_CONTROL_GLOBAL_GTT (1 << 2) 118428d7b3dSmrg#define GEN4_PIPE_CONTROL_LOCAL_PGTT (0 << 2) 119428d7b3dSmrg#define GEN4_PIPE_CONTROL_DEPTH_CACHE_FLUSH (1 << 0) 120428d7b3dSmrg 121428d7b3dSmrg/* VERTEX_BUFFER_STATE Structure */ 122428d7b3dSmrg#define VB0_BUFFER_INDEX_SHIFT 27 123428d7b3dSmrg#define VB0_VERTEXDATA (0 << 26) 124428d7b3dSmrg#define VB0_INSTANCEDATA (1 << 26) 125428d7b3dSmrg#define VB0_BUFFER_PITCH_SHIFT 0 126428d7b3dSmrg 127428d7b3dSmrg/* VERTEX_ELEMENT_STATE Structure */ 128428d7b3dSmrg#define VE0_VERTEX_BUFFER_INDEX_SHIFT 27 129428d7b3dSmrg#define VE0_VALID (1 << 26) 130428d7b3dSmrg#define VE0_FORMAT_SHIFT 16 131428d7b3dSmrg#define VE0_OFFSET_SHIFT 0 132428d7b3dSmrg#define VE1_VFCOMPONENT_0_SHIFT 28 133428d7b3dSmrg#define VE1_VFCOMPONENT_1_SHIFT 24 134428d7b3dSmrg#define VE1_VFCOMPONENT_2_SHIFT 20 135428d7b3dSmrg#define VE1_VFCOMPONENT_3_SHIFT 16 136428d7b3dSmrg#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT 0 137428d7b3dSmrg 138428d7b3dSmrg/* 3DPRIMITIVE bits */ 139428d7b3dSmrg#define GEN4_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15) 140428d7b3dSmrg#define GEN4_3DPRIMITIVE_VERTEX_RANDOM (1 << 15) 141428d7b3dSmrg/* Primitive types are in gen4_defines.h */ 142428d7b3dSmrg#define GEN4_3DPRIMITIVE_TOPOLOGY_SHIFT 10 143428d7b3dSmrg 144428d7b3dSmrg#define GEN4_SVG_CTL 0x7400 145428d7b3dSmrg 146428d7b3dSmrg#define GEN4_SVG_CTL_GS_BA (0 << 8) 147428d7b3dSmrg#define GEN4_SVG_CTL_SS_BA (1 << 8) 148428d7b3dSmrg#define GEN4_SVG_CTL_IO_BA (2 << 8) 149428d7b3dSmrg#define GEN4_SVG_CTL_GS_AUB (3 << 8) 150428d7b3dSmrg#define GEN4_SVG_CTL_IO_AUB (4 << 8) 151428d7b3dSmrg#define GEN4_SVG_CTL_SIP (5 << 8) 152428d7b3dSmrg 153428d7b3dSmrg#define GEN4_SVG_RDATA 0x7404 154428d7b3dSmrg#define GEN4_SVG_WORK_CTL 0x7408 155428d7b3dSmrg 156428d7b3dSmrg#define GEN4_VF_CTL 0x7500 157428d7b3dSmrg 158428d7b3dSmrg#define GEN4_VF_CTL_SNAPSHOT_COMPLETE (1 << 31) 159428d7b3dSmrg#define GEN4_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID (0 << 8) 160428d7b3dSmrg#define GEN4_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG (1 << 8) 161428d7b3dSmrg#define GEN4_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE (0 << 4) 162428d7b3dSmrg#define GEN4_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX (1 << 4) 163428d7b3dSmrg#define GEN4_VF_CTL_SKIP_INITIAL_PRIMITIVES (1 << 3) 164428d7b3dSmrg#define GEN4_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE (1 << 2) 165428d7b3dSmrg#define GEN4_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE (1 << 1) 166428d7b3dSmrg#define GEN4_VF_CTL_SNAPSHOT_ENABLE (1 << 0) 167428d7b3dSmrg 168428d7b3dSmrg#define GEN4_VF_STRG_VAL 0x7504 169428d7b3dSmrg#define GEN4_VF_STR_VL_OVR 0x7508 170428d7b3dSmrg#define GEN4_VF_VC_OVR 0x750c 171428d7b3dSmrg#define GEN4_VF_STR_PSKIP 0x7510 172428d7b3dSmrg#define GEN4_VF_MAX_PRIM 0x7514 173428d7b3dSmrg#define GEN4_VF_RDATA 0x7518 174428d7b3dSmrg 175428d7b3dSmrg#define GEN4_VS_CTL 0x7600 176428d7b3dSmrg#define GEN4_VS_CTL_SNAPSHOT_COMPLETE (1 << 31) 177428d7b3dSmrg#define GEN4_VS_CTL_SNAPSHOT_MUX_VERTEX_0 (0 << 8) 178428d7b3dSmrg#define GEN4_VS_CTL_SNAPSHOT_MUX_VERTEX_1 (1 << 8) 179428d7b3dSmrg#define GEN4_VS_CTL_SNAPSHOT_MUX_VALID_COUNT (2 << 8) 180428d7b3dSmrg#define GEN4_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER (3 << 8) 181428d7b3dSmrg#define GEN4_VS_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 182428d7b3dSmrg#define GEN4_VS_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 183428d7b3dSmrg#define GEN4_VS_CTL_SNAPSHOT_ENABLE (1 << 0) 184428d7b3dSmrg 185428d7b3dSmrg#define GEN4_VS_STRG_VAL 0x7604 186428d7b3dSmrg#define GEN4_VS_RDATA 0x7608 187428d7b3dSmrg 188428d7b3dSmrg#define GEN4_SF_CTL 0x7b00 189428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_COMPLETE (1 << 31) 190428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID (0 << 8) 191428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8) 192428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID (2 << 8) 193428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8) 194428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID (4 << 8) 195428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8) 196428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT (6 << 8) 197428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER (7 << 8) 198428d7b3dSmrg#define GEN4_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE (1 << 4) 199428d7b3dSmrg#define GEN4_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE (1 << 3) 200428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 201428d7b3dSmrg#define GEN4_SF_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 202428d7b3dSmrg#define GEN4_SF_CTL_SNAPSHOT_ENABLE (1 << 0) 203428d7b3dSmrg 204428d7b3dSmrg#define GEN4_SF_STRG_VAL 0x7b04 205428d7b3dSmrg#define GEN4_SF_RDATA 0x7b18 206428d7b3dSmrg 207428d7b3dSmrg#define GEN4_WIZ_CTL 0x7c00 208428d7b3dSmrg#define GEN4_WIZ_CTL_SNAPSHOT_COMPLETE (1 << 31) 209428d7b3dSmrg#define GEN4_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT 16 210428d7b3dSmrg#define GEN4_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER (0 << 8) 211428d7b3dSmrg#define GEN4_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE (1 << 8) 212428d7b3dSmrg#define GEN4_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE (2 << 8) 213428d7b3dSmrg#define GEN4_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH (1 << 6) 214428d7b3dSmrg#define GEN4_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS (1 << 5) 215428d7b3dSmrg#define GEN4_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE (1 << 4) 216428d7b3dSmrg#define GEN4_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG (1 << 3) 217428d7b3dSmrg#define GEN4_WIZ_CTL_SNAPSHOT_ALL_THREADS (1 << 2) 218428d7b3dSmrg#define GEN4_WIZ_CTL_THREAD_SNAPSHOT_ENABLE (1 << 1) 219428d7b3dSmrg#define GEN4_WIZ_CTL_SNAPSHOT_ENABLE (1 << 0) 220428d7b3dSmrg 221428d7b3dSmrg#define GEN4_WIZ_STRG_VAL 0x7c04 222428d7b3dSmrg#define GEN4_WIZ_RDATA 0x7c18 223428d7b3dSmrg 224428d7b3dSmrg#define GEN4_TS_CTL 0x7e00 225428d7b3dSmrg#define GEN4_TS_CTL_SNAPSHOT_COMPLETE (1 << 31) 226428d7b3dSmrg#define GEN4_TS_CTL_SNAPSHOT_MESSAGE_ERROR (0 << 8) 227428d7b3dSmrg#define GEN4_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR (3 << 8) 228428d7b3dSmrg#define GEN4_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS (1 << 2) 229428d7b3dSmrg#define GEN4_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS (1 << 1) 230428d7b3dSmrg#define GEN4_TS_CTL_SNAPSHOT_ENABLE (1 << 0) 231428d7b3dSmrg 232428d7b3dSmrg#define GEN4_TS_STRG_VAL 0x7e04 233428d7b3dSmrg#define GEN4_TS_RDATA 0x7e08 234428d7b3dSmrg 235428d7b3dSmrg#define GEN4_TD_CTL 0x8000 236428d7b3dSmrg#define GEN4_TD_CTL_MUX_SHIFT 8 237428d7b3dSmrg#define GEN4_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH (1 << 7) 238428d7b3dSmrg#define GEN4_TD_CTL_FORCE_EXTERNAL_HALT (1 << 6) 239428d7b3dSmrg#define GEN4_TD_CTL_EXCEPTION_MASK_OVERRIDE (1 << 5) 240428d7b3dSmrg#define GEN4_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE (1 << 4) 241428d7b3dSmrg#define GEN4_TD_CTL_BREAKPOINT_ENABLE (1 << 2) 242428d7b3dSmrg#define GEN4_TD_CTL2 0x8004 243428d7b3dSmrg#define GEN4_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28) 244428d7b3dSmrg#define GEN4_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE (1 << 26) 245428d7b3dSmrg#define GEN4_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE (1 << 25) 246428d7b3dSmrg#define GEN4_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT 16 247428d7b3dSmrg#define GEN4_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE (1 << 8) 248428d7b3dSmrg#define GEN4_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7) 249428d7b3dSmrg#define GEN4_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE (1 << 6) 250428d7b3dSmrg#define GEN4_TD_CTL2_SF_EXECUTION_MASK_ENABLE (1 << 5) 251428d7b3dSmrg#define GEN4_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE (1 << 4) 252428d7b3dSmrg#define GEN4_TD_CTL2_GS_EXECUTION_MASK_ENABLE (1 << 3) 253428d7b3dSmrg#define GEN4_TD_CTL2_VS_EXECUTION_MASK_ENABLE (1 << 0) 254428d7b3dSmrg#define GEN4_TD_VF_VS_EMSK 0x8008 255428d7b3dSmrg#define GEN4_TD_GS_EMSK 0x800c 256428d7b3dSmrg#define GEN4_TD_CLIP_EMSK 0x8010 257428d7b3dSmrg#define GEN4_TD_SF_EMSK 0x8014 258428d7b3dSmrg#define GEN4_TD_WIZ_EMSK 0x8018 259428d7b3dSmrg#define GEN4_TD_0_6_EHTRG_VAL 0x801c 260428d7b3dSmrg#define GEN4_TD_0_7_EHTRG_VAL 0x8020 261428d7b3dSmrg#define GEN4_TD_0_6_EHTRG_MSK 0x8024 262428d7b3dSmrg#define GEN4_TD_0_7_EHTRG_MSK 0x8028 263428d7b3dSmrg#define GEN4_TD_RDATA 0x802c 264428d7b3dSmrg#define GEN4_TD_TS_EMSK 0x8030 265428d7b3dSmrg 266428d7b3dSmrg#define GEN4_EU_CTL 0x8800 267428d7b3dSmrg#define GEN4_EU_CTL_SELECT_SHIFT 16 268428d7b3dSmrg#define GEN4_EU_CTL_DATA_MUX_SHIFT 8 269428d7b3dSmrg#define GEN4_EU_ATT_0 0x8810 270428d7b3dSmrg#define GEN4_EU_ATT_1 0x8814 271428d7b3dSmrg#define GEN4_EU_ATT_DATA_0 0x8820 272428d7b3dSmrg#define GEN4_EU_ATT_DATA_1 0x8824 273428d7b3dSmrg#define GEN4_EU_ATT_CLR_0 0x8830 274428d7b3dSmrg#define GEN4_EU_ATT_CLR_1 0x8834 275428d7b3dSmrg#define GEN4_EU_RDATA 0x8840 276428d7b3dSmrg 277428d7b3dSmrg/* 3D state: 278428d7b3dSmrg */ 279428d7b3dSmrg#define _3DOP_3DSTATE_PIPELINED 0x0 280428d7b3dSmrg#define _3DOP_3DSTATE_NONPIPELINED 0x1 281428d7b3dSmrg#define _3DOP_3DCONTROL 0x2 282428d7b3dSmrg#define _3DOP_3DPRIMITIVE 0x3 283428d7b3dSmrg 284428d7b3dSmrg#define _3DSTATE_PIPELINED_POINTERS 0x00 285428d7b3dSmrg#define _3DSTATE_BINDING_TABLE_POINTERS 0x01 286428d7b3dSmrg#define _3DSTATE_VERTEX_BUFFERS 0x08 287428d7b3dSmrg#define _3DSTATE_VERTEX_ELEMENTS 0x09 288428d7b3dSmrg#define _3DSTATE_INDEX_BUFFER 0x0A 289428d7b3dSmrg#define _3DSTATE_VF_STATISTICS 0x0B 290428d7b3dSmrg#define _3DSTATE_DRAWING_RECTANGLE 0x00 291428d7b3dSmrg#define _3DSTATE_CONSTANT_COLOR 0x01 292428d7b3dSmrg#define _3DSTATE_SAMPLER_PALETTE_LOAD 0x02 293428d7b3dSmrg#define _3DSTATE_CHROMA_KEY 0x04 294428d7b3dSmrg#define _3DSTATE_DEPTH_BUFFER 0x05 295428d7b3dSmrg#define _3DSTATE_POLY_STIPPLE_OFFSET 0x06 296428d7b3dSmrg#define _3DSTATE_POLY_STIPPLE_PATTERN 0x07 297428d7b3dSmrg#define _3DSTATE_LINE_STIPPLE 0x08 298428d7b3dSmrg#define _3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP 0x09 299428d7b3dSmrg#define _3DCONTROL 0x00 300428d7b3dSmrg#define _3DPRIMITIVE 0x00 301428d7b3dSmrg 302428d7b3dSmrg#define _3DPRIM_POINTLIST 0x01 303428d7b3dSmrg#define _3DPRIM_LINELIST 0x02 304428d7b3dSmrg#define _3DPRIM_LINESTRIP 0x03 305428d7b3dSmrg#define _3DPRIM_TRILIST 0x04 306428d7b3dSmrg#define _3DPRIM_TRISTRIP 0x05 307428d7b3dSmrg#define _3DPRIM_TRIFAN 0x06 308428d7b3dSmrg#define _3DPRIM_QUADLIST 0x07 309428d7b3dSmrg#define _3DPRIM_QUADSTRIP 0x08 310428d7b3dSmrg#define _3DPRIM_LINELIST_ADJ 0x09 311428d7b3dSmrg#define _3DPRIM_LINESTRIP_ADJ 0x0A 312428d7b3dSmrg#define _3DPRIM_TRILIST_ADJ 0x0B 313428d7b3dSmrg#define _3DPRIM_TRISTRIP_ADJ 0x0C 314428d7b3dSmrg#define _3DPRIM_TRISTRIP_REVERSE 0x0D 315428d7b3dSmrg#define _3DPRIM_POLYGON 0x0E 316428d7b3dSmrg#define _3DPRIM_RECTLIST 0x0F 317428d7b3dSmrg#define _3DPRIM_LINELOOP 0x10 318428d7b3dSmrg#define _3DPRIM_POINTLIST_BF 0x11 319428d7b3dSmrg#define _3DPRIM_LINESTRIP_CONT 0x12 320428d7b3dSmrg#define _3DPRIM_LINESTRIP_BF 0x13 321428d7b3dSmrg#define _3DPRIM_LINESTRIP_CONT_BF 0x14 322428d7b3dSmrg#define _3DPRIM_TRIFAN_NOSTIPPLE 0x15 323428d7b3dSmrg 324428d7b3dSmrg#define _3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL 0 325428d7b3dSmrg#define _3DPRIM_VERTEXBUFFER_ACCESS_RANDOM 1 326428d7b3dSmrg 327428d7b3dSmrg#define GEN4_ANISORATIO_2 0 328428d7b3dSmrg#define GEN4_ANISORATIO_4 1 329428d7b3dSmrg#define GEN4_ANISORATIO_6 2 330428d7b3dSmrg#define GEN4_ANISORATIO_8 3 331428d7b3dSmrg#define GEN4_ANISORATIO_10 4 332428d7b3dSmrg#define GEN4_ANISORATIO_12 5 333428d7b3dSmrg#define GEN4_ANISORATIO_14 6 334428d7b3dSmrg#define GEN4_ANISORATIO_16 7 335428d7b3dSmrg 336428d7b3dSmrg#define GEN4_BLENDFACTOR_ONE 0x1 337428d7b3dSmrg#define GEN4_BLENDFACTOR_SRC_COLOR 0x2 338428d7b3dSmrg#define GEN4_BLENDFACTOR_SRC_ALPHA 0x3 339428d7b3dSmrg#define GEN4_BLENDFACTOR_DST_ALPHA 0x4 340428d7b3dSmrg#define GEN4_BLENDFACTOR_DST_COLOR 0x5 341428d7b3dSmrg#define GEN4_BLENDFACTOR_SRC_ALPHA_SATURATE 0x6 342428d7b3dSmrg#define GEN4_BLENDFACTOR_CONST_COLOR 0x7 343428d7b3dSmrg#define GEN4_BLENDFACTOR_CONST_ALPHA 0x8 344428d7b3dSmrg#define GEN4_BLENDFACTOR_SRC1_COLOR 0x9 345428d7b3dSmrg#define GEN4_BLENDFACTOR_SRC1_ALPHA 0x0A 346428d7b3dSmrg#define GEN4_BLENDFACTOR_ZERO 0x11 347428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_SRC_COLOR 0x12 348428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_SRC_ALPHA 0x13 349428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_DST_ALPHA 0x14 350428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_DST_COLOR 0x15 351428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_CONST_COLOR 0x17 352428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_CONST_ALPHA 0x18 353428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_SRC1_COLOR 0x19 354428d7b3dSmrg#define GEN4_BLENDFACTOR_INV_SRC1_ALPHA 0x1A 355428d7b3dSmrg 356428d7b3dSmrg#define GEN4_BLENDFUNCTION_ADD 0 357428d7b3dSmrg#define GEN4_BLENDFUNCTION_SUBTRACT 1 358428d7b3dSmrg#define GEN4_BLENDFUNCTION_REVERSE_SUBTRACT 2 359428d7b3dSmrg#define GEN4_BLENDFUNCTION_MIN 3 360428d7b3dSmrg#define GEN4_BLENDFUNCTION_MAX 4 361428d7b3dSmrg 362428d7b3dSmrg#define GEN4_ALPHATEST_FORMAT_UNORM8 0 363428d7b3dSmrg#define GEN4_ALPHATEST_FORMAT_FLOAT32 1 364428d7b3dSmrg 365428d7b3dSmrg#define GEN4_CHROMAKEY_KILL_ON_ANY_MATCH 0 366428d7b3dSmrg#define GEN4_CHROMAKEY_REPLACE_BLACK 1 367428d7b3dSmrg 368428d7b3dSmrg#define GEN4_CLIP_API_OGL 0 369428d7b3dSmrg#define GEN4_CLIP_API_DX 1 370428d7b3dSmrg 371428d7b3dSmrg#define GEN4_CLIPMODE_NORMAL 0 372428d7b3dSmrg#define GEN4_CLIPMODE_CLIP_ALL 1 373428d7b3dSmrg#define GEN4_CLIPMODE_CLIP_NON_REJECTED 2 374428d7b3dSmrg#define GEN4_CLIPMODE_REJECT_ALL 3 375428d7b3dSmrg#define GEN4_CLIPMODE_ACCEPT_ALL 4 376428d7b3dSmrg 377428d7b3dSmrg#define GEN4_CLIP_NDCSPACE 0 378428d7b3dSmrg#define GEN4_CLIP_SCREENSPACE 1 379428d7b3dSmrg 380428d7b3dSmrg#define GEN4_COMPAREFUNCTION_ALWAYS 0 381428d7b3dSmrg#define GEN4_COMPAREFUNCTION_NEVER 1 382428d7b3dSmrg#define GEN4_COMPAREFUNCTION_LESS 2 383428d7b3dSmrg#define GEN4_COMPAREFUNCTION_EQUAL 3 384428d7b3dSmrg#define GEN4_COMPAREFUNCTION_LEQUAL 4 385428d7b3dSmrg#define GEN4_COMPAREFUNCTION_GREATER 5 386428d7b3dSmrg#define GEN4_COMPAREFUNCTION_NOTEQUAL 6 387428d7b3dSmrg#define GEN4_COMPAREFUNCTION_GEQUAL 7 388428d7b3dSmrg 389428d7b3dSmrg#define GEN4_COVERAGE_PIXELS_HALF 0 390428d7b3dSmrg#define GEN4_COVERAGE_PIXELS_1 1 391428d7b3dSmrg#define GEN4_COVERAGE_PIXELS_2 2 392428d7b3dSmrg#define GEN4_COVERAGE_PIXELS_4 3 393428d7b3dSmrg 394428d7b3dSmrg#define GEN4_CULLMODE_BOTH 0 395428d7b3dSmrg#define GEN4_CULLMODE_NONE 1 396428d7b3dSmrg#define GEN4_CULLMODE_FRONT 2 397428d7b3dSmrg#define GEN4_CULLMODE_BACK 3 398428d7b3dSmrg 399428d7b3dSmrg#define GEN4_DEFAULTCOLOR_R8G8B8A8_UNORM 0 400428d7b3dSmrg#define GEN4_DEFAULTCOLOR_R32G32B32A32_FLOAT 1 401428d7b3dSmrg 402428d7b3dSmrg#define GEN4_DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0 403428d7b3dSmrg#define GEN4_DEPTHFORMAT_D32_FLOAT 1 404428d7b3dSmrg#define GEN4_DEPTHFORMAT_D24_UNORM_S8_UINT 2 405428d7b3dSmrg#define GEN4_DEPTHFORMAT_D16_UNORM 5 406428d7b3dSmrg 407428d7b3dSmrg#define GEN4_FLOATING_POINT_IEEE_754 0 408428d7b3dSmrg#define GEN4_FLOATING_POINT_NON_IEEE_754 1 409428d7b3dSmrg 410428d7b3dSmrg#define GEN4_FRONTWINDING_CW 0 411428d7b3dSmrg#define GEN4_FRONTWINDING_CCW 1 412428d7b3dSmrg 413428d7b3dSmrg#define GEN4_INDEX_BYTE 0 414428d7b3dSmrg#define GEN4_INDEX_WORD 1 415428d7b3dSmrg#define GEN4_INDEX_DWORD 2 416428d7b3dSmrg 417428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_CLEAR 0 418428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_NOR 1 419428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_AND_INVERTED 2 420428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_COPY_INVERTED 3 421428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_AND_REVERSE 4 422428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_INVERT 5 423428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_XOR 6 424428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_NAND 7 425428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_AND 8 426428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_EQUIV 9 427428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_NOOP 10 428428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_OR_INVERTED 11 429428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_COPY 12 430428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_OR_REVERSE 13 431428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_OR 14 432428d7b3dSmrg#define GEN4_LOGICOPFUNCTION_SET 15 433428d7b3dSmrg 434428d7b3dSmrg#define GEN4_MAPFILTER_NEAREST 0x0 435428d7b3dSmrg#define GEN4_MAPFILTER_LINEAR 0x1 436428d7b3dSmrg#define GEN4_MAPFILTER_ANISOTROPIC 0x2 437428d7b3dSmrg 438428d7b3dSmrg#define GEN4_MIPFILTER_NONE 0 439428d7b3dSmrg#define GEN4_MIPFILTER_NEAREST 1 440428d7b3dSmrg#define GEN4_MIPFILTER_LINEAR 3 441428d7b3dSmrg 442428d7b3dSmrg#define GEN4_POLYGON_FRONT_FACING 0 443428d7b3dSmrg#define GEN4_POLYGON_BACK_FACING 1 444428d7b3dSmrg 445428d7b3dSmrg#define GEN4_PREFILTER_ALWAYS 0x0 446428d7b3dSmrg#define GEN4_PREFILTER_NEVER 0x1 447428d7b3dSmrg#define GEN4_PREFILTER_LESS 0x2 448428d7b3dSmrg#define GEN4_PREFILTER_EQUAL 0x3 449428d7b3dSmrg#define GEN4_PREFILTER_LEQUAL 0x4 450428d7b3dSmrg#define GEN4_PREFILTER_GREATER 0x5 451428d7b3dSmrg#define GEN4_PREFILTER_NOTEQUAL 0x6 452428d7b3dSmrg#define GEN4_PREFILTER_GEQUAL 0x7 453428d7b3dSmrg 454428d7b3dSmrg#define GEN4_PROVOKING_VERTEX_0 0 455428d7b3dSmrg#define GEN4_PROVOKING_VERTEX_1 1 456428d7b3dSmrg#define GEN4_PROVOKING_VERTEX_2 2 457428d7b3dSmrg 458428d7b3dSmrg#define GEN4_RASTRULE_UPPER_LEFT 0 459428d7b3dSmrg#define GEN4_RASTRULE_UPPER_RIGHT 1 460428d7b3dSmrg 461428d7b3dSmrg#define GEN4_RENDERTARGET_CLAMPRANGE_UNORM 0 462428d7b3dSmrg#define GEN4_RENDERTARGET_CLAMPRANGE_SNORM 1 463428d7b3dSmrg#define GEN4_RENDERTARGET_CLAMPRANGE_FORMAT 2 464428d7b3dSmrg 465428d7b3dSmrg#define GEN4_STENCILOP_KEEP 0 466428d7b3dSmrg#define GEN4_STENCILOP_ZERO 1 467428d7b3dSmrg#define GEN4_STENCILOP_REPLACE 2 468428d7b3dSmrg#define GEN4_STENCILOP_INCRSAT 3 469428d7b3dSmrg#define GEN4_STENCILOP_DECRSAT 4 470428d7b3dSmrg#define GEN4_STENCILOP_INCR 5 471428d7b3dSmrg#define GEN4_STENCILOP_DECR 6 472428d7b3dSmrg#define GEN4_STENCILOP_INVERT 7 473428d7b3dSmrg 474428d7b3dSmrg#define GEN4_SURFACE_MIPMAPLAYOUT_BELOW 0 475428d7b3dSmrg#define GEN4_SURFACE_MIPMAPLAYOUT_RIGHT 1 476428d7b3dSmrg 477428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32A32_FLOAT 0x000 478428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32A32_SINT 0x001 479428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32A32_UINT 0x002 480428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32A32_UNORM 0x003 481428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32A32_SNORM 0x004 482428d7b3dSmrg#define GEN4_SURFACEFORMAT_R64G64_FLOAT 0x005 483428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32X32_FLOAT 0x006 484428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32A32_SSCALED 0x007 485428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32A32_USCALED 0x008 486428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32_FLOAT 0x040 487428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32_SINT 0x041 488428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32_UINT 0x042 489428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32_UNORM 0x043 490428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32_SNORM 0x044 491428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32_SSCALED 0x045 492428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32B32_USCALED 0x046 493428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16A16_UNORM 0x080 494428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16A16_SNORM 0x081 495428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16A16_SINT 0x082 496428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16A16_UINT 0x083 497428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16A16_FLOAT 0x084 498428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32_FLOAT 0x085 499428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32_SINT 0x086 500428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32_UINT 0x087 501428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS 0x088 502428d7b3dSmrg#define GEN4_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT 0x089 503428d7b3dSmrg#define GEN4_SURFACEFORMAT_L32A32_FLOAT 0x08A 504428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32_UNORM 0x08B 505428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32_SNORM 0x08C 506428d7b3dSmrg#define GEN4_SURFACEFORMAT_R64_FLOAT 0x08D 507428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16X16_UNORM 0x08E 508428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16X16_FLOAT 0x08F 509428d7b3dSmrg#define GEN4_SURFACEFORMAT_A32X32_FLOAT 0x090 510428d7b3dSmrg#define GEN4_SURFACEFORMAT_L32X32_FLOAT 0x091 511428d7b3dSmrg#define GEN4_SURFACEFORMAT_I32X32_FLOAT 0x092 512428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16A16_SSCALED 0x093 513428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16A16_USCALED 0x094 514428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32_SSCALED 0x095 515428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32G32_USCALED 0x096 516428d7b3dSmrg#define GEN4_SURFACEFORMAT_B8G8R8A8_UNORM 0x0C0 517428d7b3dSmrg#define GEN4_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB 0x0C1 518428d7b3dSmrg#define GEN4_SURFACEFORMAT_R10G10B10A2_UNORM 0x0C2 519428d7b3dSmrg#define GEN4_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB 0x0C3 520428d7b3dSmrg#define GEN4_SURFACEFORMAT_R10G10B10A2_UINT 0x0C4 521428d7b3dSmrg#define GEN4_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM 0x0C5 522428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8A8_UNORM 0x0C7 523428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB 0x0C8 524428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8A8_SNORM 0x0C9 525428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8A8_SINT 0x0CA 526428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8A8_UINT 0x0CB 527428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16_UNORM 0x0CC 528428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16_SNORM 0x0CD 529428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16_SINT 0x0CE 530428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16_UINT 0x0CF 531428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16_FLOAT 0x0D0 532428d7b3dSmrg#define GEN4_SURFACEFORMAT_B10G10R10A2_UNORM 0x0D1 533428d7b3dSmrg#define GEN4_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB 0x0D2 534428d7b3dSmrg#define GEN4_SURFACEFORMAT_R11G11B10_FLOAT 0x0D3 535428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_SINT 0x0D6 536428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_UINT 0x0D7 537428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_FLOAT 0x0D8 538428d7b3dSmrg#define GEN4_SURFACEFORMAT_R24_UNORM_X8_TYPELESS 0x0D9 539428d7b3dSmrg#define GEN4_SURFACEFORMAT_X24_TYPELESS_G8_UINT 0x0DA 540428d7b3dSmrg#define GEN4_SURFACEFORMAT_L16A16_UNORM 0x0DF 541428d7b3dSmrg#define GEN4_SURFACEFORMAT_I24X8_UNORM 0x0E0 542428d7b3dSmrg#define GEN4_SURFACEFORMAT_L24X8_UNORM 0x0E1 543428d7b3dSmrg#define GEN4_SURFACEFORMAT_A24X8_UNORM 0x0E2 544428d7b3dSmrg#define GEN4_SURFACEFORMAT_I32_FLOAT 0x0E3 545428d7b3dSmrg#define GEN4_SURFACEFORMAT_L32_FLOAT 0x0E4 546428d7b3dSmrg#define GEN4_SURFACEFORMAT_A32_FLOAT 0x0E5 547428d7b3dSmrg#define GEN4_SURFACEFORMAT_B8G8R8X8_UNORM 0x0E9 548428d7b3dSmrg#define GEN4_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB 0x0EA 549428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8X8_UNORM 0x0EB 550428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB 0x0EC 551428d7b3dSmrg#define GEN4_SURFACEFORMAT_R9G9B9E5_SHAREDEXP 0x0ED 552428d7b3dSmrg#define GEN4_SURFACEFORMAT_B10G10R10X2_UNORM 0x0EE 553428d7b3dSmrg#define GEN4_SURFACEFORMAT_L16A16_FLOAT 0x0F0 554428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_UNORM 0x0F1 555428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_SNORM 0x0F2 556428d7b3dSmrg#define GEN4_SURFACEFORMAT_R10G10B10X2_USCALED 0x0F3 557428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8A8_SSCALED 0x0F4 558428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8A8_USCALED 0x0F5 559428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16_SSCALED 0x0F6 560428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16_USCALED 0x0F7 561428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_SSCALED 0x0F8 562428d7b3dSmrg#define GEN4_SURFACEFORMAT_R32_USCALED 0x0F9 563428d7b3dSmrg#define GEN4_SURFACEFORMAT_B5G6R5_UNORM 0x100 564428d7b3dSmrg#define GEN4_SURFACEFORMAT_B5G6R5_UNORM_SRGB 0x101 565428d7b3dSmrg#define GEN4_SURFACEFORMAT_B5G5R5A1_UNORM 0x102 566428d7b3dSmrg#define GEN4_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB 0x103 567428d7b3dSmrg#define GEN4_SURFACEFORMAT_B4G4R4A4_UNORM 0x104 568428d7b3dSmrg#define GEN4_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB 0x105 569428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8_UNORM 0x106 570428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8_SNORM 0x107 571428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8_SINT 0x108 572428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8_UINT 0x109 573428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16_UNORM 0x10A 574428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16_SNORM 0x10B 575428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16_SINT 0x10C 576428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16_UINT 0x10D 577428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16_FLOAT 0x10E 578428d7b3dSmrg#define GEN4_SURFACEFORMAT_I16_UNORM 0x111 579428d7b3dSmrg#define GEN4_SURFACEFORMAT_L16_UNORM 0x112 580428d7b3dSmrg#define GEN4_SURFACEFORMAT_A16_UNORM 0x113 581428d7b3dSmrg#define GEN4_SURFACEFORMAT_L8A8_UNORM 0x114 582428d7b3dSmrg#define GEN4_SURFACEFORMAT_I16_FLOAT 0x115 583428d7b3dSmrg#define GEN4_SURFACEFORMAT_L16_FLOAT 0x116 584428d7b3dSmrg#define GEN4_SURFACEFORMAT_A16_FLOAT 0x117 585428d7b3dSmrg#define GEN4_SURFACEFORMAT_R5G5_SNORM_B6_UNORM 0x119 586428d7b3dSmrg#define GEN4_SURFACEFORMAT_B5G5R5X1_UNORM 0x11A 587428d7b3dSmrg#define GEN4_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB 0x11B 588428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8_SSCALED 0x11C 589428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8_USCALED 0x11D 590428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16_SSCALED 0x11E 591428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16_USCALED 0x11F 592428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8_UNORM 0x140 593428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8_SNORM 0x141 594428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8_SINT 0x142 595428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8_UINT 0x143 596428d7b3dSmrg#define GEN4_SURFACEFORMAT_A8_UNORM 0x144 597428d7b3dSmrg#define GEN4_SURFACEFORMAT_I8_UNORM 0x145 598428d7b3dSmrg#define GEN4_SURFACEFORMAT_L8_UNORM 0x146 599428d7b3dSmrg#define GEN4_SURFACEFORMAT_P4A4_UNORM 0x147 600428d7b3dSmrg#define GEN4_SURFACEFORMAT_A4P4_UNORM 0x148 601428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8_SSCALED 0x149 602428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8_USCALED 0x14A 603428d7b3dSmrg#define GEN4_SURFACEFORMAT_R1_UINT 0x181 604428d7b3dSmrg#define GEN4_SURFACEFORMAT_YCRCB_NORMAL 0x182 605428d7b3dSmrg#define GEN4_SURFACEFORMAT_YCRCB_SWAPUVY 0x183 606428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC1_UNORM 0x186 607428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC2_UNORM 0x187 608428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC3_UNORM 0x188 609428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC4_UNORM 0x189 610428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC5_UNORM 0x18A 611428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC1_UNORM_SRGB 0x18B 612428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC2_UNORM_SRGB 0x18C 613428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC3_UNORM_SRGB 0x18D 614428d7b3dSmrg#define GEN4_SURFACEFORMAT_MONO8 0x18E 615428d7b3dSmrg#define GEN4_SURFACEFORMAT_YCRCB_SWAPUV 0x18F 616428d7b3dSmrg#define GEN4_SURFACEFORMAT_YCRCB_SWAPY 0x190 617428d7b3dSmrg#define GEN4_SURFACEFORMAT_DXT1_RGB 0x191 618428d7b3dSmrg#define GEN4_SURFACEFORMAT_FXT1 0x192 619428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8_UNORM 0x193 620428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8_SNORM 0x194 621428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8_SSCALED 0x195 622428d7b3dSmrg#define GEN4_SURFACEFORMAT_R8G8B8_USCALED 0x196 623428d7b3dSmrg#define GEN4_SURFACEFORMAT_R64G64B64A64_FLOAT 0x197 624428d7b3dSmrg#define GEN4_SURFACEFORMAT_R64G64B64_FLOAT 0x198 625428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC4_SNORM 0x199 626428d7b3dSmrg#define GEN4_SURFACEFORMAT_BC5_SNORM 0x19A 627428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16_UNORM 0x19C 628428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16_SNORM 0x19D 629428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16_SSCALED 0x19E 630428d7b3dSmrg#define GEN4_SURFACEFORMAT_R16G16B16_USCALED 0x19F 631428d7b3dSmrg 632428d7b3dSmrg#define GEN4_SURFACERETURNFORMAT_FLOAT32 0 633428d7b3dSmrg#define GEN4_SURFACERETURNFORMAT_S1 1 634428d7b3dSmrg 635428d7b3dSmrg#define GEN4_SURFACE_1D 0 636428d7b3dSmrg#define GEN4_SURFACE_2D 1 637428d7b3dSmrg#define GEN4_SURFACE_3D 2 638428d7b3dSmrg#define GEN4_SURFACE_CUBE 3 639428d7b3dSmrg#define GEN4_SURFACE_BUFFER 4 640428d7b3dSmrg#define GEN4_SURFACE_NULL 7 641428d7b3dSmrg 642428d7b3dSmrg#define GEN4_BORDER_COLOR_MODE_DEFAULT 0 643428d7b3dSmrg#define GEN4_BORDER_COLOR_MODE_LEGACY 1 644428d7b3dSmrg 645428d7b3dSmrg#define GEN4_TEXCOORDMODE_WRAP 0 646428d7b3dSmrg#define GEN4_TEXCOORDMODE_MIRROR 1 647428d7b3dSmrg#define GEN4_TEXCOORDMODE_CLAMP 2 648428d7b3dSmrg#define GEN4_TEXCOORDMODE_CUBE 3 649428d7b3dSmrg#define GEN4_TEXCOORDMODE_CLAMP_BORDER 4 650428d7b3dSmrg#define GEN4_TEXCOORDMODE_MIRROR_ONCE 5 651428d7b3dSmrg 652428d7b3dSmrg#define GEN4_THREAD_PRIORITY_NORMAL 0 653428d7b3dSmrg#define GEN4_THREAD_PRIORITY_HIGH 1 654428d7b3dSmrg 655428d7b3dSmrg#define GEN4_TILEWALK_XMAJOR 0 656428d7b3dSmrg#define GEN4_TILEWALK_YMAJOR 1 657428d7b3dSmrg 658428d7b3dSmrg#define GEN4_VERTEX_SUBPIXEL_PRECISION_8BITS 0 659428d7b3dSmrg#define GEN4_VERTEX_SUBPIXEL_PRECISION_4BITS 1 660428d7b3dSmrg 661428d7b3dSmrg#define GEN4_VERTEXBUFFER_ACCESS_VERTEXDATA 0 662428d7b3dSmrg#define GEN4_VERTEXBUFFER_ACCESS_INSTANCEDATA 1 663428d7b3dSmrg 664428d7b3dSmrg#define VFCOMPONENT_NOSTORE 0 665428d7b3dSmrg#define VFCOMPONENT_STORE_SRC 1 666428d7b3dSmrg#define VFCOMPONENT_STORE_0 2 667428d7b3dSmrg#define VFCOMPONENT_STORE_1_FLT 3 668428d7b3dSmrg#define VFCOMPONENT_STORE_1_INT 4 669428d7b3dSmrg#define VFCOMPONENT_STORE_VID 5 670428d7b3dSmrg#define VFCOMPONENT_STORE_IID 6 671428d7b3dSmrg#define VFCOMPONENT_STORE_PID 7 672428d7b3dSmrg 673428d7b3dSmrg 674428d7b3dSmrg/* Execution Unit (EU) defines 675428d7b3dSmrg */ 676428d7b3dSmrg 677428d7b3dSmrg#define GEN4_ALIGN_1 0 678428d7b3dSmrg#define GEN4_ALIGN_16 1 679428d7b3dSmrg 680428d7b3dSmrg#define GEN4_ADDRESS_DIRECT 0 681428d7b3dSmrg#define GEN4_ADDRESS_REGISTER_INDIRECT_REGISTER 1 682428d7b3dSmrg 683428d7b3dSmrg#define GEN4_CHANNEL_X 0 684428d7b3dSmrg#define GEN4_CHANNEL_Y 1 685428d7b3dSmrg#define GEN4_CHANNEL_Z 2 686428d7b3dSmrg#define GEN4_CHANNEL_W 3 687428d7b3dSmrg 688428d7b3dSmrg#define GEN4_COMPRESSION_NONE 0 689428d7b3dSmrg#define GEN4_COMPRESSION_2NDHALF 1 690428d7b3dSmrg#define GEN4_COMPRESSION_COMPRESSED 2 691428d7b3dSmrg 692428d7b3dSmrg#define GEN4_CONDITIONAL_NONE 0 693428d7b3dSmrg#define GEN4_CONDITIONAL_Z 1 694428d7b3dSmrg#define GEN4_CONDITIONAL_NZ 2 695428d7b3dSmrg#define GEN4_CONDITIONAL_EQ 1 /* Z */ 696428d7b3dSmrg#define GEN4_CONDITIONAL_NEQ 2 /* NZ */ 697428d7b3dSmrg#define GEN4_CONDITIONAL_G 3 698428d7b3dSmrg#define GEN4_CONDITIONAL_GE 4 699428d7b3dSmrg#define GEN4_CONDITIONAL_L 5 700428d7b3dSmrg#define GEN4_CONDITIONAL_LE 6 701428d7b3dSmrg#define GEN4_CONDITIONAL_C 7 702428d7b3dSmrg#define GEN4_CONDITIONAL_O 8 703428d7b3dSmrg 704428d7b3dSmrg#define GEN4_DEBUG_NONE 0 705428d7b3dSmrg#define GEN4_DEBUG_BREAKPOINT 1 706428d7b3dSmrg 707428d7b3dSmrg#define GEN4_DEPENDENCY_NORMAL 0 708428d7b3dSmrg#define GEN4_DEPENDENCY_NOTCLEARED 1 709428d7b3dSmrg#define GEN4_DEPENDENCY_NOTCHECKED 2 710428d7b3dSmrg#define GEN4_DEPENDENCY_DISABLE 3 711428d7b3dSmrg 712428d7b3dSmrg#define GEN4_EXECUTE_1 0 713428d7b3dSmrg#define GEN4_EXECUTE_2 1 714428d7b3dSmrg#define GEN4_EXECUTE_4 2 715428d7b3dSmrg#define GEN4_EXECUTE_8 3 716428d7b3dSmrg#define GEN4_EXECUTE_16 4 717428d7b3dSmrg#define GEN4_EXECUTE_32 5 718428d7b3dSmrg 719428d7b3dSmrg#define GEN4_HORIZONTAL_STRIDE_0 0 720428d7b3dSmrg#define GEN4_HORIZONTAL_STRIDE_1 1 721428d7b3dSmrg#define GEN4_HORIZONTAL_STRIDE_2 2 722428d7b3dSmrg#define GEN4_HORIZONTAL_STRIDE_4 3 723428d7b3dSmrg 724428d7b3dSmrg#define GEN4_INSTRUCTION_NORMAL 0 725428d7b3dSmrg#define GEN4_INSTRUCTION_SATURATE 1 726428d7b3dSmrg 727428d7b3dSmrg#define _MASK_ENABLE 0 728428d7b3dSmrg#define _MASK_DISABLE 1 729428d7b3dSmrg 730428d7b3dSmrg#define GEN4_OPCODE_MOV 1 731428d7b3dSmrg#define GEN4_OPCODE_SEL 2 732428d7b3dSmrg#define GEN4_OPCODE_NOT 4 733428d7b3dSmrg#define GEN4_OPCODE_AND 5 734428d7b3dSmrg#define GEN4_OPCODE_OR 6 735428d7b3dSmrg#define GEN4_OPCODE_XOR 7 736428d7b3dSmrg#define GEN4_OPCODE_SHR 8 737428d7b3dSmrg#define GEN4_OPCODE_SHL 9 738428d7b3dSmrg#define GEN4_OPCODE_RSR 10 739428d7b3dSmrg#define GEN4_OPCODE_RSL 11 740428d7b3dSmrg#define GEN4_OPCODE_ASR 12 741428d7b3dSmrg#define GEN4_OPCODE_CMP 16 742428d7b3dSmrg#define GEN4_OPCODE_JMPI 32 743428d7b3dSmrg#define GEN4_OPCODE_IF 34 744428d7b3dSmrg#define GEN4_OPCODE_IFF 35 745428d7b3dSmrg#define GEN4_OPCODE_ELSE 36 746428d7b3dSmrg#define GEN4_OPCODE_ENDIF 37 747428d7b3dSmrg#define GEN4_OPCODE_DO 38 748428d7b3dSmrg#define GEN4_OPCODE_WHILE 39 749428d7b3dSmrg#define GEN4_OPCODE_BREAK 40 750428d7b3dSmrg#define GEN4_OPCODE_CONTINUE 41 751428d7b3dSmrg#define GEN4_OPCODE_HALT 42 752428d7b3dSmrg#define GEN4_OPCODE_MSAVE 44 753428d7b3dSmrg#define GEN4_OPCODE_MRESTORE 45 754428d7b3dSmrg#define GEN4_OPCODE_PUSH 46 755428d7b3dSmrg#define GEN4_OPCODE_POP 47 756428d7b3dSmrg#define GEN4_OPCODE_WAIT 48 757428d7b3dSmrg#define GEN4_OPCODE_SEND 49 758428d7b3dSmrg#define GEN4_OPCODE_ADD 64 759428d7b3dSmrg#define GEN4_OPCODE_MUL 65 760428d7b3dSmrg#define GEN4_OPCODE_AVG 66 761428d7b3dSmrg#define GEN4_OPCODE_FRC 67 762428d7b3dSmrg#define GEN4_OPCODE_RNDU 68 763428d7b3dSmrg#define GEN4_OPCODE_RNDD 69 764428d7b3dSmrg#define GEN4_OPCODE_RNDE 70 765428d7b3dSmrg#define GEN4_OPCODE_RNDZ 71 766428d7b3dSmrg#define GEN4_OPCODE_MAC 72 767428d7b3dSmrg#define GEN4_OPCODE_MACH 73 768428d7b3dSmrg#define GEN4_OPCODE_LZD 74 769428d7b3dSmrg#define GEN4_OPCODE_SAD2 80 770428d7b3dSmrg#define GEN4_OPCODE_SADA2 81 771428d7b3dSmrg#define GEN4_OPCODE_DP4 84 772428d7b3dSmrg#define GEN4_OPCODE_DPH 85 773428d7b3dSmrg#define GEN4_OPCODE_DP3 86 774428d7b3dSmrg#define GEN4_OPCODE_DP2 87 775428d7b3dSmrg#define GEN4_OPCODE_DPA2 88 776428d7b3dSmrg#define GEN4_OPCODE_LINE 89 777428d7b3dSmrg#define GEN4_OPCODE_NOP 126 778428d7b3dSmrg 779428d7b3dSmrg#define GEN4_PREDICATE_NONE 0 780428d7b3dSmrg#define GEN4_PREDICATE_NORMAL 1 781428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ANYV 2 782428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ALLV 3 783428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ANY2H 4 784428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ALL2H 5 785428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ANY4H 6 786428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ALL4H 7 787428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ANY8H 8 788428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ALL8H 9 789428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ANY16H 10 790428d7b3dSmrg#define GEN4_PREDICATE_ALIGN1_ALL16H 11 791428d7b3dSmrg#define GEN4_PREDICATE_ALIGN16_REPLICATE_X 2 792428d7b3dSmrg#define GEN4_PREDICATE_ALIGN16_REPLICATE_Y 3 793428d7b3dSmrg#define GEN4_PREDICATE_ALIGN16_REPLICATE_Z 4 794428d7b3dSmrg#define GEN4_PREDICATE_ALIGN16_REPLICATE_W 5 795428d7b3dSmrg#define GEN4_PREDICATE_ALIGN16_ANY4H 6 796428d7b3dSmrg#define GEN4_PREDICATE_ALIGN16_ALL4H 7 797428d7b3dSmrg 798428d7b3dSmrg#define GEN4_ARCHITECTURE_REGISTER_FILE 0 799428d7b3dSmrg#define GEN4_GENERAL_REGISTER_FILE 1 800428d7b3dSmrg#define GEN4_MESSAGE_REGISTER_FILE 2 801428d7b3dSmrg#define GEN4_IMMEDIATE_VALUE 3 802428d7b3dSmrg 803428d7b3dSmrg#define GEN4_REGISTER_TYPE_UD 0 804428d7b3dSmrg#define GEN4_REGISTER_TYPE_D 1 805428d7b3dSmrg#define GEN4_REGISTER_TYPE_UW 2 806428d7b3dSmrg#define GEN4_REGISTER_TYPE_W 3 807428d7b3dSmrg#define GEN4_REGISTER_TYPE_UB 4 808428d7b3dSmrg#define GEN4_REGISTER_TYPE_B 5 809428d7b3dSmrg#define GEN4_REGISTER_TYPE_VF 5 /* packed float vector, immediates only? */ 810428d7b3dSmrg#define GEN4_REGISTER_TYPE_HF 6 811428d7b3dSmrg#define GEN4_REGISTER_TYPE_V 6 /* packed int vector, immediates only, uword dest only */ 812428d7b3dSmrg#define GEN4_REGISTER_TYPE_F 7 813428d7b3dSmrg 814428d7b3dSmrg#define GEN4_ARF_NULL 0x00 815428d7b3dSmrg#define GEN4_ARF_ADDRESS 0x10 816428d7b3dSmrg#define GEN4_ARF_ACCUMULATOR 0x20 817428d7b3dSmrg#define GEN4_ARF_FLAG 0x30 818428d7b3dSmrg#define GEN4_ARF_MASK 0x40 819428d7b3dSmrg#define GEN4_ARF_MASK_STACK 0x50 820428d7b3dSmrg#define GEN4_ARF_MASK_STACK_DEPTH 0x60 821428d7b3dSmrg#define GEN4_ARF_STATE 0x70 822428d7b3dSmrg#define GEN4_ARF_CONTROL 0x80 823428d7b3dSmrg#define GEN4_ARF_NOTIFICATION_COUNT 0x90 824428d7b3dSmrg#define GEN4_ARF_IP 0xA0 825428d7b3dSmrg 826428d7b3dSmrg#define GEN4_AMASK 0 827428d7b3dSmrg#define GEN4_IMASK 1 828428d7b3dSmrg#define GEN4_LMASK 2 829428d7b3dSmrg#define GEN4_CMASK 3 830428d7b3dSmrg 831428d7b3dSmrg 832428d7b3dSmrg 833428d7b3dSmrg#define GEN4_THREAD_NORMAL 0 834428d7b3dSmrg#define GEN4_THREAD_ATOMIC 1 835428d7b3dSmrg#define GEN4_THREAD_SWITCH 2 836428d7b3dSmrg 837428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_0 0 838428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_1 1 839428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_2 2 840428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_4 3 841428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_8 4 842428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_16 5 843428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_32 6 844428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_64 7 845428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_128 8 846428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_256 9 847428d7b3dSmrg#define GEN4_VERTICAL_STRIDE_ONE_DIMENSIONAL 0xF 848428d7b3dSmrg 849428d7b3dSmrg#define GEN4_WIDTH_1 0 850428d7b3dSmrg#define GEN4_WIDTH_2 1 851428d7b3dSmrg#define GEN4_WIDTH_4 2 852428d7b3dSmrg#define GEN4_WIDTH_8 3 853428d7b3dSmrg#define GEN4_WIDTH_16 4 854428d7b3dSmrg 855428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_1K 0 856428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_2K 1 857428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_4K 2 858428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_8K 3 859428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_16K 4 860428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_32K 5 861428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_64K 6 862428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_128K 7 863428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_256K 8 864428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_512K 9 865428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_1M 10 866428d7b3dSmrg#define GEN4_STATELESS_BUFFER_BOUNDARY_2M 11 867428d7b3dSmrg 868428d7b3dSmrg#define GEN4_POLYGON_FACING_FRONT 0 869428d7b3dSmrg#define GEN4_POLYGON_FACING_BACK 1 870428d7b3dSmrg 871428d7b3dSmrg#define GEN4_MESSAGE_TARGET_NULL 0 872428d7b3dSmrg#define GEN4_MESSAGE_TARGET_MATH 1 873428d7b3dSmrg#define GEN4_MESSAGE_TARGET_SAMPLER 2 874428d7b3dSmrg#define GEN4_MESSAGE_TARGET_GATEWAY 3 875428d7b3dSmrg#define GEN4_MESSAGE_TARGET_DATAPORT_READ 4 876428d7b3dSmrg#define GEN4_MESSAGE_TARGET_DATAPORT_WRITE 5 877428d7b3dSmrg#define GEN4_MESSAGE_TARGET_URB 6 878428d7b3dSmrg#define GEN4_MESSAGE_TARGET_THREAD_SPAWNER 7 879428d7b3dSmrg 880428d7b3dSmrg#define GEN4_SAMPLER_RETURN_FORMAT_FLOAT32 0 881428d7b3dSmrg#define GEN4_SAMPLER_RETURN_FORMAT_UINT32 2 882428d7b3dSmrg#define GEN4_SAMPLER_RETURN_FORMAT_SINT32 3 883428d7b3dSmrg 884428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD8_SAMPLE 0 885428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD16_SAMPLE 0 886428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS 0 887428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD8_KILLPIX 1 888428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD 1 889428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD 1 890428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_GRADIENTS 2 891428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD8_SAMPLE_GRADIENTS 2 892428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE 0 893428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE 2 894428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD4X2_RESINFO 2 895428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD8_RESINFO 2 896428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD16_RESINFO 2 897428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD4X2_LD 3 898428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD8_LD 3 899428d7b3dSmrg#define GEN4_SAMPLER_MESSAGE_SIMD16_LD 3 900428d7b3dSmrg 901428d7b3dSmrg#define GEN4_DATAPORT_OWORD_BLOCK_1_OWORDLOW 0 902428d7b3dSmrg#define GEN4_DATAPORT_OWORD_BLOCK_1_OWORDHIGH 1 903428d7b3dSmrg#define GEN4_DATAPORT_OWORD_BLOCK_2_OWORDS 2 904428d7b3dSmrg#define GEN4_DATAPORT_OWORD_BLOCK_4_OWORDS 3 905428d7b3dSmrg#define GEN4_DATAPORT_OWORD_BLOCK_8_OWORDS 4 906428d7b3dSmrg 907428d7b3dSmrg#define GEN4_DATAPORT_OWORD_DUAL_BLOCK_1OWORD 0 908428d7b3dSmrg#define GEN4_DATAPORT_OWORD_DUAL_BLOCK_4OWORDS 2 909428d7b3dSmrg 910428d7b3dSmrg#define GEN4_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS 2 911428d7b3dSmrg#define GEN4_DATAPORT_DWORD_SCATTERED_BLOCK_16DWORDS 3 912428d7b3dSmrg 913428d7b3dSmrg#define GEN4_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ 0 914428d7b3dSmrg#define GEN4_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ 1 915428d7b3dSmrg#define GEN4_DATAPORT_READ_MESSAGE_DWORD_BLOCK_READ 2 916428d7b3dSmrg#define GEN4_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ 3 917428d7b3dSmrg 918428d7b3dSmrg#define GEN4_DATAPORT_READ_TARGET_DATA_CACHE 0 919428d7b3dSmrg#define GEN4_DATAPORT_READ_TARGET_RENDER_CACHE 1 920428d7b3dSmrg#define GEN4_DATAPORT_READ_TARGET_SAMPLER_CACHE 2 921428d7b3dSmrg 922428d7b3dSmrg#define GEN4_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE 0 923428d7b3dSmrg#define GEN4_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE_REPLICATED 1 924428d7b3dSmrg#define GEN4_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN01 2 925428d7b3dSmrg#define GEN4_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN23 3 926428d7b3dSmrg#define GEN4_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01 4 927428d7b3dSmrg 928428d7b3dSmrg#define GEN4_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE 0 929428d7b3dSmrg#define GEN4_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE 1 930428d7b3dSmrg#define GEN4_DATAPORT_WRITE_MESSAGE_DWORD_BLOCK_WRITE 2 931428d7b3dSmrg#define GEN4_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE 3 932428d7b3dSmrg#define GEN4_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE 4 933428d7b3dSmrg#define GEN4_DATAPORT_WRITE_MESSAGE_STREAMED_VERTEX_BUFFER_WRITE 5 934428d7b3dSmrg#define GEN4_DATAPORT_WRITE_MESSAGE_FLUSH_RENDER_CACHE 7 935428d7b3dSmrg 936428d7b3dSmrg#define GEN4_MATH_FUNCTION_INV 1 937428d7b3dSmrg#define GEN4_MATH_FUNCTION_LOG 2 938428d7b3dSmrg#define GEN4_MATH_FUNCTION_EXP 3 939428d7b3dSmrg#define GEN4_MATH_FUNCTION_SQRT 4 940428d7b3dSmrg#define GEN4_MATH_FUNCTION_RSQ 5 941428d7b3dSmrg#define GEN4_MATH_FUNCTION_SIN 6 /* was 7 */ 942428d7b3dSmrg#define GEN4_MATH_FUNCTION_COS 7 /* was 8 */ 943428d7b3dSmrg#define GEN4_MATH_FUNCTION_SINCOS 8 /* was 6 */ 944428d7b3dSmrg#define GEN4_MATH_FUNCTION_TAN 9 945428d7b3dSmrg#define GEN4_MATH_FUNCTION_POW 10 946428d7b3dSmrg#define GEN4_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER 11 947428d7b3dSmrg#define GEN4_MATH_FUNCTION_INT_DIV_QUOTIENT 12 948428d7b3dSmrg#define GEN4_MATH_FUNCTION_INT_DIV_REMAINDER 13 949428d7b3dSmrg 950428d7b3dSmrg#define GEN4_MATH_INTEGER_UNSIGNED 0 951428d7b3dSmrg#define GEN4_MATH_INTEGER_SIGNED 1 952428d7b3dSmrg 953428d7b3dSmrg#define GEN4_MATH_PRECISION_FULL 0 954428d7b3dSmrg#define GEN4_MATH_PRECISION_PARTIAL 1 955428d7b3dSmrg 956428d7b3dSmrg#define GEN4_MATH_SATURATE_NONE 0 957428d7b3dSmrg#define GEN4_MATH_SATURATE_SATURATE 1 958428d7b3dSmrg 959428d7b3dSmrg#define GEN4_MATH_DATA_VECTOR 0 960428d7b3dSmrg#define GEN4_MATH_DATA_SCALAR 1 961428d7b3dSmrg 962428d7b3dSmrg#define GEN4_URB_OPCODE_WRITE 0 963428d7b3dSmrg 964428d7b3dSmrg#define GEN4_URB_SWIZZLE_NONE 0 965428d7b3dSmrg#define GEN4_URB_SWIZZLE_INTERLEAVE 1 966428d7b3dSmrg#define GEN4_URB_SWIZZLE_TRANSPOSE 2 967428d7b3dSmrg 968428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_1K 0 969428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_2K 1 970428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_4K 2 971428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_8K 3 972428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_16K 4 973428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_32K 5 974428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_64K 6 975428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_128K 7 976428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_256K 8 977428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_512K 9 978428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_1M 10 979428d7b3dSmrg#define GEN4_SCRATCH_SPACE_SIZE_2M 11 980428d7b3dSmrg 981428d7b3dSmrg 982428d7b3dSmrg 983428d7b3dSmrg 984428d7b3dSmrg#define CMD_URB_FENCE 0x6000 985428d7b3dSmrg#define CMD_CONST_BUFFER_STATE 0x6001 986428d7b3dSmrg#define CMD_CONST_BUFFER 0x6002 987428d7b3dSmrg 988428d7b3dSmrg#define CMD_STATE_BASE_ADDRESS 0x6101 989428d7b3dSmrg#define CMD_STATE_INSN_POINTER 0x6102 990428d7b3dSmrg#define CMD_PIPELINE_SELECT 0x6104 991428d7b3dSmrg 992428d7b3dSmrg#define CMD_PIPELINED_STATE_POINTERS 0x7800 993428d7b3dSmrg#define CMD_BINDING_TABLE_PTRS 0x7801 994428d7b3dSmrg#define CMD_VERTEX_BUFFER 0x7808 995428d7b3dSmrg#define CMD_VERTEX_ELEMENT 0x7809 996428d7b3dSmrg#define CMD_INDEX_BUFFER 0x780a 997428d7b3dSmrg#define CMD_VF_STATISTICS 0x780b 998428d7b3dSmrg 999428d7b3dSmrg#define CMD_DRAW_RECT 0x7900 1000428d7b3dSmrg#define CMD_BLEND_CONSTANT_COLOR 0x7901 1001428d7b3dSmrg#define CMD_CHROMA_KEY 0x7904 1002428d7b3dSmrg#define CMD_DEPTH_BUFFER 0x7905 1003428d7b3dSmrg#define CMD_POLY_STIPPLE_OFFSET 0x7906 1004428d7b3dSmrg#define CMD_POLY_STIPPLE_PATTERN 0x7907 1005428d7b3dSmrg#define CMD_LINE_STIPPLE_PATTERN 0x7908 1006428d7b3dSmrg#define CMD_GLOBAL_DEPTH_OFFSET_CLAMP 0x7908 1007428d7b3dSmrg 1008428d7b3dSmrg#define CMD_PIPE_CONTROL 0x7a00 1009428d7b3dSmrg 1010428d7b3dSmrg#define CMD_3D_PRIM 0x7b00 1011428d7b3dSmrg 1012428d7b3dSmrg#define CMD_MI_FLUSH 0x0200 1013428d7b3dSmrg 1014428d7b3dSmrg 1015428d7b3dSmrg/* Various values from the R0 vertex header: 1016428d7b3dSmrg */ 1017428d7b3dSmrg#define R02_PRIM_END 0x1 1018428d7b3dSmrg#define R02_PRIM_START 0x2 1019428d7b3dSmrg 1020428d7b3dSmrg/* media pipeline */ 1021428d7b3dSmrg 1022428d7b3dSmrg#define GEN4_VFE_MODE_GENERIC 0x0 1023428d7b3dSmrg#define GEN4_VFE_MODE_VLD_MPEG2 0x1 1024428d7b3dSmrg#define GEN4_VFE_MODE_IS 0x2 1025428d7b3dSmrg#define GEN4_VFE_MODE_AVC_MC 0x4 1026428d7b3dSmrg#define GEN4_VFE_MODE_AVC_IT 0x7 1027428d7b3dSmrg#define GEN4_VFE_MODE_VC1_IT 0xB 1028428d7b3dSmrg 1029428d7b3dSmrg#define GEN4_VFE_DEBUG_COUNTER_FREE 0 1030428d7b3dSmrg#define GEN4_VFE_DEBUG_COUNTER_FROZEN 1 1031428d7b3dSmrg#define GEN4_VFE_DEBUG_COUNTER_ONCE 2 1032428d7b3dSmrg#define GEN4_VFE_DEBUG_COUNTER_ALWAYS 3 1033428d7b3dSmrg 1034428d7b3dSmrg/* VLD_STATE */ 1035428d7b3dSmrg#define GEN4_MPEG_TOP_FIELD 1 1036428d7b3dSmrg#define GEN4_MPEG_BOTTOM_FIELD 2 1037428d7b3dSmrg#define GEN4_MPEG_FRAME 3 1038428d7b3dSmrg#define GEN4_MPEG_QSCALE_LINEAR 0 1039428d7b3dSmrg#define GEN4_MPEG_QSCALE_NONLINEAR 1 1040428d7b3dSmrg#define GEN4_MPEG_ZIGZAG_SCAN 0 1041428d7b3dSmrg#define GEN4_MPEG_ALTER_VERTICAL_SCAN 1 1042428d7b3dSmrg#define GEN4_MPEG_I_PICTURE 1 1043428d7b3dSmrg#define GEN4_MPEG_P_PICTURE 2 1044428d7b3dSmrg#define GEN4_MPEG_B_PICTURE 3 1045428d7b3dSmrg 1046428d7b3dSmrg/* Command packets: 1047428d7b3dSmrg */ 1048428d7b3dSmrgstruct header 1049428d7b3dSmrg{ 1050428d7b3dSmrg unsigned int length:16; 1051428d7b3dSmrg unsigned int opcode:16; 1052428d7b3dSmrg}; 1053428d7b3dSmrg 1054428d7b3dSmrg 1055428d7b3dSmrgunion header_union 1056428d7b3dSmrg{ 1057428d7b3dSmrg struct header bits; 1058428d7b3dSmrg unsigned int dword; 1059428d7b3dSmrg}; 1060428d7b3dSmrg 1061428d7b3dSmrgstruct gen4_3d_control 1062428d7b3dSmrg{ 1063428d7b3dSmrg struct 1064428d7b3dSmrg { 1065428d7b3dSmrg unsigned int length:8; 1066428d7b3dSmrg unsigned int notify_enable:1; 1067428d7b3dSmrg unsigned int pad:3; 1068428d7b3dSmrg unsigned int wc_flush_enable:1; 1069428d7b3dSmrg unsigned int depth_stall_enable:1; 1070428d7b3dSmrg unsigned int operation:2; 1071428d7b3dSmrg unsigned int opcode:16; 1072428d7b3dSmrg } header; 1073428d7b3dSmrg 1074428d7b3dSmrg struct 1075428d7b3dSmrg { 1076428d7b3dSmrg unsigned int pad:2; 1077428d7b3dSmrg unsigned int dest_addr_type:1; 1078428d7b3dSmrg unsigned int dest_addr:29; 1079428d7b3dSmrg } dest; 1080428d7b3dSmrg 1081428d7b3dSmrg unsigned int dword2; 1082428d7b3dSmrg unsigned int dword3; 1083428d7b3dSmrg}; 1084428d7b3dSmrg 1085428d7b3dSmrg 1086428d7b3dSmrgstruct gen4_3d_primitive 1087428d7b3dSmrg{ 1088428d7b3dSmrg struct 1089428d7b3dSmrg { 1090428d7b3dSmrg unsigned int length:8; 1091428d7b3dSmrg unsigned int pad:2; 1092428d7b3dSmrg unsigned int topology:5; 1093428d7b3dSmrg unsigned int indexed:1; 1094428d7b3dSmrg unsigned int opcode:16; 1095428d7b3dSmrg } header; 1096428d7b3dSmrg 1097428d7b3dSmrg unsigned int verts_per_instance; 1098428d7b3dSmrg unsigned int start_vert_location; 1099428d7b3dSmrg unsigned int instance_count; 1100428d7b3dSmrg unsigned int start_instance_location; 1101428d7b3dSmrg unsigned int base_vert_location; 1102428d7b3dSmrg}; 1103428d7b3dSmrg 1104428d7b3dSmrg/* These seem to be passed around as function args, so it works out 1105428d7b3dSmrg * better to keep them as #defines: 1106428d7b3dSmrg */ 1107428d7b3dSmrg#define GEN4_FLUSH_READ_CACHE 0x1 1108428d7b3dSmrg#define GEN4_FLUSH_STATE_CACHE 0x2 1109428d7b3dSmrg#define GEN4_INHIBIT_FLUSH_RENDER_CACHE 0x4 1110428d7b3dSmrg#define GEN4_FLUSH_SNAPSHOT_COUNTERS 0x8 1111428d7b3dSmrg 1112428d7b3dSmrgstruct gen4_mi_flush 1113428d7b3dSmrg{ 1114428d7b3dSmrg unsigned int flags:4; 1115428d7b3dSmrg unsigned int pad:12; 1116428d7b3dSmrg unsigned int opcode:16; 1117428d7b3dSmrg}; 1118428d7b3dSmrg 1119428d7b3dSmrgstruct gen4_vf_statistics 1120428d7b3dSmrg{ 1121428d7b3dSmrg unsigned int statistics_enable:1; 1122428d7b3dSmrg unsigned int pad:15; 1123428d7b3dSmrg unsigned int opcode:16; 1124428d7b3dSmrg}; 1125428d7b3dSmrg 1126428d7b3dSmrg 1127428d7b3dSmrg 1128428d7b3dSmrgstruct gen4_binding_table_pointers 1129428d7b3dSmrg{ 1130428d7b3dSmrg struct header header; 1131428d7b3dSmrg unsigned int vs; 1132428d7b3dSmrg unsigned int gs; 1133428d7b3dSmrg unsigned int clp; 1134428d7b3dSmrg unsigned int sf; 1135428d7b3dSmrg unsigned int wm; 1136428d7b3dSmrg}; 1137428d7b3dSmrg 1138428d7b3dSmrg 1139428d7b3dSmrgstruct gen4_blend_constant_color 1140428d7b3dSmrg{ 1141428d7b3dSmrg struct header header; 1142428d7b3dSmrg float blend_constant_color[4]; 1143428d7b3dSmrg}; 1144428d7b3dSmrg 1145428d7b3dSmrg 1146428d7b3dSmrgstruct gen4_depthbuffer 1147428d7b3dSmrg{ 1148428d7b3dSmrg union header_union header; 1149428d7b3dSmrg 1150428d7b3dSmrg union { 1151428d7b3dSmrg struct { 1152428d7b3dSmrg unsigned int pitch:18; 1153428d7b3dSmrg unsigned int format:3; 1154428d7b3dSmrg unsigned int pad:4; 1155428d7b3dSmrg unsigned int depth_offset_disable:1; 1156428d7b3dSmrg unsigned int tile_walk:1; 1157428d7b3dSmrg unsigned int tiled_surface:1; 1158428d7b3dSmrg unsigned int pad2:1; 1159428d7b3dSmrg unsigned int surface_type:3; 1160428d7b3dSmrg } bits; 1161428d7b3dSmrg unsigned int dword; 1162428d7b3dSmrg } dword1; 1163428d7b3dSmrg 1164428d7b3dSmrg unsigned int dword2_base_addr; 1165428d7b3dSmrg 1166428d7b3dSmrg union { 1167428d7b3dSmrg struct { 1168428d7b3dSmrg unsigned int pad:1; 1169428d7b3dSmrg unsigned int mipmap_layout:1; 1170428d7b3dSmrg unsigned int lod:4; 1171428d7b3dSmrg unsigned int width:13; 1172428d7b3dSmrg unsigned int height:13; 1173428d7b3dSmrg } bits; 1174428d7b3dSmrg unsigned int dword; 1175428d7b3dSmrg } dword3; 1176428d7b3dSmrg 1177428d7b3dSmrg union { 1178428d7b3dSmrg struct { 1179428d7b3dSmrg unsigned int pad:12; 1180428d7b3dSmrg unsigned int min_array_element:9; 1181428d7b3dSmrg unsigned int depth:11; 1182428d7b3dSmrg } bits; 1183428d7b3dSmrg unsigned int dword; 1184428d7b3dSmrg } dword4; 1185428d7b3dSmrg}; 1186428d7b3dSmrg 1187428d7b3dSmrgstruct gen4_drawrect 1188428d7b3dSmrg{ 1189428d7b3dSmrg struct header header; 1190428d7b3dSmrg unsigned int xmin:16; 1191428d7b3dSmrg unsigned int ymin:16; 1192428d7b3dSmrg unsigned int xmax:16; 1193428d7b3dSmrg unsigned int ymax:16; 1194428d7b3dSmrg unsigned int xorg:16; 1195428d7b3dSmrg unsigned int yorg:16; 1196428d7b3dSmrg}; 1197428d7b3dSmrg 1198428d7b3dSmrg 1199428d7b3dSmrg 1200428d7b3dSmrg 1201428d7b3dSmrgstruct gen4_global_depth_offset_clamp 1202428d7b3dSmrg{ 1203428d7b3dSmrg struct header header; 1204428d7b3dSmrg float depth_offset_clamp; 1205428d7b3dSmrg}; 1206428d7b3dSmrg 1207428d7b3dSmrgstruct gen4_indexbuffer 1208428d7b3dSmrg{ 1209428d7b3dSmrg union { 1210428d7b3dSmrg struct 1211428d7b3dSmrg { 1212428d7b3dSmrg unsigned int length:8; 1213428d7b3dSmrg unsigned int index_format:2; 1214428d7b3dSmrg unsigned int cut_index_enable:1; 1215428d7b3dSmrg unsigned int pad:5; 1216428d7b3dSmrg unsigned int opcode:16; 1217428d7b3dSmrg } bits; 1218428d7b3dSmrg unsigned int dword; 1219428d7b3dSmrg 1220428d7b3dSmrg } header; 1221428d7b3dSmrg 1222428d7b3dSmrg unsigned int buffer_start; 1223428d7b3dSmrg unsigned int buffer_end; 1224428d7b3dSmrg}; 1225428d7b3dSmrg 1226428d7b3dSmrg 1227428d7b3dSmrgstruct gen4_line_stipple 1228428d7b3dSmrg{ 1229428d7b3dSmrg struct header header; 1230428d7b3dSmrg 1231428d7b3dSmrg struct 1232428d7b3dSmrg { 1233428d7b3dSmrg unsigned int pattern:16; 1234428d7b3dSmrg unsigned int pad:16; 1235428d7b3dSmrg } bits0; 1236428d7b3dSmrg 1237428d7b3dSmrg struct 1238428d7b3dSmrg { 1239428d7b3dSmrg unsigned int repeat_count:9; 1240428d7b3dSmrg unsigned int pad:7; 1241428d7b3dSmrg unsigned int inverse_repeat_count:16; 1242428d7b3dSmrg } bits1; 1243428d7b3dSmrg}; 1244428d7b3dSmrg 1245428d7b3dSmrg 1246428d7b3dSmrgstruct gen4_pipelined_state_pointers 1247428d7b3dSmrg{ 1248428d7b3dSmrg struct header header; 1249428d7b3dSmrg 1250428d7b3dSmrg struct { 1251428d7b3dSmrg unsigned int pad:5; 1252428d7b3dSmrg unsigned int offset:27; 1253428d7b3dSmrg } vs; 1254428d7b3dSmrg 1255428d7b3dSmrg struct 1256428d7b3dSmrg { 1257428d7b3dSmrg unsigned int enable:1; 1258428d7b3dSmrg unsigned int pad:4; 1259428d7b3dSmrg unsigned int offset:27; 1260428d7b3dSmrg } gs; 1261428d7b3dSmrg 1262428d7b3dSmrg struct 1263428d7b3dSmrg { 1264428d7b3dSmrg unsigned int enable:1; 1265428d7b3dSmrg unsigned int pad:4; 1266428d7b3dSmrg unsigned int offset:27; 1267428d7b3dSmrg } clp; 1268428d7b3dSmrg 1269428d7b3dSmrg struct 1270428d7b3dSmrg { 1271428d7b3dSmrg unsigned int pad:5; 1272428d7b3dSmrg unsigned int offset:27; 1273428d7b3dSmrg } sf; 1274428d7b3dSmrg 1275428d7b3dSmrg struct 1276428d7b3dSmrg { 1277428d7b3dSmrg unsigned int pad:5; 1278428d7b3dSmrg unsigned int offset:27; 1279428d7b3dSmrg } wm; 1280428d7b3dSmrg 1281428d7b3dSmrg struct 1282428d7b3dSmrg { 1283428d7b3dSmrg unsigned int pad:5; 1284428d7b3dSmrg unsigned int offset:27; /* KW: check me! */ 1285428d7b3dSmrg } cc; 1286428d7b3dSmrg}; 1287428d7b3dSmrg 1288428d7b3dSmrg 1289428d7b3dSmrgstruct gen4_polygon_stipple_offset 1290428d7b3dSmrg{ 1291428d7b3dSmrg struct header header; 1292428d7b3dSmrg 1293428d7b3dSmrg struct { 1294428d7b3dSmrg unsigned int y_offset:5; 1295428d7b3dSmrg unsigned int pad:3; 1296428d7b3dSmrg unsigned int x_offset:5; 1297428d7b3dSmrg unsigned int pad0:19; 1298428d7b3dSmrg } bits0; 1299428d7b3dSmrg}; 1300428d7b3dSmrg 1301428d7b3dSmrg 1302428d7b3dSmrg 1303428d7b3dSmrgstruct gen4_polygon_stipple 1304428d7b3dSmrg{ 1305428d7b3dSmrg struct header header; 1306428d7b3dSmrg unsigned int stipple[32]; 1307428d7b3dSmrg}; 1308428d7b3dSmrg 1309428d7b3dSmrg 1310428d7b3dSmrg 1311428d7b3dSmrgstruct gen4_pipeline_select 1312428d7b3dSmrg{ 1313428d7b3dSmrg struct 1314428d7b3dSmrg { 1315428d7b3dSmrg unsigned int pipeline_select:1; 1316428d7b3dSmrg unsigned int pad:15; 1317428d7b3dSmrg unsigned int opcode:16; 1318428d7b3dSmrg } header; 1319428d7b3dSmrg}; 1320428d7b3dSmrg 1321428d7b3dSmrg 1322428d7b3dSmrgstruct gen4_pipe_control 1323428d7b3dSmrg{ 1324428d7b3dSmrg struct 1325428d7b3dSmrg { 1326428d7b3dSmrg unsigned int length:8; 1327428d7b3dSmrg unsigned int notify_enable:1; 1328428d7b3dSmrg unsigned int pad:2; 1329428d7b3dSmrg unsigned int instruction_state_cache_flush_enable:1; 1330428d7b3dSmrg unsigned int write_cache_flush_enable:1; 1331428d7b3dSmrg unsigned int depth_stall_enable:1; 1332428d7b3dSmrg unsigned int post_sync_operation:2; 1333428d7b3dSmrg 1334428d7b3dSmrg unsigned int opcode:16; 1335428d7b3dSmrg } header; 1336428d7b3dSmrg 1337428d7b3dSmrg struct 1338428d7b3dSmrg { 1339428d7b3dSmrg unsigned int pad:2; 1340428d7b3dSmrg unsigned int dest_addr_type:1; 1341428d7b3dSmrg unsigned int dest_addr:29; 1342428d7b3dSmrg } bits1; 1343428d7b3dSmrg 1344428d7b3dSmrg unsigned int data0; 1345428d7b3dSmrg unsigned int data1; 1346428d7b3dSmrg}; 1347428d7b3dSmrg 1348428d7b3dSmrg 1349428d7b3dSmrgstruct gen4_urb_fence 1350428d7b3dSmrg{ 1351428d7b3dSmrg struct 1352428d7b3dSmrg { 1353428d7b3dSmrg unsigned int length:8; 1354428d7b3dSmrg unsigned int vs_realloc:1; 1355428d7b3dSmrg unsigned int gs_realloc:1; 1356428d7b3dSmrg unsigned int clp_realloc:1; 1357428d7b3dSmrg unsigned int sf_realloc:1; 1358428d7b3dSmrg unsigned int vfe_realloc:1; 1359428d7b3dSmrg unsigned int cs_realloc:1; 1360428d7b3dSmrg unsigned int pad:2; 1361428d7b3dSmrg unsigned int opcode:16; 1362428d7b3dSmrg } header; 1363428d7b3dSmrg 1364428d7b3dSmrg struct 1365428d7b3dSmrg { 1366428d7b3dSmrg unsigned int vs_fence:10; 1367428d7b3dSmrg unsigned int gs_fence:10; 1368428d7b3dSmrg unsigned int clp_fence:10; 1369428d7b3dSmrg unsigned int pad:2; 1370428d7b3dSmrg } bits0; 1371428d7b3dSmrg 1372428d7b3dSmrg struct 1373428d7b3dSmrg { 1374428d7b3dSmrg unsigned int sf_fence:10; 1375428d7b3dSmrg unsigned int vf_fence:10; 1376428d7b3dSmrg unsigned int cs_fence:10; 1377428d7b3dSmrg unsigned int pad:2; 1378428d7b3dSmrg } bits1; 1379428d7b3dSmrg}; 1380428d7b3dSmrg 1381428d7b3dSmrgstruct gen4_constant_buffer_state /* previously gen4_command_streamer */ 1382428d7b3dSmrg{ 1383428d7b3dSmrg struct header header; 1384428d7b3dSmrg 1385428d7b3dSmrg struct 1386428d7b3dSmrg { 1387428d7b3dSmrg unsigned int nr_urb_entries:3; 1388428d7b3dSmrg unsigned int pad:1; 1389428d7b3dSmrg unsigned int urb_entry_size:5; 1390428d7b3dSmrg unsigned int pad0:23; 1391428d7b3dSmrg } bits0; 1392428d7b3dSmrg}; 1393428d7b3dSmrg 1394428d7b3dSmrgstruct gen4_constant_buffer 1395428d7b3dSmrg{ 1396428d7b3dSmrg struct 1397428d7b3dSmrg { 1398428d7b3dSmrg unsigned int length:8; 1399428d7b3dSmrg unsigned int valid:1; 1400428d7b3dSmrg unsigned int pad:7; 1401428d7b3dSmrg unsigned int opcode:16; 1402428d7b3dSmrg } header; 1403428d7b3dSmrg 1404428d7b3dSmrg struct 1405428d7b3dSmrg { 1406428d7b3dSmrg unsigned int buffer_length:6; 1407428d7b3dSmrg unsigned int buffer_address:26; 1408428d7b3dSmrg } bits0; 1409428d7b3dSmrg}; 1410428d7b3dSmrg 1411428d7b3dSmrgstruct gen4_state_base_address 1412428d7b3dSmrg{ 1413428d7b3dSmrg struct header header; 1414428d7b3dSmrg 1415428d7b3dSmrg struct 1416428d7b3dSmrg { 1417428d7b3dSmrg unsigned int modify_enable:1; 1418428d7b3dSmrg unsigned int pad:4; 1419428d7b3dSmrg unsigned int general_state_address:27; 1420428d7b3dSmrg } bits0; 1421428d7b3dSmrg 1422428d7b3dSmrg struct 1423428d7b3dSmrg { 1424428d7b3dSmrg unsigned int modify_enable:1; 1425428d7b3dSmrg unsigned int pad:4; 1426428d7b3dSmrg unsigned int surface_state_address:27; 1427428d7b3dSmrg } bits1; 1428428d7b3dSmrg 1429428d7b3dSmrg struct 1430428d7b3dSmrg { 1431428d7b3dSmrg unsigned int modify_enable:1; 1432428d7b3dSmrg unsigned int pad:4; 1433428d7b3dSmrg unsigned int indirect_object_state_address:27; 1434428d7b3dSmrg } bits2; 1435428d7b3dSmrg 1436428d7b3dSmrg struct 1437428d7b3dSmrg { 1438428d7b3dSmrg unsigned int modify_enable:1; 1439428d7b3dSmrg unsigned int pad:11; 1440428d7b3dSmrg unsigned int general_state_upper_bound:20; 1441428d7b3dSmrg } bits3; 1442428d7b3dSmrg 1443428d7b3dSmrg struct 1444428d7b3dSmrg { 1445428d7b3dSmrg unsigned int modify_enable:1; 1446428d7b3dSmrg unsigned int pad:11; 1447428d7b3dSmrg unsigned int indirect_object_state_upper_bound:20; 1448428d7b3dSmrg } bits4; 1449428d7b3dSmrg}; 1450428d7b3dSmrg 1451428d7b3dSmrgstruct gen4_state_prefetch 1452428d7b3dSmrg{ 1453428d7b3dSmrg struct header header; 1454428d7b3dSmrg 1455428d7b3dSmrg struct 1456428d7b3dSmrg { 1457428d7b3dSmrg unsigned int prefetch_count:3; 1458428d7b3dSmrg unsigned int pad:3; 1459428d7b3dSmrg unsigned int prefetch_pointer:26; 1460428d7b3dSmrg } bits0; 1461428d7b3dSmrg}; 1462428d7b3dSmrg 1463428d7b3dSmrgstruct gen4_system_instruction_pointer 1464428d7b3dSmrg{ 1465428d7b3dSmrg struct header header; 1466428d7b3dSmrg 1467428d7b3dSmrg struct 1468428d7b3dSmrg { 1469428d7b3dSmrg unsigned int pad:4; 1470428d7b3dSmrg unsigned int system_instruction_pointer:28; 1471428d7b3dSmrg } bits0; 1472428d7b3dSmrg}; 1473428d7b3dSmrg 1474428d7b3dSmrg 1475428d7b3dSmrg 1476428d7b3dSmrg 1477428d7b3dSmrg/* State structs for the various fixed function units: 1478428d7b3dSmrg */ 1479428d7b3dSmrg 1480428d7b3dSmrg 1481428d7b3dSmrgstruct thread0 1482428d7b3dSmrg{ 1483428d7b3dSmrg unsigned int pad0:1; 1484428d7b3dSmrg unsigned int grf_reg_count:3; 1485428d7b3dSmrg unsigned int pad1:2; 1486428d7b3dSmrg unsigned int kernel_start_pointer:26; 1487428d7b3dSmrg}; 1488428d7b3dSmrg 1489428d7b3dSmrgstruct thread1 1490428d7b3dSmrg{ 1491428d7b3dSmrg unsigned int ext_halt_exception_enable:1; 1492428d7b3dSmrg unsigned int sw_exception_enable:1; 1493428d7b3dSmrg unsigned int mask_stack_exception_enable:1; 1494428d7b3dSmrg unsigned int timeout_exception_enable:1; 1495428d7b3dSmrg unsigned int illegal_op_exception_enable:1; 1496428d7b3dSmrg unsigned int pad0:3; 1497428d7b3dSmrg unsigned int depth_coef_urb_read_offset:6; /* WM only */ 1498428d7b3dSmrg unsigned int pad1:2; 1499428d7b3dSmrg unsigned int floating_point_mode:1; 1500428d7b3dSmrg unsigned int thread_priority:1; 1501428d7b3dSmrg unsigned int binding_table_entry_count:8; 1502428d7b3dSmrg unsigned int pad3:5; 1503428d7b3dSmrg unsigned int single_program_flow:1; 1504428d7b3dSmrg}; 1505428d7b3dSmrg 1506428d7b3dSmrgstruct thread2 1507428d7b3dSmrg{ 1508428d7b3dSmrg unsigned int per_thread_scratch_space:4; 1509428d7b3dSmrg unsigned int pad0:6; 1510428d7b3dSmrg unsigned int scratch_space_base_pointer:22; 1511428d7b3dSmrg}; 1512428d7b3dSmrg 1513428d7b3dSmrg 1514428d7b3dSmrgstruct thread3 1515428d7b3dSmrg{ 1516428d7b3dSmrg unsigned int dispatch_grf_start_reg:4; 1517428d7b3dSmrg unsigned int urb_entry_read_offset:6; 1518428d7b3dSmrg unsigned int pad0:1; 1519428d7b3dSmrg unsigned int urb_entry_read_length:6; 1520428d7b3dSmrg unsigned int pad1:1; 1521428d7b3dSmrg unsigned int const_urb_entry_read_offset:6; 1522428d7b3dSmrg unsigned int pad2:1; 1523428d7b3dSmrg unsigned int const_urb_entry_read_length:6; 1524428d7b3dSmrg unsigned int pad3:1; 1525428d7b3dSmrg}; 1526428d7b3dSmrg 1527428d7b3dSmrg 1528428d7b3dSmrg 1529428d7b3dSmrgstruct gen4_clip_unit_state 1530428d7b3dSmrg{ 1531428d7b3dSmrg struct thread0 thread0; 1532428d7b3dSmrg struct thread1 thread1; 1533428d7b3dSmrg struct thread2 thread2; 1534428d7b3dSmrg struct thread3 thread3; 1535428d7b3dSmrg 1536428d7b3dSmrg struct 1537428d7b3dSmrg { 1538428d7b3dSmrg unsigned int pad0:9; 1539428d7b3dSmrg unsigned int gs_output_stats:1; /* not always */ 1540428d7b3dSmrg unsigned int stats_enable:1; 1541428d7b3dSmrg unsigned int nr_urb_entries:7; 1542428d7b3dSmrg unsigned int pad1:1; 1543428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1544428d7b3dSmrg unsigned int pad2:1; 1545428d7b3dSmrg unsigned int max_threads:6; /* may be less */ 1546428d7b3dSmrg unsigned int pad3:1; 1547428d7b3dSmrg } thread4; 1548428d7b3dSmrg 1549428d7b3dSmrg struct 1550428d7b3dSmrg { 1551428d7b3dSmrg unsigned int pad0:13; 1552428d7b3dSmrg unsigned int clip_mode:3; 1553428d7b3dSmrg unsigned int userclip_enable_flags:8; 1554428d7b3dSmrg unsigned int userclip_must_clip:1; 1555428d7b3dSmrg unsigned int pad1:1; 1556428d7b3dSmrg unsigned int guard_band_enable:1; 1557428d7b3dSmrg unsigned int viewport_z_clip_enable:1; 1558428d7b3dSmrg unsigned int viewport_xy_clip_enable:1; 1559428d7b3dSmrg unsigned int vertex_position_space:1; 1560428d7b3dSmrg unsigned int api_mode:1; 1561428d7b3dSmrg unsigned int pad2:1; 1562428d7b3dSmrg } clip5; 1563428d7b3dSmrg 1564428d7b3dSmrg struct 1565428d7b3dSmrg { 1566428d7b3dSmrg unsigned int pad0:5; 1567428d7b3dSmrg unsigned int clipper_viewport_state_ptr:27; 1568428d7b3dSmrg } clip6; 1569428d7b3dSmrg 1570428d7b3dSmrg 1571428d7b3dSmrg float viewport_xmin; 1572428d7b3dSmrg float viewport_xmax; 1573428d7b3dSmrg float viewport_ymin; 1574428d7b3dSmrg float viewport_ymax; 1575428d7b3dSmrg}; 1576428d7b3dSmrg 1577428d7b3dSmrg 1578428d7b3dSmrg 1579428d7b3dSmrgstruct gen4_cc_unit_state 1580428d7b3dSmrg{ 1581428d7b3dSmrg struct 1582428d7b3dSmrg { 1583428d7b3dSmrg unsigned int pad0:3; 1584428d7b3dSmrg unsigned int bf_stencil_pass_depth_pass_op:3; 1585428d7b3dSmrg unsigned int bf_stencil_pass_depth_fail_op:3; 1586428d7b3dSmrg unsigned int bf_stencil_fail_op:3; 1587428d7b3dSmrg unsigned int bf_stencil_func:3; 1588428d7b3dSmrg unsigned int bf_stencil_enable:1; 1589428d7b3dSmrg unsigned int pad1:2; 1590428d7b3dSmrg unsigned int stencil_write_enable:1; 1591428d7b3dSmrg unsigned int stencil_pass_depth_pass_op:3; 1592428d7b3dSmrg unsigned int stencil_pass_depth_fail_op:3; 1593428d7b3dSmrg unsigned int stencil_fail_op:3; 1594428d7b3dSmrg unsigned int stencil_func:3; 1595428d7b3dSmrg unsigned int stencil_enable:1; 1596428d7b3dSmrg } cc0; 1597428d7b3dSmrg 1598428d7b3dSmrg 1599428d7b3dSmrg struct 1600428d7b3dSmrg { 1601428d7b3dSmrg unsigned int bf_stencil_ref:8; 1602428d7b3dSmrg unsigned int stencil_write_mask:8; 1603428d7b3dSmrg unsigned int stencil_test_mask:8; 1604428d7b3dSmrg unsigned int stencil_ref:8; 1605428d7b3dSmrg } cc1; 1606428d7b3dSmrg 1607428d7b3dSmrg 1608428d7b3dSmrg struct 1609428d7b3dSmrg { 1610428d7b3dSmrg unsigned int logicop_enable:1; 1611428d7b3dSmrg unsigned int pad0:10; 1612428d7b3dSmrg unsigned int depth_write_enable:1; 1613428d7b3dSmrg unsigned int depth_test_function:3; 1614428d7b3dSmrg unsigned int depth_test:1; 1615428d7b3dSmrg unsigned int bf_stencil_write_mask:8; 1616428d7b3dSmrg unsigned int bf_stencil_test_mask:8; 1617428d7b3dSmrg } cc2; 1618428d7b3dSmrg 1619428d7b3dSmrg 1620428d7b3dSmrg struct 1621428d7b3dSmrg { 1622428d7b3dSmrg unsigned int pad0:8; 1623428d7b3dSmrg unsigned int alpha_test_func:3; 1624428d7b3dSmrg unsigned int alpha_test:1; 1625428d7b3dSmrg unsigned int blend_enable:1; 1626428d7b3dSmrg unsigned int ia_blend_enable:1; 1627428d7b3dSmrg unsigned int pad1:1; 1628428d7b3dSmrg unsigned int alpha_test_format:1; 1629428d7b3dSmrg unsigned int pad2:16; 1630428d7b3dSmrg } cc3; 1631428d7b3dSmrg 1632428d7b3dSmrg struct 1633428d7b3dSmrg { 1634428d7b3dSmrg unsigned int pad0:5; 1635428d7b3dSmrg unsigned int cc_viewport_state_offset:27; 1636428d7b3dSmrg } cc4; 1637428d7b3dSmrg 1638428d7b3dSmrg struct 1639428d7b3dSmrg { 1640428d7b3dSmrg unsigned int pad0:2; 1641428d7b3dSmrg unsigned int ia_dest_blend_factor:5; 1642428d7b3dSmrg unsigned int ia_src_blend_factor:5; 1643428d7b3dSmrg unsigned int ia_blend_function:3; 1644428d7b3dSmrg unsigned int statistics_enable:1; 1645428d7b3dSmrg unsigned int logicop_func:4; 1646428d7b3dSmrg unsigned int pad1:11; 1647428d7b3dSmrg unsigned int dither_enable:1; 1648428d7b3dSmrg } cc5; 1649428d7b3dSmrg 1650428d7b3dSmrg struct 1651428d7b3dSmrg { 1652428d7b3dSmrg unsigned int clamp_post_alpha_blend:1; 1653428d7b3dSmrg unsigned int clamp_pre_alpha_blend:1; 1654428d7b3dSmrg unsigned int clamp_range:2; 1655428d7b3dSmrg unsigned int pad0:11; 1656428d7b3dSmrg unsigned int y_dither_offset:2; 1657428d7b3dSmrg unsigned int x_dither_offset:2; 1658428d7b3dSmrg unsigned int dest_blend_factor:5; 1659428d7b3dSmrg unsigned int src_blend_factor:5; 1660428d7b3dSmrg unsigned int blend_function:3; 1661428d7b3dSmrg } cc6; 1662428d7b3dSmrg 1663428d7b3dSmrg struct { 1664428d7b3dSmrg union { 1665428d7b3dSmrg float f; 1666428d7b3dSmrg unsigned char ub[4]; 1667428d7b3dSmrg } alpha_ref; 1668428d7b3dSmrg } cc7; 1669428d7b3dSmrg}; 1670428d7b3dSmrg 1671428d7b3dSmrg 1672428d7b3dSmrg 1673428d7b3dSmrgstruct gen4_sf_unit_state 1674428d7b3dSmrg{ 1675428d7b3dSmrg struct thread0 thread0; 1676428d7b3dSmrg struct { 1677428d7b3dSmrg unsigned int pad0:7; 1678428d7b3dSmrg unsigned int sw_exception_enable:1; 1679428d7b3dSmrg unsigned int pad1:3; 1680428d7b3dSmrg unsigned int mask_stack_exception_enable:1; 1681428d7b3dSmrg unsigned int pad2:1; 1682428d7b3dSmrg unsigned int illegal_op_exception_enable:1; 1683428d7b3dSmrg unsigned int pad3:2; 1684428d7b3dSmrg unsigned int floating_point_mode:1; 1685428d7b3dSmrg unsigned int thread_priority:1; 1686428d7b3dSmrg unsigned int binding_table_entry_count:8; 1687428d7b3dSmrg unsigned int pad4:5; 1688428d7b3dSmrg unsigned int single_program_flow:1; 1689428d7b3dSmrg } sf1; 1690428d7b3dSmrg 1691428d7b3dSmrg struct thread2 thread2; 1692428d7b3dSmrg struct thread3 thread3; 1693428d7b3dSmrg 1694428d7b3dSmrg struct 1695428d7b3dSmrg { 1696428d7b3dSmrg unsigned int pad0:10; 1697428d7b3dSmrg unsigned int stats_enable:1; 1698428d7b3dSmrg unsigned int nr_urb_entries:7; 1699428d7b3dSmrg unsigned int pad1:1; 1700428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1701428d7b3dSmrg unsigned int pad2:1; 1702428d7b3dSmrg unsigned int max_threads:6; 1703428d7b3dSmrg unsigned int pad3:1; 1704428d7b3dSmrg } thread4; 1705428d7b3dSmrg 1706428d7b3dSmrg struct 1707428d7b3dSmrg { 1708428d7b3dSmrg unsigned int front_winding:1; 1709428d7b3dSmrg unsigned int viewport_transform:1; 1710428d7b3dSmrg unsigned int pad0:3; 1711428d7b3dSmrg unsigned int sf_viewport_state_offset:27; 1712428d7b3dSmrg } sf5; 1713428d7b3dSmrg 1714428d7b3dSmrg struct 1715428d7b3dSmrg { 1716428d7b3dSmrg unsigned int pad0:9; 1717428d7b3dSmrg unsigned int dest_org_vbias:4; 1718428d7b3dSmrg unsigned int dest_org_hbias:4; 1719428d7b3dSmrg unsigned int scissor:1; 1720428d7b3dSmrg unsigned int disable_2x2_trifilter:1; 1721428d7b3dSmrg unsigned int disable_zero_pix_trifilter:1; 1722428d7b3dSmrg unsigned int point_rast_rule:2; 1723428d7b3dSmrg unsigned int line_endcap_aa_region_width:2; 1724428d7b3dSmrg unsigned int line_width:4; 1725428d7b3dSmrg unsigned int fast_scissor_disable:1; 1726428d7b3dSmrg unsigned int cull_mode:2; 1727428d7b3dSmrg unsigned int aa_enable:1; 1728428d7b3dSmrg } sf6; 1729428d7b3dSmrg 1730428d7b3dSmrg struct 1731428d7b3dSmrg { 1732428d7b3dSmrg unsigned int point_size:11; 1733428d7b3dSmrg unsigned int use_point_size_state:1; 1734428d7b3dSmrg unsigned int subpixel_precision:1; 1735428d7b3dSmrg unsigned int sprite_point:1; 1736428d7b3dSmrg unsigned int pad0:11; 1737428d7b3dSmrg unsigned int trifan_pv:2; 1738428d7b3dSmrg unsigned int linestrip_pv:2; 1739428d7b3dSmrg unsigned int tristrip_pv:2; 1740428d7b3dSmrg unsigned int line_last_pixel_enable:1; 1741428d7b3dSmrg } sf7; 1742428d7b3dSmrg 1743428d7b3dSmrg}; 1744428d7b3dSmrg 1745428d7b3dSmrg 1746428d7b3dSmrgstruct gen4_gs_unit_state 1747428d7b3dSmrg{ 1748428d7b3dSmrg struct thread0 thread0; 1749428d7b3dSmrg struct thread1 thread1; 1750428d7b3dSmrg struct thread2 thread2; 1751428d7b3dSmrg struct thread3 thread3; 1752428d7b3dSmrg 1753428d7b3dSmrg struct 1754428d7b3dSmrg { 1755428d7b3dSmrg unsigned int pad0:10; 1756428d7b3dSmrg unsigned int stats_enable:1; 1757428d7b3dSmrg unsigned int nr_urb_entries:7; 1758428d7b3dSmrg unsigned int pad1:1; 1759428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1760428d7b3dSmrg unsigned int pad2:1; 1761428d7b3dSmrg unsigned int max_threads:1; 1762428d7b3dSmrg unsigned int pad3:6; 1763428d7b3dSmrg } thread4; 1764428d7b3dSmrg 1765428d7b3dSmrg struct 1766428d7b3dSmrg { 1767428d7b3dSmrg unsigned int sampler_count:3; 1768428d7b3dSmrg unsigned int pad0:2; 1769428d7b3dSmrg unsigned int sampler_state_pointer:27; 1770428d7b3dSmrg } gs5; 1771428d7b3dSmrg 1772428d7b3dSmrg 1773428d7b3dSmrg struct 1774428d7b3dSmrg { 1775428d7b3dSmrg unsigned int max_vp_index:4; 1776428d7b3dSmrg unsigned int pad0:26; 1777428d7b3dSmrg unsigned int reorder_enable:1; 1778428d7b3dSmrg unsigned int pad1:1; 1779428d7b3dSmrg } gs6; 1780428d7b3dSmrg}; 1781428d7b3dSmrg 1782428d7b3dSmrg 1783428d7b3dSmrgstruct gen4_vs_unit_state 1784428d7b3dSmrg{ 1785428d7b3dSmrg struct thread0 thread0; 1786428d7b3dSmrg struct thread1 thread1; 1787428d7b3dSmrg struct thread2 thread2; 1788428d7b3dSmrg struct thread3 thread3; 1789428d7b3dSmrg 1790428d7b3dSmrg struct 1791428d7b3dSmrg { 1792428d7b3dSmrg unsigned int pad0:10; 1793428d7b3dSmrg unsigned int stats_enable:1; 1794428d7b3dSmrg unsigned int nr_urb_entries:7; 1795428d7b3dSmrg unsigned int pad1:1; 1796428d7b3dSmrg unsigned int urb_entry_allocation_size:5; 1797428d7b3dSmrg unsigned int pad2:1; 1798428d7b3dSmrg unsigned int max_threads:4; 1799428d7b3dSmrg unsigned int pad3:3; 1800428d7b3dSmrg } thread4; 1801428d7b3dSmrg 1802428d7b3dSmrg struct 1803428d7b3dSmrg { 1804428d7b3dSmrg unsigned int sampler_count:3; 1805428d7b3dSmrg unsigned int pad0:2; 1806428d7b3dSmrg unsigned int sampler_state_pointer:27; 1807428d7b3dSmrg } vs5; 1808428d7b3dSmrg 1809428d7b3dSmrg struct 1810428d7b3dSmrg { 1811428d7b3dSmrg unsigned int vs_enable:1; 1812428d7b3dSmrg unsigned int vert_cache_disable:1; 1813428d7b3dSmrg unsigned int pad0:30; 1814428d7b3dSmrg } vs6; 1815428d7b3dSmrg}; 1816428d7b3dSmrg 1817428d7b3dSmrg 1818428d7b3dSmrgstruct gen4_wm_unit_state 1819428d7b3dSmrg{ 1820428d7b3dSmrg struct thread0 thread0; 1821428d7b3dSmrg struct thread1 thread1; 1822428d7b3dSmrg struct thread2 thread2; 1823428d7b3dSmrg struct thread3 thread3; 1824428d7b3dSmrg 1825428d7b3dSmrg struct { 1826428d7b3dSmrg unsigned int stats_enable:1; 1827428d7b3dSmrg unsigned int pad0:1; 1828428d7b3dSmrg unsigned int sampler_count:3; 1829428d7b3dSmrg unsigned int sampler_state_pointer:27; 1830428d7b3dSmrg } wm4; 1831428d7b3dSmrg 1832428d7b3dSmrg struct 1833428d7b3dSmrg { 1834428d7b3dSmrg unsigned int enable_8_pix:1; 1835428d7b3dSmrg unsigned int enable_16_pix:1; 1836428d7b3dSmrg unsigned int enable_32_pix:1; 1837428d7b3dSmrg unsigned int pad0:7; 1838428d7b3dSmrg unsigned int legacy_global_depth_bias:1; 1839428d7b3dSmrg unsigned int line_stipple:1; 1840428d7b3dSmrg unsigned int depth_offset:1; 1841428d7b3dSmrg unsigned int polygon_stipple:1; 1842428d7b3dSmrg unsigned int line_aa_region_width:2; 1843428d7b3dSmrg unsigned int line_endcap_aa_region_width:2; 1844428d7b3dSmrg unsigned int early_depth_test:1; 1845428d7b3dSmrg unsigned int thread_dispatch_enable:1; 1846428d7b3dSmrg unsigned int program_uses_depth:1; 1847428d7b3dSmrg unsigned int program_computes_depth:1; 1848428d7b3dSmrg unsigned int program_uses_killpixel:1; 1849428d7b3dSmrg unsigned int legacy_line_rast: 1; 1850428d7b3dSmrg unsigned int transposed_urb_read:1; 1851428d7b3dSmrg unsigned int max_threads:7; 1852428d7b3dSmrg } wm5; 1853428d7b3dSmrg 1854428d7b3dSmrg float global_depth_offset_constant; 1855428d7b3dSmrg float global_depth_offset_scale; 1856428d7b3dSmrg 1857428d7b3dSmrg struct { 1858428d7b3dSmrg unsigned int pad0:1; 1859428d7b3dSmrg unsigned int grf_reg_count_1:3; 1860428d7b3dSmrg unsigned int pad1:2; 1861428d7b3dSmrg unsigned int kernel_start_pointer_1:26; 1862428d7b3dSmrg } wm8; 1863428d7b3dSmrg 1864428d7b3dSmrg struct { 1865428d7b3dSmrg unsigned int pad0:1; 1866428d7b3dSmrg unsigned int grf_reg_count_2:3; 1867428d7b3dSmrg unsigned int pad1:2; 1868428d7b3dSmrg unsigned int kernel_start_pointer_2:26; 1869428d7b3dSmrg } wm9; 1870428d7b3dSmrg 1871428d7b3dSmrg struct { 1872428d7b3dSmrg unsigned int pad0:1; 1873428d7b3dSmrg unsigned int grf_reg_count_3:3; 1874428d7b3dSmrg unsigned int pad1:2; 1875428d7b3dSmrg unsigned int kernel_start_pointer_3:26; 1876428d7b3dSmrg } wm10; 1877428d7b3dSmrg}; 1878428d7b3dSmrg 1879428d7b3dSmrgstruct gen4_wm_unit_state_padded { 1880428d7b3dSmrg struct gen4_wm_unit_state state; 1881428d7b3dSmrg char pad[64 - sizeof(struct gen4_wm_unit_state)]; 1882428d7b3dSmrg}; 1883428d7b3dSmrg 1884428d7b3dSmrg/* The hardware supports two different modes for border color. The 1885428d7b3dSmrg * default (OpenGL) mode uses floating-point color channels, while the 1886428d7b3dSmrg * legacy mode uses 4 bytes. 1887428d7b3dSmrg * 1888428d7b3dSmrg * More significantly, the legacy mode respects the components of the 1889428d7b3dSmrg * border color for channels not present in the source, (whereas the 1890428d7b3dSmrg * default mode will ignore the border color's alpha channel and use 1891428d7b3dSmrg * alpha==1 for an RGB source, for example). 1892428d7b3dSmrg * 1893428d7b3dSmrg * The legacy mode matches the semantics specified by the Render 1894428d7b3dSmrg * extension. 1895428d7b3dSmrg */ 1896428d7b3dSmrgstruct gen4_sampler_default_border_color { 1897428d7b3dSmrg float color[4]; 1898428d7b3dSmrg}; 1899428d7b3dSmrg 1900428d7b3dSmrgstruct gen4_sampler_legacy_border_color { 1901428d7b3dSmrg uint8_t color[4]; 1902428d7b3dSmrg}; 1903428d7b3dSmrg 1904428d7b3dSmrgstruct gen4_sampler_state 1905428d7b3dSmrg{ 1906428d7b3dSmrg 1907428d7b3dSmrg struct 1908428d7b3dSmrg { 1909428d7b3dSmrg unsigned int shadow_function:3; 1910428d7b3dSmrg unsigned int lod_bias:11; 1911428d7b3dSmrg unsigned int min_filter:3; 1912428d7b3dSmrg unsigned int mag_filter:3; 1913428d7b3dSmrg unsigned int mip_filter:2; 1914428d7b3dSmrg unsigned int base_level:5; 1915428d7b3dSmrg unsigned int pad:1; 1916428d7b3dSmrg unsigned int lod_preclamp:1; 1917428d7b3dSmrg unsigned int border_color_mode:1; 1918428d7b3dSmrg unsigned int pad0:1; 1919428d7b3dSmrg unsigned int disable:1; 1920428d7b3dSmrg } ss0; 1921428d7b3dSmrg 1922428d7b3dSmrg struct 1923428d7b3dSmrg { 1924428d7b3dSmrg unsigned int r_wrap_mode:3; 1925428d7b3dSmrg unsigned int t_wrap_mode:3; 1926428d7b3dSmrg unsigned int s_wrap_mode:3; 1927428d7b3dSmrg unsigned int pad:3; 1928428d7b3dSmrg unsigned int max_lod:10; 1929428d7b3dSmrg unsigned int min_lod:10; 1930428d7b3dSmrg } ss1; 1931428d7b3dSmrg 1932428d7b3dSmrg 1933428d7b3dSmrg struct 1934428d7b3dSmrg { 1935428d7b3dSmrg unsigned int pad:5; 1936428d7b3dSmrg unsigned int border_color_pointer:27; 1937428d7b3dSmrg } ss2; 1938428d7b3dSmrg 1939428d7b3dSmrg struct 1940428d7b3dSmrg { 1941428d7b3dSmrg unsigned int pad:19; 1942428d7b3dSmrg unsigned int max_aniso:3; 1943428d7b3dSmrg unsigned int chroma_key_mode:1; 1944428d7b3dSmrg unsigned int chroma_key_index:2; 1945428d7b3dSmrg unsigned int chroma_key_enable:1; 1946428d7b3dSmrg unsigned int monochrome_filter_width:3; 1947428d7b3dSmrg unsigned int monochrome_filter_height:3; 1948428d7b3dSmrg } ss3; 1949428d7b3dSmrg}; 1950428d7b3dSmrg 1951428d7b3dSmrg 1952428d7b3dSmrgstruct gen4_clipper_viewport 1953428d7b3dSmrg{ 1954428d7b3dSmrg float xmin; 1955428d7b3dSmrg float xmax; 1956428d7b3dSmrg float ymin; 1957428d7b3dSmrg float ymax; 1958428d7b3dSmrg}; 1959428d7b3dSmrg 1960428d7b3dSmrgstruct gen4_cc_viewport 1961428d7b3dSmrg{ 1962428d7b3dSmrg float min_depth; 1963428d7b3dSmrg float max_depth; 1964428d7b3dSmrg}; 1965428d7b3dSmrg 1966428d7b3dSmrgstruct gen4_sf_viewport 1967428d7b3dSmrg{ 1968428d7b3dSmrg struct { 1969428d7b3dSmrg float m00; 1970428d7b3dSmrg float m11; 1971428d7b3dSmrg float m22; 1972428d7b3dSmrg float m30; 1973428d7b3dSmrg float m31; 1974428d7b3dSmrg float m32; 1975428d7b3dSmrg } viewport; 1976428d7b3dSmrg 1977428d7b3dSmrg struct { 1978428d7b3dSmrg short xmin; 1979428d7b3dSmrg short ymin; 1980428d7b3dSmrg short xmax; 1981428d7b3dSmrg short ymax; 1982428d7b3dSmrg } scissor; 1983428d7b3dSmrg}; 1984428d7b3dSmrg 1985428d7b3dSmrg/* Documented in the subsystem/shared-functions/sampler chapter... 1986428d7b3dSmrg */ 1987428d7b3dSmrgstruct gen4_surface_state 1988428d7b3dSmrg{ 1989428d7b3dSmrg struct { 1990428d7b3dSmrg unsigned int cube_pos_z:1; 1991428d7b3dSmrg unsigned int cube_neg_z:1; 1992428d7b3dSmrg unsigned int cube_pos_y:1; 1993428d7b3dSmrg unsigned int cube_neg_y:1; 1994428d7b3dSmrg unsigned int cube_pos_x:1; 1995428d7b3dSmrg unsigned int cube_neg_x:1; 1996428d7b3dSmrg unsigned int pad:3; 1997428d7b3dSmrg unsigned int render_cache_read_mode:1; 1998428d7b3dSmrg unsigned int mipmap_layout_mode:1; 1999428d7b3dSmrg unsigned int vert_line_stride_ofs:1; 2000428d7b3dSmrg unsigned int vert_line_stride:1; 2001428d7b3dSmrg unsigned int color_blend:1; 2002428d7b3dSmrg unsigned int writedisable_blue:1; 2003428d7b3dSmrg unsigned int writedisable_green:1; 2004428d7b3dSmrg unsigned int writedisable_red:1; 2005428d7b3dSmrg unsigned int writedisable_alpha:1; 2006428d7b3dSmrg unsigned int surface_format:9; 2007428d7b3dSmrg unsigned int data_return_format:1; 2008428d7b3dSmrg unsigned int pad0:1; 2009428d7b3dSmrg unsigned int surface_type:3; 2010428d7b3dSmrg } ss0; 2011428d7b3dSmrg 2012428d7b3dSmrg struct { 2013428d7b3dSmrg unsigned int base_addr; 2014428d7b3dSmrg } ss1; 2015428d7b3dSmrg 2016428d7b3dSmrg struct { 2017428d7b3dSmrg unsigned int render_target_rotation:2; 2018428d7b3dSmrg unsigned int mip_count:4; 2019428d7b3dSmrg unsigned int width:13; 2020428d7b3dSmrg unsigned int height:13; 2021428d7b3dSmrg } ss2; 2022428d7b3dSmrg 2023428d7b3dSmrg struct { 2024428d7b3dSmrg unsigned int tile_walk:1; 2025428d7b3dSmrg unsigned int tiled_surface:1; 2026428d7b3dSmrg unsigned int pad:1; 2027428d7b3dSmrg unsigned int pitch:18; 2028428d7b3dSmrg unsigned int depth:11; 2029428d7b3dSmrg } ss3; 2030428d7b3dSmrg 2031428d7b3dSmrg struct { 2032428d7b3dSmrg unsigned int pad:19; 2033428d7b3dSmrg unsigned int min_array_elt:9; 2034428d7b3dSmrg unsigned int min_lod:4; 2035428d7b3dSmrg } ss4; 2036428d7b3dSmrg 2037428d7b3dSmrg struct { 2038428d7b3dSmrg unsigned int pad:20; 2039428d7b3dSmrg unsigned int y_offset:4; 2040428d7b3dSmrg unsigned int pad2:1; 2041428d7b3dSmrg unsigned int x_offset:7; 2042428d7b3dSmrg } ss5; 2043428d7b3dSmrg}; 2044428d7b3dSmrg 2045428d7b3dSmrg/* Surface state DW0 */ 2046428d7b3dSmrg#define GEN4_SURFACE_RC_READ_WRITE (1 << 8) 2047428d7b3dSmrg#define GEN4_SURFACE_MIPLAYOUT_SHIFT 10 2048428d7b3dSmrg#define GEN4_SURFACE_MIPMAPLAYOUT_BELOW 0 2049428d7b3dSmrg#define GEN4_SURFACE_MIPMAPLAYOUT_RIGHT 1 2050428d7b3dSmrg#define GEN4_SURFACE_CUBEFACE_ENABLES 0x3f 2051428d7b3dSmrg#define GEN4_SURFACE_BLEND_ENABLED (1 << 13) 2052428d7b3dSmrg#define GEN4_SURFACE_WRITEDISABLE_B_SHIFT 14 2053428d7b3dSmrg#define GEN4_SURFACE_WRITEDISABLE_G_SHIFT 15 2054428d7b3dSmrg#define GEN4_SURFACE_WRITEDISABLE_R_SHIFT 16 2055428d7b3dSmrg#define GEN4_SURFACE_WRITEDISABLE_A_SHIFT 17 2056428d7b3dSmrg#define GEN4_SURFACE_FORMAT_SHIFT 18 2057428d7b3dSmrg#define GEN4_SURFACE_FORMAT_MASK _MASK(26, 18) 2058428d7b3dSmrg 2059428d7b3dSmrg#define GEN4_SURFACE_TYPE_SHIFT 29 2060428d7b3dSmrg#define GEN4_SURFACE_TYPE_MASK _MASK(31, 29) 2061428d7b3dSmrg#define GEN4_SURFACE_1D 0 2062428d7b3dSmrg#define GEN4_SURFACE_2D 1 2063428d7b3dSmrg#define GEN4_SURFACE_3D 2 2064428d7b3dSmrg#define GEN4_SURFACE_CUBE 3 2065428d7b3dSmrg#define GEN4_SURFACE_BUFFER 4 2066428d7b3dSmrg#define GEN4_SURFACE_NULL 7 2067428d7b3dSmrg 2068428d7b3dSmrg/* Surface state DW2 */ 2069428d7b3dSmrg#define GEN4_SURFACE_HEIGHT_SHIFT 19 2070428d7b3dSmrg#define GEN4_SURFACE_HEIGHT_MASK _MASK(31, 19) 2071428d7b3dSmrg#define GEN4_SURFACE_WIDTH_SHIFT 6 2072428d7b3dSmrg#define GEN4_SURFACE_WIDTH_MASK _MASK(18, 6) 2073428d7b3dSmrg#define GEN4_SURFACE_LOD_SHIFT 2 2074428d7b3dSmrg#define GEN4_SURFACE_LOD_MASK _MASK(5, 2) 2075428d7b3dSmrg 2076428d7b3dSmrg/* Surface state DW3 */ 2077428d7b3dSmrg#define GEN4_SURFACE_DEPTH_SHIFT 21 2078428d7b3dSmrg#define GEN4_SURFACE_DEPTH_MASK _MASK(31, 21) 2079428d7b3dSmrg#define GEN4_SURFACE_PITCH_SHIFT 3 2080428d7b3dSmrg#define GEN4_SURFACE_PITCH_MASK _MASK(19, 3) 2081428d7b3dSmrg#define GEN4_SURFACE_TILED (1 << 1) 2082428d7b3dSmrg#define GEN4_SURFACE_TILED_Y (1 << 0) 2083428d7b3dSmrg 2084428d7b3dSmrg/* Surface state DW4 */ 2085428d7b3dSmrg#define GEN4_SURFACE_MIN_LOD_SHIFT 28 2086428d7b3dSmrg#define GEN4_SURFACE_MIN_LOD_MASK _MASK(31, 28) 2087428d7b3dSmrg 2088428d7b3dSmrg/* Surface state DW5 */ 2089428d7b3dSmrg#define GEN4_SURFACE_X_OFFSET_SHIFT 25 2090428d7b3dSmrg#define GEN4_SURFACE_X_OFFSET_MASK _MASK(31, 25) 2091428d7b3dSmrg#define GEN4_SURFACE_Y_OFFSET_SHIFT 20 2092428d7b3dSmrg#define GEN4_SURFACE_Y_OFFSET_MASK _MASK(23, 20) 2093428d7b3dSmrg 2094428d7b3dSmrg 2095428d7b3dSmrgstruct gen4_vertex_buffer_state 2096428d7b3dSmrg{ 2097428d7b3dSmrg struct { 2098428d7b3dSmrg unsigned int pitch:11; 2099428d7b3dSmrg unsigned int pad:15; 2100428d7b3dSmrg unsigned int access_type:1; 2101428d7b3dSmrg unsigned int vb_index:5; 2102428d7b3dSmrg } vb0; 2103428d7b3dSmrg 2104428d7b3dSmrg unsigned int start_addr; 2105428d7b3dSmrg unsigned int max_index; 2106428d7b3dSmrg#if 1 2107428d7b3dSmrg unsigned int instance_data_step_rate; /* not included for sequential/random vertices? */ 2108428d7b3dSmrg#endif 2109428d7b3dSmrg}; 2110428d7b3dSmrg 2111428d7b3dSmrg#define GEN4_VBP_MAX 17 2112428d7b3dSmrg 2113428d7b3dSmrgstruct gen4_vb_array_state { 2114428d7b3dSmrg struct header header; 2115428d7b3dSmrg struct gen4_vertex_buffer_state vb[GEN4_VBP_MAX]; 2116428d7b3dSmrg}; 2117428d7b3dSmrg 2118428d7b3dSmrg 2119428d7b3dSmrgstruct gen4_vertex_element_state 2120428d7b3dSmrg{ 2121428d7b3dSmrg struct 2122428d7b3dSmrg { 2123428d7b3dSmrg unsigned int src_offset:11; 2124428d7b3dSmrg unsigned int pad:5; 2125428d7b3dSmrg unsigned int src_format:9; 2126428d7b3dSmrg unsigned int pad0:1; 2127428d7b3dSmrg unsigned int valid:1; 2128428d7b3dSmrg unsigned int vertex_buffer_index:5; 2129428d7b3dSmrg } ve0; 2130428d7b3dSmrg 2131428d7b3dSmrg struct 2132428d7b3dSmrg { 2133428d7b3dSmrg unsigned int dst_offset:8; 2134428d7b3dSmrg unsigned int pad:8; 2135428d7b3dSmrg unsigned int vfcomponent3:4; 2136428d7b3dSmrg unsigned int vfcomponent2:4; 2137428d7b3dSmrg unsigned int vfcomponent1:4; 2138428d7b3dSmrg unsigned int vfcomponent0:4; 2139428d7b3dSmrg } ve1; 2140428d7b3dSmrg}; 2141428d7b3dSmrg 2142428d7b3dSmrg#define GEN4_VEP_MAX 18 2143428d7b3dSmrg 2144428d7b3dSmrgstruct gen4_vertex_element_packet { 2145428d7b3dSmrg struct header header; 2146428d7b3dSmrg struct gen4_vertex_element_state ve[GEN4_VEP_MAX]; /* note: less than _TNL_ATTRIB_MAX */ 2147428d7b3dSmrg}; 2148428d7b3dSmrg 2149428d7b3dSmrg 2150428d7b3dSmrgstruct gen4_urb_immediate { 2151428d7b3dSmrg unsigned int opcode:4; 2152428d7b3dSmrg unsigned int offset:6; 2153428d7b3dSmrg unsigned int swizzle_control:2; 2154428d7b3dSmrg unsigned int pad:1; 2155428d7b3dSmrg unsigned int allocate:1; 2156428d7b3dSmrg unsigned int used:1; 2157428d7b3dSmrg unsigned int complete:1; 2158428d7b3dSmrg unsigned int response_length:4; 2159428d7b3dSmrg unsigned int msg_length:4; 2160428d7b3dSmrg unsigned int msg_target:4; 2161428d7b3dSmrg unsigned int pad1:3; 2162428d7b3dSmrg unsigned int end_of_thread:1; 2163428d7b3dSmrg}; 2164428d7b3dSmrg 2165428d7b3dSmrg/* Instruction format for the execution units: 2166428d7b3dSmrg */ 2167428d7b3dSmrg 2168428d7b3dSmrgstruct gen4_instruction 2169428d7b3dSmrg{ 2170428d7b3dSmrg struct 2171428d7b3dSmrg { 2172428d7b3dSmrg unsigned int opcode:7; 2173428d7b3dSmrg unsigned int pad:1; 2174428d7b3dSmrg unsigned int access_mode:1; 2175428d7b3dSmrg unsigned int mask_control:1; 2176428d7b3dSmrg unsigned int dependency_control:2; 2177428d7b3dSmrg unsigned int compression_control:2; 2178428d7b3dSmrg unsigned int thread_control:2; 2179428d7b3dSmrg unsigned int predicate_control:4; 2180428d7b3dSmrg unsigned int predicate_inverse:1; 2181428d7b3dSmrg unsigned int execution_size:3; 2182428d7b3dSmrg unsigned int destreg__conditonalmod:4; /* destreg - send, conditionalmod - others */ 2183428d7b3dSmrg unsigned int pad0:2; 2184428d7b3dSmrg unsigned int debug_control:1; 2185428d7b3dSmrg unsigned int saturate:1; 2186428d7b3dSmrg } header; 2187428d7b3dSmrg 2188428d7b3dSmrg union { 2189428d7b3dSmrg struct 2190428d7b3dSmrg { 2191428d7b3dSmrg unsigned int dest_reg_file:2; 2192428d7b3dSmrg unsigned int dest_reg_type:3; 2193428d7b3dSmrg unsigned int src0_reg_file:2; 2194428d7b3dSmrg unsigned int src0_reg_type:3; 2195428d7b3dSmrg unsigned int src1_reg_file:2; 2196428d7b3dSmrg unsigned int src1_reg_type:3; 2197428d7b3dSmrg unsigned int pad:1; 2198428d7b3dSmrg unsigned int dest_subreg_nr:5; 2199428d7b3dSmrg unsigned int dest_reg_nr:8; 2200428d7b3dSmrg unsigned int dest_horiz_stride:2; 2201428d7b3dSmrg unsigned int dest_address_mode:1; 2202428d7b3dSmrg } da1; 2203428d7b3dSmrg 2204428d7b3dSmrg struct 2205428d7b3dSmrg { 2206428d7b3dSmrg unsigned int dest_reg_file:2; 2207428d7b3dSmrg unsigned int dest_reg_type:3; 2208428d7b3dSmrg unsigned int src0_reg_file:2; 2209428d7b3dSmrg unsigned int src0_reg_type:3; 2210428d7b3dSmrg unsigned int pad:6; 2211428d7b3dSmrg int dest_indirect_offset:10; /* offset against the deref'd address reg */ 2212428d7b3dSmrg unsigned int dest_subreg_nr:3; /* subnr for the address reg a0.x */ 2213428d7b3dSmrg unsigned int dest_horiz_stride:2; 2214428d7b3dSmrg unsigned int dest_address_mode:1; 2215428d7b3dSmrg } ia1; 2216428d7b3dSmrg 2217428d7b3dSmrg struct 2218428d7b3dSmrg { 2219428d7b3dSmrg unsigned int dest_reg_file:2; 2220428d7b3dSmrg unsigned int dest_reg_type:3; 2221428d7b3dSmrg unsigned int src0_reg_file:2; 2222428d7b3dSmrg unsigned int src0_reg_type:3; 2223428d7b3dSmrg unsigned int src1_reg_file:2; 2224428d7b3dSmrg unsigned int src1_reg_type:3; 2225428d7b3dSmrg unsigned int pad0:1; 2226428d7b3dSmrg unsigned int dest_writemask:4; 2227428d7b3dSmrg unsigned int dest_subreg_nr:1; 2228428d7b3dSmrg unsigned int dest_reg_nr:8; 2229428d7b3dSmrg unsigned int pad1:2; 2230428d7b3dSmrg unsigned int dest_address_mode:1; 2231428d7b3dSmrg } da16; 2232428d7b3dSmrg 2233428d7b3dSmrg struct 2234428d7b3dSmrg { 2235428d7b3dSmrg unsigned int dest_reg_file:2; 2236428d7b3dSmrg unsigned int dest_reg_type:3; 2237428d7b3dSmrg unsigned int src0_reg_file:2; 2238428d7b3dSmrg unsigned int src0_reg_type:3; 2239428d7b3dSmrg unsigned int pad0:6; 2240428d7b3dSmrg unsigned int dest_writemask:4; 2241428d7b3dSmrg int dest_indirect_offset:6; 2242428d7b3dSmrg unsigned int dest_subreg_nr:3; 2243428d7b3dSmrg unsigned int pad1:2; 2244428d7b3dSmrg unsigned int dest_address_mode:1; 2245428d7b3dSmrg } ia16; 2246428d7b3dSmrg } bits1; 2247428d7b3dSmrg 2248428d7b3dSmrg 2249428d7b3dSmrg union { 2250428d7b3dSmrg struct 2251428d7b3dSmrg { 2252428d7b3dSmrg unsigned int src0_subreg_nr:5; 2253428d7b3dSmrg unsigned int src0_reg_nr:8; 2254428d7b3dSmrg unsigned int src0_abs:1; 2255428d7b3dSmrg unsigned int src0_negate:1; 2256428d7b3dSmrg unsigned int src0_address_mode:1; 2257428d7b3dSmrg unsigned int src0_horiz_stride:2; 2258428d7b3dSmrg unsigned int src0_width:3; 2259428d7b3dSmrg unsigned int src0_vert_stride:4; 2260428d7b3dSmrg unsigned int flag_reg_nr:1; 2261428d7b3dSmrg unsigned int pad:6; 2262428d7b3dSmrg } da1; 2263428d7b3dSmrg 2264428d7b3dSmrg struct 2265428d7b3dSmrg { 2266428d7b3dSmrg int src0_indirect_offset:10; 2267428d7b3dSmrg unsigned int src0_subreg_nr:3; 2268428d7b3dSmrg unsigned int src0_abs:1; 2269428d7b3dSmrg unsigned int src0_negate:1; 2270428d7b3dSmrg unsigned int src0_address_mode:1; 2271428d7b3dSmrg unsigned int src0_horiz_stride:2; 2272428d7b3dSmrg unsigned int src0_width:3; 2273428d7b3dSmrg unsigned int src0_vert_stride:4; 2274428d7b3dSmrg unsigned int flag_reg_nr:1; 2275428d7b3dSmrg unsigned int pad:6; 2276428d7b3dSmrg } ia1; 2277428d7b3dSmrg 2278428d7b3dSmrg struct 2279428d7b3dSmrg { 2280428d7b3dSmrg unsigned int src0_swz_x:2; 2281428d7b3dSmrg unsigned int src0_swz_y:2; 2282428d7b3dSmrg unsigned int src0_subreg_nr:1; 2283428d7b3dSmrg unsigned int src0_reg_nr:8; 2284428d7b3dSmrg unsigned int src0_abs:1; 2285428d7b3dSmrg unsigned int src0_negate:1; 2286428d7b3dSmrg unsigned int src0_address_mode:1; 2287428d7b3dSmrg unsigned int src0_swz_z:2; 2288428d7b3dSmrg unsigned int src0_swz_w:2; 2289428d7b3dSmrg unsigned int pad0:1; 2290428d7b3dSmrg unsigned int src0_vert_stride:4; 2291428d7b3dSmrg unsigned int flag_reg_nr:1; 2292428d7b3dSmrg unsigned int pad1:6; 2293428d7b3dSmrg } da16; 2294428d7b3dSmrg 2295428d7b3dSmrg struct 2296428d7b3dSmrg { 2297428d7b3dSmrg unsigned int src0_swz_x:2; 2298428d7b3dSmrg unsigned int src0_swz_y:2; 2299428d7b3dSmrg int src0_indirect_offset:6; 2300428d7b3dSmrg unsigned int src0_subreg_nr:3; 2301428d7b3dSmrg unsigned int src0_abs:1; 2302428d7b3dSmrg unsigned int src0_negate:1; 2303428d7b3dSmrg unsigned int src0_address_mode:1; 2304428d7b3dSmrg unsigned int src0_swz_z:2; 2305428d7b3dSmrg unsigned int src0_swz_w:2; 2306428d7b3dSmrg unsigned int pad0:1; 2307428d7b3dSmrg unsigned int src0_vert_stride:4; 2308428d7b3dSmrg unsigned int flag_reg_nr:1; 2309428d7b3dSmrg unsigned int pad1:6; 2310428d7b3dSmrg } ia16; 2311428d7b3dSmrg 2312428d7b3dSmrg } bits2; 2313428d7b3dSmrg 2314428d7b3dSmrg union 2315428d7b3dSmrg { 2316428d7b3dSmrg struct 2317428d7b3dSmrg { 2318428d7b3dSmrg unsigned int src1_subreg_nr:5; 2319428d7b3dSmrg unsigned int src1_reg_nr:8; 2320428d7b3dSmrg unsigned int src1_abs:1; 2321428d7b3dSmrg unsigned int src1_negate:1; 2322428d7b3dSmrg unsigned int pad:1; 2323428d7b3dSmrg unsigned int src1_horiz_stride:2; 2324428d7b3dSmrg unsigned int src1_width:3; 2325428d7b3dSmrg unsigned int src1_vert_stride:4; 2326428d7b3dSmrg unsigned int pad0:7; 2327428d7b3dSmrg } da1; 2328428d7b3dSmrg 2329428d7b3dSmrg struct 2330428d7b3dSmrg { 2331428d7b3dSmrg unsigned int src1_swz_x:2; 2332428d7b3dSmrg unsigned int src1_swz_y:2; 2333428d7b3dSmrg unsigned int src1_subreg_nr:1; 2334428d7b3dSmrg unsigned int src1_reg_nr:8; 2335428d7b3dSmrg unsigned int src1_abs:1; 2336428d7b3dSmrg unsigned int src1_negate:1; 2337428d7b3dSmrg unsigned int pad0:1; 2338428d7b3dSmrg unsigned int src1_swz_z:2; 2339428d7b3dSmrg unsigned int src1_swz_w:2; 2340428d7b3dSmrg unsigned int pad1:1; 2341428d7b3dSmrg unsigned int src1_vert_stride:4; 2342428d7b3dSmrg unsigned int pad2:7; 2343428d7b3dSmrg } da16; 2344428d7b3dSmrg 2345428d7b3dSmrg struct 2346428d7b3dSmrg { 2347428d7b3dSmrg int src1_indirect_offset:10; 2348428d7b3dSmrg unsigned int src1_subreg_nr:3; 2349428d7b3dSmrg unsigned int src1_abs:1; 2350428d7b3dSmrg unsigned int src1_negate:1; 2351428d7b3dSmrg unsigned int pad0:1; 2352428d7b3dSmrg unsigned int src1_horiz_stride:2; 2353428d7b3dSmrg unsigned int src1_width:3; 2354428d7b3dSmrg unsigned int src1_vert_stride:4; 2355428d7b3dSmrg unsigned int flag_reg_nr:1; 2356428d7b3dSmrg unsigned int pad1:6; 2357428d7b3dSmrg } ia1; 2358428d7b3dSmrg 2359428d7b3dSmrg struct 2360428d7b3dSmrg { 2361428d7b3dSmrg unsigned int src1_swz_x:2; 2362428d7b3dSmrg unsigned int src1_swz_y:2; 2363428d7b3dSmrg int src1_indirect_offset:6; 2364428d7b3dSmrg unsigned int src1_subreg_nr:3; 2365428d7b3dSmrg unsigned int src1_abs:1; 2366428d7b3dSmrg unsigned int src1_negate:1; 2367428d7b3dSmrg unsigned int pad0:1; 2368428d7b3dSmrg unsigned int src1_swz_z:2; 2369428d7b3dSmrg unsigned int src1_swz_w:2; 2370428d7b3dSmrg unsigned int pad1:1; 2371428d7b3dSmrg unsigned int src1_vert_stride:4; 2372428d7b3dSmrg unsigned int flag_reg_nr:1; 2373428d7b3dSmrg unsigned int pad2:6; 2374428d7b3dSmrg } ia16; 2375428d7b3dSmrg 2376428d7b3dSmrg 2377428d7b3dSmrg struct 2378428d7b3dSmrg { 2379428d7b3dSmrg int jump_count:16; /* note: signed */ 2380428d7b3dSmrg unsigned int pop_count:4; 2381428d7b3dSmrg unsigned int pad0:12; 2382428d7b3dSmrg } if_else; 2383428d7b3dSmrg 2384428d7b3dSmrg struct { 2385428d7b3dSmrg unsigned int function:4; 2386428d7b3dSmrg unsigned int int_type:1; 2387428d7b3dSmrg unsigned int precision:1; 2388428d7b3dSmrg unsigned int saturate:1; 2389428d7b3dSmrg unsigned int data_type:1; 2390428d7b3dSmrg unsigned int pad0:8; 2391428d7b3dSmrg unsigned int response_length:4; 2392428d7b3dSmrg unsigned int msg_length:4; 2393428d7b3dSmrg unsigned int msg_target:4; 2394428d7b3dSmrg unsigned int pad1:3; 2395428d7b3dSmrg unsigned int end_of_thread:1; 2396428d7b3dSmrg } math; 2397428d7b3dSmrg 2398428d7b3dSmrg struct { 2399428d7b3dSmrg unsigned int binding_table_index:8; 2400428d7b3dSmrg unsigned int sampler:4; 2401428d7b3dSmrg unsigned int return_format:2; 2402428d7b3dSmrg unsigned int msg_type:2; 2403428d7b3dSmrg unsigned int response_length:4; 2404428d7b3dSmrg unsigned int msg_length:4; 2405428d7b3dSmrg unsigned int msg_target:4; 2406428d7b3dSmrg unsigned int pad1:3; 2407428d7b3dSmrg unsigned int end_of_thread:1; 2408428d7b3dSmrg } sampler; 2409428d7b3dSmrg 2410428d7b3dSmrg struct gen4_urb_immediate urb; 2411428d7b3dSmrg 2412428d7b3dSmrg struct { 2413428d7b3dSmrg unsigned int binding_table_index:8; 2414428d7b3dSmrg unsigned int msg_control:4; 2415428d7b3dSmrg unsigned int msg_type:2; 2416428d7b3dSmrg unsigned int target_cache:2; 2417428d7b3dSmrg unsigned int response_length:4; 2418428d7b3dSmrg unsigned int msg_length:4; 2419428d7b3dSmrg unsigned int msg_target:4; 2420428d7b3dSmrg unsigned int pad1:3; 2421428d7b3dSmrg unsigned int end_of_thread:1; 2422428d7b3dSmrg } dp_read; 2423428d7b3dSmrg 2424428d7b3dSmrg struct { 2425428d7b3dSmrg unsigned int binding_table_index:8; 2426428d7b3dSmrg unsigned int msg_control:3; 2427428d7b3dSmrg unsigned int pixel_scoreboard_clear:1; 2428428d7b3dSmrg unsigned int msg_type:3; 2429428d7b3dSmrg unsigned int send_commit_msg:1; 2430428d7b3dSmrg unsigned int response_length:4; 2431428d7b3dSmrg unsigned int msg_length:4; 2432428d7b3dSmrg unsigned int msg_target:4; 2433428d7b3dSmrg unsigned int pad1:3; 2434428d7b3dSmrg unsigned int end_of_thread:1; 2435428d7b3dSmrg } dp_write; 2436428d7b3dSmrg 2437428d7b3dSmrg struct { 2438428d7b3dSmrg unsigned int pad:16; 2439428d7b3dSmrg unsigned int response_length:4; 2440428d7b3dSmrg unsigned int msg_length:4; 2441428d7b3dSmrg unsigned int msg_target:4; 2442428d7b3dSmrg unsigned int pad1:3; 2443428d7b3dSmrg unsigned int end_of_thread:1; 2444428d7b3dSmrg } generic; 2445428d7b3dSmrg 2446428d7b3dSmrg unsigned int ud; 2447428d7b3dSmrg } bits3; 2448428d7b3dSmrg}; 2449428d7b3dSmrg 2450428d7b3dSmrg/* media pipeline */ 2451428d7b3dSmrg 2452428d7b3dSmrgstruct gen4_vfe_state { 2453428d7b3dSmrg struct { 2454428d7b3dSmrg unsigned int per_thread_scratch_space:4; 2455428d7b3dSmrg unsigned int pad3:3; 2456428d7b3dSmrg unsigned int extend_vfe_state_present:1; 2457428d7b3dSmrg unsigned int pad2:2; 2458428d7b3dSmrg unsigned int scratch_base:22; 2459428d7b3dSmrg } vfe0; 2460428d7b3dSmrg 2461428d7b3dSmrg struct { 2462428d7b3dSmrg unsigned int debug_counter_control:2; 2463428d7b3dSmrg unsigned int children_present:1; 2464428d7b3dSmrg unsigned int vfe_mode:4; 2465428d7b3dSmrg unsigned int pad2:2; 2466428d7b3dSmrg unsigned int num_urb_entries:7; 2467428d7b3dSmrg unsigned int urb_entry_alloc_size:9; 2468428d7b3dSmrg unsigned int max_threads:7; 2469428d7b3dSmrg } vfe1; 2470428d7b3dSmrg 2471428d7b3dSmrg struct { 2472428d7b3dSmrg unsigned int pad4:4; 2473428d7b3dSmrg unsigned int interface_descriptor_base:28; 2474428d7b3dSmrg } vfe2; 2475428d7b3dSmrg}; 2476428d7b3dSmrg 2477428d7b3dSmrgstruct gen4_vld_state { 2478428d7b3dSmrg struct { 2479428d7b3dSmrg unsigned int pad6:6; 2480428d7b3dSmrg unsigned int scan_order:1; 2481428d7b3dSmrg unsigned int intra_vlc_format:1; 2482428d7b3dSmrg unsigned int quantizer_scale_type:1; 2483428d7b3dSmrg unsigned int concealment_motion_vector:1; 2484428d7b3dSmrg unsigned int frame_predict_frame_dct:1; 2485428d7b3dSmrg unsigned int top_field_first:1; 2486428d7b3dSmrg unsigned int picture_structure:2; 2487428d7b3dSmrg unsigned int intra_dc_precision:2; 2488428d7b3dSmrg unsigned int f_code_0_0:4; 2489428d7b3dSmrg unsigned int f_code_0_1:4; 2490428d7b3dSmrg unsigned int f_code_1_0:4; 2491428d7b3dSmrg unsigned int f_code_1_1:4; 2492428d7b3dSmrg } vld0; 2493428d7b3dSmrg 2494428d7b3dSmrg struct { 2495428d7b3dSmrg unsigned int pad2:9; 2496428d7b3dSmrg unsigned int picture_coding_type:2; 2497428d7b3dSmrg unsigned int pad:21; 2498428d7b3dSmrg } vld1; 2499428d7b3dSmrg 2500428d7b3dSmrg struct { 2501428d7b3dSmrg unsigned int index_0:4; 2502428d7b3dSmrg unsigned int index_1:4; 2503428d7b3dSmrg unsigned int index_2:4; 2504428d7b3dSmrg unsigned int index_3:4; 2505428d7b3dSmrg unsigned int index_4:4; 2506428d7b3dSmrg unsigned int index_5:4; 2507428d7b3dSmrg unsigned int index_6:4; 2508428d7b3dSmrg unsigned int index_7:4; 2509428d7b3dSmrg } desc_remap_table0; 2510428d7b3dSmrg 2511428d7b3dSmrg struct { 2512428d7b3dSmrg unsigned int index_8:4; 2513428d7b3dSmrg unsigned int index_9:4; 2514428d7b3dSmrg unsigned int index_10:4; 2515428d7b3dSmrg unsigned int index_11:4; 2516428d7b3dSmrg unsigned int index_12:4; 2517428d7b3dSmrg unsigned int index_13:4; 2518428d7b3dSmrg unsigned int index_14:4; 2519428d7b3dSmrg unsigned int index_15:4; 2520428d7b3dSmrg } desc_remap_table1; 2521428d7b3dSmrg}; 2522428d7b3dSmrg 2523428d7b3dSmrgstruct gen4_interface_descriptor { 2524428d7b3dSmrg struct { 2525428d7b3dSmrg unsigned int grf_reg_blocks:4; 2526428d7b3dSmrg unsigned int pad:2; 2527428d7b3dSmrg unsigned int kernel_start_pointer:26; 2528428d7b3dSmrg } desc0; 2529428d7b3dSmrg 2530428d7b3dSmrg struct { 2531428d7b3dSmrg unsigned int pad:7; 2532428d7b3dSmrg unsigned int software_exception:1; 2533428d7b3dSmrg unsigned int pad2:3; 2534428d7b3dSmrg unsigned int maskstack_exception:1; 2535428d7b3dSmrg unsigned int pad3:1; 2536428d7b3dSmrg unsigned int illegal_opcode_exception:1; 2537428d7b3dSmrg unsigned int pad4:2; 2538428d7b3dSmrg unsigned int floating_point_mode:1; 2539428d7b3dSmrg unsigned int thread_priority:1; 2540428d7b3dSmrg unsigned int single_program_flow:1; 2541428d7b3dSmrg unsigned int pad5:1; 2542428d7b3dSmrg unsigned int const_urb_entry_read_offset:6; 2543428d7b3dSmrg unsigned int const_urb_entry_read_len:6; 2544428d7b3dSmrg } desc1; 2545428d7b3dSmrg 2546428d7b3dSmrg struct { 2547428d7b3dSmrg unsigned int pad:2; 2548428d7b3dSmrg unsigned int sampler_count:3; 2549428d7b3dSmrg unsigned int sampler_state_pointer:27; 2550428d7b3dSmrg } desc2; 2551428d7b3dSmrg 2552428d7b3dSmrg struct { 2553428d7b3dSmrg unsigned int binding_table_entry_count:5; 2554428d7b3dSmrg unsigned int binding_table_pointer:27; 2555428d7b3dSmrg } desc3; 2556428d7b3dSmrg}; 2557428d7b3dSmrg 2558428d7b3dSmrgstruct gen6_blend_state 2559428d7b3dSmrg{ 2560428d7b3dSmrg struct { 2561428d7b3dSmrg unsigned int dest_blend_factor:5; 2562428d7b3dSmrg unsigned int source_blend_factor:5; 2563428d7b3dSmrg unsigned int pad3:1; 2564428d7b3dSmrg unsigned int blend_func:3; 2565428d7b3dSmrg unsigned int pad2:1; 2566428d7b3dSmrg unsigned int ia_dest_blend_factor:5; 2567428d7b3dSmrg unsigned int ia_source_blend_factor:5; 2568428d7b3dSmrg unsigned int pad1:1; 2569428d7b3dSmrg unsigned int ia_blend_func:3; 2570428d7b3dSmrg unsigned int pad0:1; 2571428d7b3dSmrg unsigned int ia_blend_enable:1; 2572428d7b3dSmrg unsigned int blend_enable:1; 2573428d7b3dSmrg } blend0; 2574428d7b3dSmrg 2575428d7b3dSmrg struct { 2576428d7b3dSmrg unsigned int post_blend_clamp_enable:1; 2577428d7b3dSmrg unsigned int pre_blend_clamp_enable:1; 2578428d7b3dSmrg unsigned int clamp_range:2; 2579428d7b3dSmrg unsigned int pad0:4; 2580428d7b3dSmrg unsigned int x_dither_offset:2; 2581428d7b3dSmrg unsigned int y_dither_offset:2; 2582428d7b3dSmrg unsigned int dither_enable:1; 2583428d7b3dSmrg unsigned int alpha_test_func:3; 2584428d7b3dSmrg unsigned int alpha_test_enable:1; 2585428d7b3dSmrg unsigned int pad1:1; 2586428d7b3dSmrg unsigned int logic_op_func:4; 2587428d7b3dSmrg unsigned int logic_op_enable:1; 2588428d7b3dSmrg unsigned int pad2:1; 2589428d7b3dSmrg unsigned int write_disable_b:1; 2590428d7b3dSmrg unsigned int write_disable_g:1; 2591428d7b3dSmrg unsigned int write_disable_r:1; 2592428d7b3dSmrg unsigned int write_disable_a:1; 2593428d7b3dSmrg unsigned int pad3:1; 2594428d7b3dSmrg unsigned int alpha_to_coverage_dither:1; 2595428d7b3dSmrg unsigned int alpha_to_one:1; 2596428d7b3dSmrg unsigned int alpha_to_coverage:1; 2597428d7b3dSmrg } blend1; 2598428d7b3dSmrg}; 2599428d7b3dSmrg 2600428d7b3dSmrgstruct gen6_color_calc_state 2601428d7b3dSmrg{ 2602428d7b3dSmrg struct { 2603428d7b3dSmrg unsigned int alpha_test_format:1; 2604428d7b3dSmrg unsigned int pad0:14; 2605428d7b3dSmrg unsigned int round_disable:1; 2606428d7b3dSmrg unsigned int bf_stencil_ref:8; 2607428d7b3dSmrg unsigned int stencil_ref:8; 2608428d7b3dSmrg } cc0; 2609428d7b3dSmrg 2610428d7b3dSmrg union { 2611428d7b3dSmrg float alpha_ref_f; 2612428d7b3dSmrg struct { 2613428d7b3dSmrg unsigned int ui:8; 2614428d7b3dSmrg unsigned int pad0:24; 2615428d7b3dSmrg } alpha_ref_fi; 2616428d7b3dSmrg } cc1; 2617428d7b3dSmrg 2618428d7b3dSmrg float constant_r; 2619428d7b3dSmrg float constant_g; 2620428d7b3dSmrg float constant_b; 2621428d7b3dSmrg float constant_a; 2622428d7b3dSmrg}; 2623428d7b3dSmrg 2624428d7b3dSmrgstruct gen6_depth_stencil_state 2625428d7b3dSmrg{ 2626428d7b3dSmrg struct { 2627428d7b3dSmrg unsigned int pad0:3; 2628428d7b3dSmrg unsigned int bf_stencil_pass_depth_pass_op:3; 2629428d7b3dSmrg unsigned int bf_stencil_pass_depth_fail_op:3; 2630428d7b3dSmrg unsigned int bf_stencil_fail_op:3; 2631428d7b3dSmrg unsigned int bf_stencil_func:3; 2632428d7b3dSmrg unsigned int bf_stencil_enable:1; 2633428d7b3dSmrg unsigned int pad1:2; 2634428d7b3dSmrg unsigned int stencil_write_enable:1; 2635428d7b3dSmrg unsigned int stencil_pass_depth_pass_op:3; 2636428d7b3dSmrg unsigned int stencil_pass_depth_fail_op:3; 2637428d7b3dSmrg unsigned int stencil_fail_op:3; 2638428d7b3dSmrg unsigned int stencil_func:3; 2639428d7b3dSmrg unsigned int stencil_enable:1; 2640428d7b3dSmrg } ds0; 2641428d7b3dSmrg 2642428d7b3dSmrg struct { 2643428d7b3dSmrg unsigned int bf_stencil_write_mask:8; 2644428d7b3dSmrg unsigned int bf_stencil_test_mask:8; 2645428d7b3dSmrg unsigned int stencil_write_mask:8; 2646428d7b3dSmrg unsigned int stencil_test_mask:8; 2647428d7b3dSmrg } ds1; 2648428d7b3dSmrg 2649428d7b3dSmrg struct { 2650428d7b3dSmrg unsigned int pad0:26; 2651428d7b3dSmrg unsigned int depth_write_enable:1; 2652428d7b3dSmrg unsigned int depth_test_func:3; 2653428d7b3dSmrg unsigned int pad1:1; 2654428d7b3dSmrg unsigned int depth_test_enable:1; 2655428d7b3dSmrg } ds2; 2656428d7b3dSmrg}; 2657428d7b3dSmrg 2658428d7b3dSmrgtypedef enum { 2659428d7b3dSmrg SAMPLER_FILTER_NEAREST = 0, 2660428d7b3dSmrg SAMPLER_FILTER_BILINEAR, 2661428d7b3dSmrg FILTER_COUNT 2662428d7b3dSmrg} sampler_filter_t; 2663428d7b3dSmrg 2664428d7b3dSmrgtypedef enum { 2665428d7b3dSmrg SAMPLER_EXTEND_NONE = 0, 2666428d7b3dSmrg SAMPLER_EXTEND_REPEAT, 2667428d7b3dSmrg SAMPLER_EXTEND_PAD, 2668428d7b3dSmrg SAMPLER_EXTEND_REFLECT, 2669428d7b3dSmrg EXTEND_COUNT 2670428d7b3dSmrg} sampler_extend_t; 2671428d7b3dSmrg 2672428d7b3dSmrgtypedef enum { 2673428d7b3dSmrg WM_KERNEL = 0, 2674428d7b3dSmrg WM_KERNEL_P, 2675428d7b3dSmrg 2676428d7b3dSmrg WM_KERNEL_MASK, 2677428d7b3dSmrg WM_KERNEL_MASK_P, 2678428d7b3dSmrg 2679428d7b3dSmrg WM_KERNEL_MASKCA, 2680428d7b3dSmrg WM_KERNEL_MASKCA_P, 2681428d7b3dSmrg 2682428d7b3dSmrg WM_KERNEL_MASKSA, 2683428d7b3dSmrg WM_KERNEL_MASKSA_P, 2684428d7b3dSmrg 2685428d7b3dSmrg WM_KERNEL_OPACITY, 2686428d7b3dSmrg WM_KERNEL_OPACITY_P, 2687428d7b3dSmrg 2688428d7b3dSmrg WM_KERNEL_VIDEO_PLANAR, 2689428d7b3dSmrg WM_KERNEL_VIDEO_PACKED, 2690428d7b3dSmrg KERNEL_COUNT 2691428d7b3dSmrg} wm_kernel_t; 2692428d7b3dSmrg 2693428d7b3dSmrg#endif 2694