103b705cfSriastradh/**************************************************************************
203b705cfSriastradh *
303b705cfSriastradh * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
403b705cfSriastradh * All Rights Reserved.
503b705cfSriastradh *
603b705cfSriastradh * Permission is hereby granted, free of charge, to any person obtaining a
703b705cfSriastradh * copy of this software and associated documentation files (the
803b705cfSriastradh * "Software"), to deal in the Software without restriction, including
903b705cfSriastradh * without limitation the rights to use, copy, modify, merge, publish,
1003b705cfSriastradh * distribute, sub license, and/or sell copies of the Software, and to
1103b705cfSriastradh * permit persons to whom the Software is furnished to do so, subject to
1203b705cfSriastradh * the following conditions:
1303b705cfSriastradh *
1403b705cfSriastradh * The above copyright notice and this permission notice (including the
1503b705cfSriastradh * next paragraph) shall be included in all copies or substantial portions
1603b705cfSriastradh * of the Software.
1703b705cfSriastradh *
1803b705cfSriastradh * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1903b705cfSriastradh * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2003b705cfSriastradh * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
2103b705cfSriastradh * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
2203b705cfSriastradh * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
2303b705cfSriastradh * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2403b705cfSriastradh * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2503b705cfSriastradh *
2603b705cfSriastradh **************************************************************************/
2703b705cfSriastradh
2803b705cfSriastradh/*
2903b705cfSriastradh * New regs for broadwater -- we need to split this file up sensibly somehow.
3003b705cfSriastradh */
3103b705cfSriastradh#define BRW_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \
3203b705cfSriastradh					   ((Pipeline) << 27) | \
3303b705cfSriastradh					   ((Opcode) << 24) | \
3403b705cfSriastradh					   ((Subopcode) << 16))
3503b705cfSriastradh
3603b705cfSriastradh#define BRW_URB_FENCE				BRW_3D(0, 0, 0)
3703b705cfSriastradh#define BRW_CS_URB_STATE			BRW_3D(0, 0, 1)
3803b705cfSriastradh#define BRW_CONSTANT_BUFFER			BRW_3D(0, 0, 2)
3903b705cfSriastradh#define BRW_STATE_PREFETCH			BRW_3D(0, 0, 3)
4003b705cfSriastradh
4103b705cfSriastradh#define BRW_STATE_BASE_ADDRESS			BRW_3D(0, 1, 1)
4203b705cfSriastradh#define BRW_STATE_SIP				BRW_3D(0, 1, 2)
4303b705cfSriastradh#define BRW_PIPELINE_SELECT			BRW_3D(0, 1, 4)
4403b705cfSriastradh
4503b705cfSriastradh#define NEW_PIPELINE_SELECT			BRW_3D(1, 1, 4)
4603b705cfSriastradh
4703b705cfSriastradh#define BRW_MEDIA_STATE_POINTERS		BRW_3D(2, 0, 0)
4803b705cfSriastradh#define BRW_MEDIA_OBJECT			BRW_3D(2, 1, 0)
4903b705cfSriastradh
5003b705cfSriastradh#define BRW_3DSTATE_PIPELINED_POINTERS		BRW_3D(3, 0, 0)
5103b705cfSriastradh#define BRW_3DSTATE_BINDING_TABLE_POINTERS	BRW_3D(3, 0, 1)
5203b705cfSriastradh# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_PS  (1 << 12)/* for GEN6 */
5303b705cfSriastradh# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_GS  (1 << 9) /* for GEN6 */
5403b705cfSriastradh# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_VS  (1 << 8) /* for GEN6 */
5503b705cfSriastradh
5603b705cfSriastradh#define BRW_3DSTATE_VERTEX_BUFFERS		BRW_3D(3, 0, 8)
5703b705cfSriastradh#define BRW_3DSTATE_VERTEX_ELEMENTS		BRW_3D(3, 0, 9)
5803b705cfSriastradh#define BRW_3DSTATE_INDEX_BUFFER		BRW_3D(3, 0, 0xa)
5903b705cfSriastradh#define BRW_3DSTATE_VF_STATISTICS		BRW_3D(3, 0, 0xb)
6003b705cfSriastradh
6103b705cfSriastradh#define BRW_3DSTATE_DRAWING_RECTANGLE		BRW_3D(3, 1, 0)
6203b705cfSriastradh#define BRW_3DSTATE_CONSTANT_COLOR		BRW_3D(3, 1, 1)
6303b705cfSriastradh#define BRW_3DSTATE_SAMPLER_PALETTE_LOAD	BRW_3D(3, 1, 2)
6403b705cfSriastradh#define BRW_3DSTATE_CHROMA_KEY			BRW_3D(3, 1, 4)
6503b705cfSriastradh#define BRW_3DSTATE_DEPTH_BUFFER		BRW_3D(3, 1, 5)
6603b705cfSriastradh# define BRW_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT	29
6703b705cfSriastradh# define BRW_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT	18
6803b705cfSriastradh
6903b705cfSriastradh#define BRW_3DSTATE_POLY_STIPPLE_OFFSET		BRW_3D(3, 1, 6)
7003b705cfSriastradh#define BRW_3DSTATE_POLY_STIPPLE_PATTERN	BRW_3D(3, 1, 7)
7103b705cfSriastradh#define BRW_3DSTATE_LINE_STIPPLE		BRW_3D(3, 1, 8)
7203b705cfSriastradh#define BRW_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP	BRW_3D(3, 1, 9)
7303b705cfSriastradh/* These two are BLC and CTG only, not BW or CL */
7403b705cfSriastradh#define BRW_3DSTATE_AA_LINE_PARAMS		BRW_3D(3, 1, 0xa)
7503b705cfSriastradh#define BRW_3DSTATE_GS_SVB_INDEX		BRW_3D(3, 1, 0xb)
7603b705cfSriastradh
7703b705cfSriastradh#define BRW_PIPE_CONTROL			BRW_3D(3, 2, 0)
7803b705cfSriastradh
7903b705cfSriastradh#define BRW_3DPRIMITIVE				BRW_3D(3, 3, 0)
8003b705cfSriastradh
8103b705cfSriastradh#define BRW_3DSTATE_CLEAR_PARAMS		BRW_3D(3, 1, 0x10)
8203b705cfSriastradh/* DW1 */
8303b705cfSriastradh# define BRW_3DSTATE_DEPTH_CLEAR_VALID		(1 << 15)
8403b705cfSriastradh
8503b705cfSriastradh/* for GEN6+ */
8603b705cfSriastradh#define GEN6_3DSTATE_SAMPLER_STATE_POINTERS	BRW_3D(3, 0, 0x02)
8703b705cfSriastradh# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS	(1 << 12)
8803b705cfSriastradh# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS	(1 << 9)
8903b705cfSriastradh# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS	(1 << 8)
9003b705cfSriastradh
9103b705cfSriastradh#define GEN6_3DSTATE_URB			BRW_3D(3, 0, 0x05)
9203b705cfSriastradh/* DW1 */
9303b705cfSriastradh# define GEN6_3DSTATE_URB_VS_SIZE_SHIFT		16
9403b705cfSriastradh# define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT	0
9503b705cfSriastradh/* DW2 */
9603b705cfSriastradh# define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT	8
9703b705cfSriastradh# define GEN6_3DSTATE_URB_GS_SIZE_SHIFT		0
9803b705cfSriastradh
9903b705cfSriastradh#define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS	BRW_3D(3, 0, 0x0d)
10003b705cfSriastradh# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC		(1 << 12)
10103b705cfSriastradh# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF		(1 << 11)
10203b705cfSriastradh# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP	(1 << 10)
10303b705cfSriastradh
10403b705cfSriastradh#define GEN6_3DSTATE_CC_STATE_POINTERS		BRW_3D(3, 0, 0x0e)
10503b705cfSriastradh
10603b705cfSriastradh#define GEN6_3DSTATE_VS				BRW_3D(3, 0, 0x10)
10703b705cfSriastradh
10803b705cfSriastradh#define GEN6_3DSTATE_GS				BRW_3D(3, 0, 0x11)
10903b705cfSriastradh/* DW4 */
11003b705cfSriastradh# define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT	0
11103b705cfSriastradh
11203b705cfSriastradh#define GEN6_3DSTATE_CLIP			BRW_3D(3, 0, 0x12)
11303b705cfSriastradh
11403b705cfSriastradh#define GEN6_3DSTATE_SF				BRW_3D(3, 0, 0x13)
11503b705cfSriastradh/* DW1 */
11603b705cfSriastradh# define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT		22
11703b705cfSriastradh# define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT	11
11803b705cfSriastradh# define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT	4
11903b705cfSriastradh/* DW2 */
12003b705cfSriastradh/* DW3 */
12103b705cfSriastradh# define GEN6_3DSTATE_SF_CULL_BOTH			(0 << 29)
12203b705cfSriastradh# define GEN6_3DSTATE_SF_CULL_NONE			(1 << 29)
12303b705cfSriastradh# define GEN6_3DSTATE_SF_CULL_FRONT			(2 << 29)
12403b705cfSriastradh# define GEN6_3DSTATE_SF_CULL_BACK			(3 << 29)
12503b705cfSriastradh/* DW4 */
12603b705cfSriastradh# define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT		29
12703b705cfSriastradh# define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT		27
12803b705cfSriastradh# define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT		25
12903b705cfSriastradh
13003b705cfSriastradh
13103b705cfSriastradh#define GEN6_3DSTATE_WM				BRW_3D(3, 0, 0x14)
13203b705cfSriastradh/* DW2 */
13303b705cfSriastradh# define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF			27
13403b705cfSriastradh# define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
13503b705cfSriastradh/* DW4 */
13603b705cfSriastradh# define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT		16
13703b705cfSriastradh/* DW5 */
13803b705cfSriastradh# define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT			25
13903b705cfSriastradh# define GEN6_3DSTATE_WM_DISPATCH_ENABLE			(1 << 19)
14003b705cfSriastradh# define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE			(1 << 1)
14103b705cfSriastradh# define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE			(1 << 0)
14203b705cfSriastradh/* DW6 */
14303b705cfSriastradh# define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT			20
14403b705cfSriastradh# define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC	(1 << 15)
14503b705cfSriastradh# define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 14)
14603b705cfSriastradh# define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC	(1 << 13)
14703b705cfSriastradh# define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC		(1 << 12)
14803b705cfSriastradh# define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 11)
14903b705cfSriastradh# define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC		(1 << 10)
15003b705cfSriastradh
15103b705cfSriastradh
15203b705cfSriastradh#define GEN6_3DSTATE_CONSTANT_VS		BRW_3D(3, 0, 0x15)
15303b705cfSriastradh#define GEN6_3DSTATE_CONSTANT_GS          	BRW_3D(3, 0, 0x16)
15403b705cfSriastradh#define GEN6_3DSTATE_CONSTANT_PS          	BRW_3D(3, 0, 0x17)
15503b705cfSriastradh
15603b705cfSriastradh#define GEN6_3DSTATE_SAMPLE_MASK		BRW_3D(3, 0, 0x18)
15703b705cfSriastradh
15803b705cfSriastradh#define GEN6_3DSTATE_MULTISAMPLE		BRW_3D(3, 1, 0x0d)
15903b705cfSriastradh/* DW1 */
16003b705cfSriastradh# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER		(0 << 4)
16103b705cfSriastradh# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT	(1 << 4)
16203b705cfSriastradh# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1			(0 << 1)
16303b705cfSriastradh# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4			(2 << 1)
16403b705cfSriastradh# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8			(3 << 1)
16503b705cfSriastradh
16603b705cfSriastradh/* on GEN7+ */
16703b705cfSriastradh/* _3DSTATE_VERTEX_BUFFERS on GEN7*/
16803b705cfSriastradh/* DW1 */
16903b705cfSriastradh#define GEN7_VB0_ADDRESS_MODIFYENABLE   (1 << 14)
17003b705cfSriastradh
17103b705cfSriastradh/* _3DPRIMITIVE on GEN7 */
17203b705cfSriastradh/* DW1 */
17303b705cfSriastradh# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL     (0 << 8)
17403b705cfSriastradh# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM         (1 << 8)
17503b705cfSriastradh
17603b705cfSriastradh/* 3DSTATE_WM on GEN7 */
17703b705cfSriastradh/* DW1 */
17803b705cfSriastradh# define GEN7_WM_STATISTICS_ENABLE                              (1 << 31)
17903b705cfSriastradh# define GEN7_WM_DEPTH_CLEAR                                    (1 << 30)
18003b705cfSriastradh# define GEN7_WM_DISPATCH_ENABLE                                (1 << 29)
18103b705cfSriastradh# define GEN6_WM_DEPTH_RESOLVE                                  (1 << 28)
18203b705cfSriastradh# define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE                     (1 << 27)
18303b705cfSriastradh# define GEN7_WM_KILL_ENABLE                                    (1 << 25)
18403b705cfSriastradh# define GEN7_WM_PSCDEPTH_OFF                                   (0 << 23)
18503b705cfSriastradh# define GEN7_WM_PSCDEPTH_ON                                    (1 << 23)
18603b705cfSriastradh# define GEN7_WM_PSCDEPTH_ON_GE                                 (2 << 23)
18703b705cfSriastradh# define GEN7_WM_PSCDEPTH_ON_LE                                 (3 << 23)
18803b705cfSriastradh# define GEN7_WM_USES_SOURCE_DEPTH                              (1 << 20)
18903b705cfSriastradh# define GEN7_WM_USES_SOURCE_W                                  (1 << 19)
19003b705cfSriastradh# define GEN7_WM_POSITION_ZW_PIXEL                              (0 << 17)
19103b705cfSriastradh# define GEN7_WM_POSITION_ZW_CENTROID                           (2 << 17)
19203b705cfSriastradh# define GEN7_WM_POSITION_ZW_SAMPLE                             (3 << 17)
19303b705cfSriastradh# define GEN7_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC              (1 << 16)
19403b705cfSriastradh# define GEN7_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC            (1 << 15)
19503b705cfSriastradh# define GEN7_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC               (1 << 14)
19603b705cfSriastradh# define GEN7_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC                 (1 << 13)
19703b705cfSriastradh# define GEN7_WM_PERSPECTIVE_CENTROID_BARYCENTRIC               (1 << 12)
19803b705cfSriastradh# define GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC                  (1 << 11)
19903b705cfSriastradh# define GEN7_WM_USES_INPUT_COVERAGE_MASK                       (1 << 10)
20003b705cfSriastradh# define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5                      (0 << 8)
20103b705cfSriastradh# define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0                      (1 << 8)
20203b705cfSriastradh# define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0                      (2 << 8)
20303b705cfSriastradh# define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0                      (3 << 8)
20403b705cfSriastradh# define GEN7_WM_LINE_AA_WIDTH_0_5                              (0 << 6)
20503b705cfSriastradh# define GEN7_WM_LINE_AA_WIDTH_1_0                              (1 << 6)
20603b705cfSriastradh# define GEN7_WM_LINE_AA_WIDTH_2_0                              (2 << 6)
20703b705cfSriastradh# define GEN7_WM_LINE_AA_WIDTH_4_0                              (3 << 6)
20803b705cfSriastradh# define GEN7_WM_POLYGON_STIPPLE_ENABLE                         (1 << 4)
20903b705cfSriastradh# define GEN7_WM_LINE_STIPPLE_ENABLE                            (1 << 3)
21003b705cfSriastradh# define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT                     (1 << 2)
21103b705cfSriastradh# define GEN7_WM_MSRAST_OFF_PIXEL                               (0 << 0)
21203b705cfSriastradh# define GEN7_WM_MSRAST_OFF_PATTERN                             (1 << 0)
21303b705cfSriastradh# define GEN7_WM_MSRAST_ON_PIXEL                                (2 << 0)
21403b705cfSriastradh# define GEN7_WM_MSRAST_ON_PATTERN                              (3 << 0)
21503b705cfSriastradh/* DW2 */
21603b705cfSriastradh# define GEN7_WM_MSDISPMODE_PERPIXEL                            (1 << 31)
21703b705cfSriastradh
21803b705cfSriastradh#define GEN7_3DSTATE_CLEAR_PARAMS               BRW_3D(3, 0, 0x04)
21903b705cfSriastradh#define GEN7_3DSTATE_DEPTH_BUFFER               BRW_3D(3, 0, 0x05)
22003b705cfSriastradh
22103b705cfSriastradh#define GEN7_3DSTATE_CONSTANT_HS                BRW_3D(3, 0, 0x19)
22203b705cfSriastradh#define GEN7_3DSTATE_CONSTANT_DS                BRW_3D(3, 0, 0x1a)
22303b705cfSriastradh
22403b705cfSriastradh#define GEN7_3DSTATE_HS                         BRW_3D(3, 0, 0x1b)
22503b705cfSriastradh#define GEN7_3DSTATE_TE                         BRW_3D(3, 0, 0x1c)
22603b705cfSriastradh#define GEN7_3DSTATE_DS                         BRW_3D(3, 0, 0x1d)
22703b705cfSriastradh#define GEN7_3DSTATE_STREAMOUT                  BRW_3D(3, 0, 0x1e)
22803b705cfSriastradh#define GEN7_3DSTATE_SBE                        BRW_3D(3, 0, 0x1f)
22903b705cfSriastradh
23003b705cfSriastradh/* DW1 */
23103b705cfSriastradh# define GEN7_SBE_SWIZZLE_CONTROL_MODE          (1 << 28)
23203b705cfSriastradh# define GEN7_SBE_NUM_OUTPUTS_SHIFT             22
23303b705cfSriastradh# define GEN7_SBE_SWIZZLE_ENABLE                (1 << 21)
23403b705cfSriastradh# define GEN7_SBE_POINT_SPRITE_LOWERLEFT        (1 << 20)
23503b705cfSriastradh# define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT   11
23603b705cfSriastradh# define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT   4
23703b705cfSriastradh
23803b705cfSriastradh#define GEN7_3DSTATE_PS                                 BRW_3D(3, 0, 0x20)
23903b705cfSriastradh/* DW1: kernel pointer */
24003b705cfSriastradh/* DW2 */
24103b705cfSriastradh# define GEN7_PS_SPF_MODE                               (1 << 31)
24203b705cfSriastradh# define GEN7_PS_VECTOR_MASK_ENABLE                     (1 << 30)
24303b705cfSriastradh# define GEN7_PS_SAMPLER_COUNT_SHIFT                    27
24403b705cfSriastradh# define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT        18
24503b705cfSriastradh# define GEN7_PS_FLOATING_POINT_MODE_IEEE_754           (0 << 16)
24603b705cfSriastradh# define GEN7_PS_FLOATING_POINT_MODE_ALT                (1 << 16)
24703b705cfSriastradh/* DW3: scratch space */
24803b705cfSriastradh/* DW4 */
24903b705cfSriastradh# define GEN7_PS_MAX_THREADS_SHIFT_IVB                  24
25003b705cfSriastradh# define GEN7_PS_MAX_THREADS_SHIFT_HSW                  23
25103b705cfSriastradh# define GEN7_PS_SAMPLE_MASK_SHIFT_HSW			12
25203b705cfSriastradh# define GEN7_PS_PUSH_CONSTANT_ENABLE                   (1 << 11)
25303b705cfSriastradh# define GEN7_PS_ATTRIBUTE_ENABLE                       (1 << 10)
25403b705cfSriastradh# define GEN7_PS_OMASK_TO_RENDER_TARGET                 (1 << 9)
25503b705cfSriastradh# define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE               (1 << 7)
25603b705cfSriastradh# define GEN7_PS_POSOFFSET_NONE                         (0 << 3)
25703b705cfSriastradh# define GEN7_PS_POSOFFSET_CENTROID                     (2 << 3)
25803b705cfSriastradh# define GEN7_PS_POSOFFSET_SAMPLE                       (3 << 3)
25903b705cfSriastradh# define GEN7_PS_32_DISPATCH_ENABLE                     (1 << 2)
26003b705cfSriastradh# define GEN7_PS_16_DISPATCH_ENABLE                     (1 << 1)
26103b705cfSriastradh# define GEN7_PS_8_DISPATCH_ENABLE                      (1 << 0)
26203b705cfSriastradh/* DW5 */
26303b705cfSriastradh# define GEN7_PS_DISPATCH_START_GRF_SHIFT_0             16
26403b705cfSriastradh# define GEN7_PS_DISPATCH_START_GRF_SHIFT_1             8
26503b705cfSriastradh# define GEN7_PS_DISPATCH_START_GRF_SHIFT_2             0
26603b705cfSriastradh/* DW6: kernel 1 pointer */
26703b705cfSriastradh/* DW7: kernel 2 pointer */
26803b705cfSriastradh
26903b705cfSriastradh#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL      BRW_3D(3, 0, 0x21)
27003b705cfSriastradh#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC         BRW_3D(3, 0, 0x23)
27103b705cfSriastradh
27203b705cfSriastradh#define GEN7_3DSTATE_BLEND_STATE_POINTERS               BRW_3D(3, 0, 0x24)
27303b705cfSriastradh#define GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS       BRW_3D(3, 0, 0x25)
27403b705cfSriastradh
27503b705cfSriastradh#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS          BRW_3D(3, 0, 0x26)
27603b705cfSriastradh#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS          BRW_3D(3, 0, 0x27)
27703b705cfSriastradh#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS          BRW_3D(3, 0, 0x28)
27803b705cfSriastradh#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS          BRW_3D(3, 0, 0x29)
27903b705cfSriastradh#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS          BRW_3D(3, 0, 0x2a)
28003b705cfSriastradh
28103b705cfSriastradh#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS          BRW_3D(3, 0, 0x2b)
28203b705cfSriastradh#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS          BRW_3D(3, 0, 0x2e)
28303b705cfSriastradh#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS          BRW_3D(3, 0, 0x2f)
28403b705cfSriastradh
28503b705cfSriastradh#define GEN7_3DSTATE_URB_VS                             BRW_3D(3, 0, 0x30)
28603b705cfSriastradh#define GEN7_3DSTATE_URB_HS                             BRW_3D(3, 0, 0x31)
28703b705cfSriastradh#define GEN7_3DSTATE_URB_DS                             BRW_3D(3, 0, 0x32)
28803b705cfSriastradh#define GEN7_3DSTATE_URB_GS                             BRW_3D(3, 0, 0x33)
28903b705cfSriastradh/* DW1 */
29003b705cfSriastradh# define GEN7_URB_ENTRY_NUMBER_SHIFT            0
29103b705cfSriastradh# define GEN7_URB_ENTRY_SIZE_SHIFT              16
29203b705cfSriastradh# define GEN7_URB_STARTING_ADDRESS_SHIFT        25
29303b705cfSriastradh
29403b705cfSriastradh#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS             BRW_3D(3, 1, 0x12)
29503b705cfSriastradh#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS             BRW_3D(3, 1, 0x16)
29603b705cfSriastradh/* DW1 */
29703b705cfSriastradh# define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16
29803b705cfSriastradh
29903b705cfSriastradh
30003b705cfSriastradh#define PIPELINE_SELECT_3D		0
30103b705cfSriastradh#define PIPELINE_SELECT_MEDIA		1
30203b705cfSriastradh
30303b705cfSriastradh#define UF0_CS_REALLOC			(1 << 13)
30403b705cfSriastradh#define UF0_VFE_REALLOC			(1 << 12)
30503b705cfSriastradh#define UF0_SF_REALLOC			(1 << 11)
30603b705cfSriastradh#define UF0_CLIP_REALLOC		(1 << 10)
30703b705cfSriastradh#define UF0_GS_REALLOC			(1 << 9)
30803b705cfSriastradh#define UF0_VS_REALLOC			(1 << 8)
30903b705cfSriastradh#define UF1_CLIP_FENCE_SHIFT		20
31003b705cfSriastradh#define UF1_GS_FENCE_SHIFT		10
31103b705cfSriastradh#define UF1_VS_FENCE_SHIFT		0
31203b705cfSriastradh#define UF2_CS_FENCE_SHIFT		20
31303b705cfSriastradh#define UF2_VFE_FENCE_SHIFT		10
31403b705cfSriastradh#define UF2_SF_FENCE_SHIFT		0
31503b705cfSriastradh
31603b705cfSriastradh/* for BRW_STATE_BASE_ADDRESS */
31703b705cfSriastradh#define BASE_ADDRESS_MODIFY		(1 << 0)
31803b705cfSriastradh
31903b705cfSriastradh/* for BRW_3DSTATE_PIPELINED_POINTERS */
32003b705cfSriastradh#define BRW_GS_DISABLE		       0
32103b705cfSriastradh#define BRW_GS_ENABLE		       1
32203b705cfSriastradh#define BRW_CLIP_DISABLE	       0
32303b705cfSriastradh#define BRW_CLIP_ENABLE		       1
32403b705cfSriastradh
32503b705cfSriastradh/* for BRW_PIPE_CONTROL */
32603b705cfSriastradh#define BRW_PIPE_CONTROL_CS_STALL      (1 << 20)
32703b705cfSriastradh#define BRW_PIPE_CONTROL_NOWRITE       (0 << 14)
32803b705cfSriastradh#define BRW_PIPE_CONTROL_WRITE_QWORD   (1 << 14)
32903b705cfSriastradh#define BRW_PIPE_CONTROL_WRITE_DEPTH   (2 << 14)
33003b705cfSriastradh#define BRW_PIPE_CONTROL_WRITE_TIME    (3 << 14)
33103b705cfSriastradh#define BRW_PIPE_CONTROL_DEPTH_STALL   (1 << 13)
33203b705cfSriastradh#define BRW_PIPE_CONTROL_WC_FLUSH      (1 << 12)
33303b705cfSriastradh#define BRW_PIPE_CONTROL_IS_FLUSH      (1 << 11)
33403b705cfSriastradh#define BRW_PIPE_CONTROL_TC_FLUSH      (1 << 10)
33503b705cfSriastradh#define BRW_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8)
33603b705cfSriastradh#define BRW_PIPE_CONTROL_GLOBAL_GTT    (1 << 2)
33703b705cfSriastradh#define BRW_PIPE_CONTROL_LOCAL_PGTT    (0 << 2)
33803b705cfSriastradh#define BRW_PIPE_CONTROL_STALL_AT_SCOREBOARD    (1 << 1)
33903b705cfSriastradh#define BRW_PIPE_CONTROL_DEPTH_CACHE_FLUSH	(1 << 0)
34003b705cfSriastradh
34103b705cfSriastradh/* VERTEX_BUFFER_STATE Structure */
34203b705cfSriastradh#define VB0_BUFFER_INDEX_SHIFT		27
34303b705cfSriastradh#define GEN6_VB0_BUFFER_INDEX_SHIFT	26
34403b705cfSriastradh#define VB0_VERTEXDATA			(0 << 26)
34503b705cfSriastradh#define VB0_INSTANCEDATA		(1 << 26)
34603b705cfSriastradh#define GEN6_VB0_VERTEXDATA		(0 << 20)
34703b705cfSriastradh#define GEN6_VB0_INSTANCEDATA		(1 << 20)
34803b705cfSriastradh#define VB0_BUFFER_PITCH_SHIFT		0
34903b705cfSriastradh
35003b705cfSriastradh/* VERTEX_ELEMENT_STATE Structure */
35103b705cfSriastradh#define VE0_VERTEX_BUFFER_INDEX_SHIFT	27
35203b705cfSriastradh#define GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT	26 /* for GEN6 */
35303b705cfSriastradh#define VE0_VALID			(1 << 26)
35403b705cfSriastradh#define GEN6_VE0_VALID			(1 << 25) /* for GEN6 */
35503b705cfSriastradh#define VE0_FORMAT_SHIFT		16
35603b705cfSriastradh#define VE0_OFFSET_SHIFT		0
35703b705cfSriastradh#define VE1_VFCOMPONENT_0_SHIFT		28
35803b705cfSriastradh#define VE1_VFCOMPONENT_1_SHIFT		24
35903b705cfSriastradh#define VE1_VFCOMPONENT_2_SHIFT		20
36003b705cfSriastradh#define VE1_VFCOMPONENT_3_SHIFT		16
36103b705cfSriastradh#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT	0
36203b705cfSriastradh
36303b705cfSriastradh/* 3DPRIMITIVE bits */
36403b705cfSriastradh#define BRW_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15)
36503b705cfSriastradh#define BRW_3DPRIMITIVE_VERTEX_RANDOM	  (1 << 15)
36603b705cfSriastradh/* Primitive types are in brw_defines.h */
36703b705cfSriastradh#define BRW_3DPRIMITIVE_TOPOLOGY_SHIFT	  10
36803b705cfSriastradh
36903b705cfSriastradh#define BRW_SVG_CTL		       0x7400
37003b705cfSriastradh
37103b705cfSriastradh#define BRW_SVG_CTL_GS_BA	       (0 << 8)
37203b705cfSriastradh#define BRW_SVG_CTL_SS_BA	       (1 << 8)
37303b705cfSriastradh#define BRW_SVG_CTL_IO_BA	       (2 << 8)
37403b705cfSriastradh#define BRW_SVG_CTL_GS_AUB	       (3 << 8)
37503b705cfSriastradh#define BRW_SVG_CTL_IO_AUB	       (4 << 8)
37603b705cfSriastradh#define BRW_SVG_CTL_SIP		       (5 << 8)
37703b705cfSriastradh
37803b705cfSriastradh#define BRW_SVG_RDATA		       0x7404
37903b705cfSriastradh#define BRW_SVG_WORK_CTL	       0x7408
38003b705cfSriastradh
38103b705cfSriastradh#define BRW_VF_CTL		       0x7500
38203b705cfSriastradh
38303b705cfSriastradh#define BRW_VF_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
38403b705cfSriastradh#define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID	   (0 << 8)
38503b705cfSriastradh#define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG	   (1 << 8)
38603b705cfSriastradh#define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE   (0 << 4)
38703b705cfSriastradh#define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX	   (1 << 4)
38803b705cfSriastradh#define BRW_VF_CTL_SKIP_INITIAL_PRIMITIVES	   (1 << 3)
38903b705cfSriastradh#define BRW_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE	   (1 << 2)
39003b705cfSriastradh#define BRW_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE	   (1 << 1)
39103b705cfSriastradh#define BRW_VF_CTL_SNAPSHOT_ENABLE	     	   (1 << 0)
39203b705cfSriastradh
39303b705cfSriastradh#define BRW_VF_STRG_VAL		       0x7504
39403b705cfSriastradh#define BRW_VF_STR_VL_OVR	       0x7508
39503b705cfSriastradh#define BRW_VF_VC_OVR		       0x750c
39603b705cfSriastradh#define BRW_VF_STR_PSKIP	       0x7510
39703b705cfSriastradh#define BRW_VF_MAX_PRIM		       0x7514
39803b705cfSriastradh#define BRW_VF_RDATA		       0x7518
39903b705cfSriastradh
40003b705cfSriastradh#define BRW_VS_CTL		       0x7600
40103b705cfSriastradh#define BRW_VS_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
40203b705cfSriastradh#define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_0	   (0 << 8)
40303b705cfSriastradh#define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_1	   (1 << 8)
40403b705cfSriastradh#define BRW_VS_CTL_SNAPSHOT_MUX_VALID_COUNT	   (2 << 8)
40503b705cfSriastradh#define BRW_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER  (3 << 8)
40603b705cfSriastradh#define BRW_VS_CTL_SNAPSHOT_ALL_THREADS		   (1 << 2)
40703b705cfSriastradh#define BRW_VS_CTL_THREAD_SNAPSHOT_ENABLE	   (1 << 1)
40803b705cfSriastradh#define BRW_VS_CTL_SNAPSHOT_ENABLE		   (1 << 0)
40903b705cfSriastradh
41003b705cfSriastradh#define BRW_VS_STRG_VAL		       0x7604
41103b705cfSriastradh#define BRW_VS_RDATA		       0x7608
41203b705cfSriastradh
41303b705cfSriastradh#define BRW_SF_CTL		       0x7b00
41403b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
41503b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID	   (0 << 8)
41603b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8)
41703b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID	   (2 << 8)
41803b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8)
41903b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID	   (4 << 8)
42003b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8)
42103b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT	   (6 << 8)
42203b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER  (7 << 8)
42303b705cfSriastradh#define BRW_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE  (1 << 4)
42403b705cfSriastradh#define BRW_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE	   (1 << 3)
42503b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_ALL_THREADS		   (1 << 2)
42603b705cfSriastradh#define BRW_SF_CTL_THREAD_SNAPSHOT_ENABLE	   (1 << 1)
42703b705cfSriastradh#define BRW_SF_CTL_SNAPSHOT_ENABLE		   (1 << 0)
42803b705cfSriastradh
42903b705cfSriastradh#define BRW_SF_STRG_VAL		       0x7b04
43003b705cfSriastradh#define BRW_SF_RDATA		       0x7b18
43103b705cfSriastradh
43203b705cfSriastradh#define BRW_WIZ_CTL		       0x7c00
43303b705cfSriastradh#define BRW_WIZ_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
43403b705cfSriastradh#define BRW_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT	   16
43503b705cfSriastradh#define BRW_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER   (0 << 8)
43603b705cfSriastradh#define BRW_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE     (1 << 8)
43703b705cfSriastradh#define BRW_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE   (2 << 8)
43803b705cfSriastradh#define BRW_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH	      (1 << 6)
43903b705cfSriastradh#define BRW_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS    (1 << 5)
44003b705cfSriastradh#define BRW_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE   (1 << 4)
44103b705cfSriastradh#define BRW_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG	      (1 << 3)
44203b705cfSriastradh#define BRW_WIZ_CTL_SNAPSHOT_ALL_THREADS	      (1 << 2)
44303b705cfSriastradh#define BRW_WIZ_CTL_THREAD_SNAPSHOT_ENABLE	      (1 << 1)
44403b705cfSriastradh#define BRW_WIZ_CTL_SNAPSHOT_ENABLE		      (1 << 0)
44503b705cfSriastradh
44603b705cfSriastradh#define BRW_WIZ_STRG_VAL			      0x7c04
44703b705cfSriastradh#define BRW_WIZ_RDATA				      0x7c18
44803b705cfSriastradh
44903b705cfSriastradh#define BRW_TS_CTL		       0x7e00
45003b705cfSriastradh#define BRW_TS_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
45103b705cfSriastradh#define BRW_TS_CTL_SNAPSHOT_MESSAGE_ERROR	   (0 << 8)
45203b705cfSriastradh#define BRW_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR   (3 << 8)
45303b705cfSriastradh#define BRW_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS	   (1 << 2)
45403b705cfSriastradh#define BRW_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS  	   (1 << 1)
45503b705cfSriastradh#define BRW_TS_CTL_SNAPSHOT_ENABLE		   (1 << 0)
45603b705cfSriastradh
45703b705cfSriastradh#define BRW_TS_STRG_VAL		       0x7e04
45803b705cfSriastradh#define BRW_TS_RDATA		       0x7e08
45903b705cfSriastradh
46003b705cfSriastradh#define BRW_TD_CTL		       0x8000
46103b705cfSriastradh#define BRW_TD_CTL_MUX_SHIFT	       8
46203b705cfSriastradh#define BRW_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH	   (1 << 7)
46303b705cfSriastradh#define BRW_TD_CTL_FORCE_EXTERNAL_HALT		   (1 << 6)
46403b705cfSriastradh#define BRW_TD_CTL_EXCEPTION_MASK_OVERRIDE	   (1 << 5)
46503b705cfSriastradh#define BRW_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE  (1 << 4)
46603b705cfSriastradh#define BRW_TD_CTL_BREAKPOINT_ENABLE		   (1 << 2)
46703b705cfSriastradh#define BRW_TD_CTL2		       0x8004
46803b705cfSriastradh#define BRW_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28)
46903b705cfSriastradh#define BRW_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE      (1 << 26)
47003b705cfSriastradh#define BRW_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE	      (1 << 25)
47103b705cfSriastradh#define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT	      16
47203b705cfSriastradh#define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE	      (1 << 8)
47303b705cfSriastradh#define BRW_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7)
47403b705cfSriastradh#define BRW_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE	      (1 << 6)
47503b705cfSriastradh#define BRW_TD_CTL2_SF_EXECUTION_MASK_ENABLE	      (1 << 5)
47603b705cfSriastradh#define BRW_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE     (1 << 4)
47703b705cfSriastradh#define BRW_TD_CTL2_GS_EXECUTION_MASK_ENABLE	      (1 << 3)
47803b705cfSriastradh#define BRW_TD_CTL2_VS_EXECUTION_MASK_ENABLE	      (1 << 0)
47903b705cfSriastradh#define BRW_TD_VF_VS_EMSK	       0x8008
48003b705cfSriastradh#define BRW_TD_GS_EMSK		       0x800c
48103b705cfSriastradh#define BRW_TD_CLIP_EMSK	       0x8010
48203b705cfSriastradh#define BRW_TD_SF_EMSK		       0x8014
48303b705cfSriastradh#define BRW_TD_WIZ_EMSK		       0x8018
48403b705cfSriastradh#define BRW_TD_0_6_EHTRG_VAL	       0x801c
48503b705cfSriastradh#define BRW_TD_0_7_EHTRG_VAL	       0x8020
48603b705cfSriastradh#define BRW_TD_0_6_EHTRG_MSK           0x8024
48703b705cfSriastradh#define BRW_TD_0_7_EHTRG_MSK	       0x8028
48803b705cfSriastradh#define BRW_TD_RDATA		       0x802c
48903b705cfSriastradh#define BRW_TD_TS_EMSK		       0x8030
49003b705cfSriastradh
49103b705cfSriastradh#define BRW_EU_CTL		       0x8800
49203b705cfSriastradh#define BRW_EU_CTL_SELECT_SHIFT	       16
49303b705cfSriastradh#define BRW_EU_CTL_DATA_MUX_SHIFT      8
49403b705cfSriastradh#define BRW_EU_ATT_0		       0x8810
49503b705cfSriastradh#define BRW_EU_ATT_1		       0x8814
49603b705cfSriastradh#define BRW_EU_ATT_DATA_0	       0x8820
49703b705cfSriastradh#define BRW_EU_ATT_DATA_1	       0x8824
49803b705cfSriastradh#define BRW_EU_ATT_CLR_0	       0x8830
49903b705cfSriastradh#define BRW_EU_ATT_CLR_1	       0x8834
50003b705cfSriastradh#define BRW_EU_RDATA		       0x8840
50103b705cfSriastradh
50203b705cfSriastradh/* End regs for broadwater */
50303b705cfSriastradh
504