19f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/*
29f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt Copyright (C) Intel Corp.  2006.  All Rights Reserved.
39f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to
49f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt develop this 3D driver.
59f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
69f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt Permission is hereby granted, free of charge, to any person obtaining
79f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt a copy of this software and associated documentation files (the
89f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt "Software"), to deal in the Software without restriction, including
99f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt without limitation the rights to use, copy, modify, merge, publish,
109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt distribute, sublicense, and/or sell copies of the Software, and to
119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt permit persons to whom the Software is furnished to do so, subject to
129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt the following conditions:
139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt The above copyright notice and this permission notice (including the
159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt next paragraph) shall be included in all copies or substantial
169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt portions of the Software.
179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt **********************************************************************/
279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt /*
289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt  * Authors:
299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt  *   Keith Whitwell <keith@tungstengraphics.com>
309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt  */
317d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt
327d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define INTEL_MASK(high, low) (((1<<((high)-(low)+1))-1)<<(low))
337d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define SET_FIELD(value, field) (((value) << field ## _SHIFT) & field ## _MASK)
347d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define GET_FIELD(word, field) (((word)  & field ## _MASK) >> field ## _SHIFT)
359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#ifndef BRW_DEFINES_H
379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEFINES_H
389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* 3D state:
409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */
419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_NOWRITE          0x00
429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_WRITEIMMEDIATE   0x01
439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_WRITEDEPTH       0x02
449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_WRITETIMESTAMP   0x03
459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_GTTWRITE_PROCESS_LOCAL 0x00
479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_GTTWRITE_GLOBAL        0x01
489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
49ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke#define CMD_3D_PRIM                                 0x7b00 /* 3DPRIMITIVE */
50ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke/* DW0 */
51ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke# define GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT            10
52ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 15)
53ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM     (1 << 15)
54550ad737f77cfae9abf2db1638711713ad9d920eKenneth Graunke/* DW1 */
55550ad737f77cfae9abf2db1638711713ad9d920eKenneth Graunke# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 8)
56550ad737f77cfae9abf2db1638711713ad9d920eKenneth Graunke# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM     (1 << 8)
57ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke
589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_POINTLIST         0x01
599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINELIST          0x02
609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP         0x03
619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRILIST           0x04
629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRISTRIP          0x05
639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRIFAN            0x06
649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_QUADLIST          0x07
659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_QUADSTRIP         0x08
669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINELIST_ADJ      0x09
679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_ADJ     0x0A
689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRILIST_ADJ       0x0B
699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRISTRIP_ADJ      0x0C
709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRISTRIP_REVERSE  0x0D
719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_POLYGON           0x0E
729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_RECTLIST          0x0F
739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINELOOP          0x10
749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_POINTLIST_BF      0x11
759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_CONT    0x12
769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_BF      0x13
779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_CONT_BF 0x14
789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRIFAN_NOSTIPPLE  0x15
799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_2     0
819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_4     1
829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_6     2
839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_8     3
849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_10    4
859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_12    5
869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_14    6
879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_16    7
889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_ONE                 0x1
909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC_COLOR           0x2
919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC_ALPHA           0x3
929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_DST_ALPHA           0x4
939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_DST_COLOR           0x5
949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC_ALPHA_SATURATE  0x6
959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_CONST_COLOR         0x7
969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_CONST_ALPHA         0x8
979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC1_COLOR          0x9
989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC1_ALPHA          0x0A
999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_ZERO                0x11
1009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC_COLOR       0x12
1019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC_ALPHA       0x13
1029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_DST_ALPHA       0x14
1039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_DST_COLOR       0x15
1049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_CONST_COLOR     0x17
1059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_CONST_ALPHA     0x18
1069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC1_COLOR      0x19
1079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC1_ALPHA      0x1A
1089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_ADD               0
1109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_SUBTRACT          1
1119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_REVERSE_SUBTRACT  2
1129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_MIN               3
1139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_MAX               4
1149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALPHATEST_FORMAT_UNORM8         0
1169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALPHATEST_FORMAT_FLOAT32        1
1179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHROMAKEY_KILL_ON_ANY_MATCH  0
1199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHROMAKEY_REPLACE_BLACK      1
1209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_API_OGL     0
1229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_API_DX      1
1239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_NORMAL              0
1259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_CLIP_ALL            1
1269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_CLIP_NON_REJECTED   2
1279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_REJECT_ALL          3
1289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_ACCEPT_ALL          4
1292995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_CLIPMODE_KERNEL_CLIP         5
1309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_NDCSPACE     0
1329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_SCREENSPACE  1
1339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_ALWAYS       0
1359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_NEVER        1
1369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_LESS         2
1379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_EQUAL        3
1389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_LEQUAL       4
1399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_GREATER      5
1409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_NOTEQUAL     6
1419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_GEQUAL       7
1429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_HALF     0
1449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_1        1
1459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_2        2
1469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_4        3
1479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_BOTH        0
1499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_NONE        1
1509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_FRONT       2
1519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_BACK        3
1529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEFAULTCOLOR_R8G8B8A8_UNORM      0
1549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEFAULTCOLOR_R32G32B32A32_FLOAT  1
1559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D32_FLOAT_S8X24_UINT     0
1579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D32_FLOAT                1
1589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D24_UNORM_S8_UINT        2
1594d7c1871671710865be3020e0d460e0463707f14Chad Versace#define BRW_DEPTHFORMAT_D24_UNORM_X8_UINT        3 /* GEN5 */
1609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D16_UNORM                5
1619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FLOATING_POINT_IEEE_754        0
1639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FLOATING_POINT_NON_IEEE_754    1
1649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FRONTWINDING_CW      0
1669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FRONTWINDING_CCW     1
1679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
168505453a04e8ba5e394c34401bd9ec320ffce2423Zou Nan hai#define BRW_SPRITE_POINT_ENABLE  16
169505453a04e8ba5e394c34401bd9ec320ffce2423Zou Nan hai
170f9389fbfb204995a650047949c48ab2b2703bfcfJordan Justen#define BRW_CUT_INDEX_ENABLE     (1 << 10)
171f9389fbfb204995a650047949c48ab2b2703bfcfJordan Justen
1729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INDEX_BYTE     0
1739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INDEX_WORD     1
1749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INDEX_DWORD    2
1759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_CLEAR            0
1779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_NOR              1
1789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_AND_INVERTED     2
1799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_COPY_INVERTED    3
1809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_AND_REVERSE      4
1819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_INVERT           5
1829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_XOR              6
1839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_NAND             7
1849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_AND              8
1859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_EQUIV            9
1869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_NOOP             10
1879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_OR_INVERTED      11
1889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_COPY             12
1899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_OR_REVERSE       13
1909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_OR               14
1919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_SET              15
1929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MAPFILTER_NEAREST        0x0
1949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MAPFILTER_LINEAR         0x1
1959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MAPFILTER_ANISOTROPIC    0x2
1969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MIPFILTER_NONE        0
1989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MIPFILTER_NEAREST     1
1999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MIPFILTER_LINEAR      3
2009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
20176669381c0de6a49a1edd0b88fa1ae6b86f10b30Yuanhan Liu#define BRW_ADDRESS_ROUNDING_ENABLE_U_MAG	0x20
20276669381c0de6a49a1edd0b88fa1ae6b86f10b30Yuanhan Liu#define BRW_ADDRESS_ROUNDING_ENABLE_U_MIN	0x10
20376669381c0de6a49a1edd0b88fa1ae6b86f10b30Yuanhan Liu#define BRW_ADDRESS_ROUNDING_ENABLE_V_MAG	0x08
20476669381c0de6a49a1edd0b88fa1ae6b86f10b30Yuanhan Liu#define BRW_ADDRESS_ROUNDING_ENABLE_V_MIN	0x04
20576669381c0de6a49a1edd0b88fa1ae6b86f10b30Yuanhan Liu#define BRW_ADDRESS_ROUNDING_ENABLE_R_MAG	0x02
20676669381c0de6a49a1edd0b88fa1ae6b86f10b30Yuanhan Liu#define BRW_ADDRESS_ROUNDING_ENABLE_R_MIN	0x01
20776669381c0de6a49a1edd0b88fa1ae6b86f10b30Yuanhan Liu
2089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_FRONT_FACING     0
2099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_BACK_FACING      1
2109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_ALWAYS     0x0
2129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_NEVER      0x1
2139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_LESS       0x2
2149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_EQUAL      0x3
2159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_LEQUAL     0x4
2169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_GREATER    0x5
2179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_NOTEQUAL   0x6
2189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_GEQUAL     0x7
2199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PROVOKING_VERTEX_0    0
2219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PROVOKING_VERTEX_1    1
2229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PROVOKING_VERTEX_2    2
2239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RASTRULE_UPPER_LEFT  0
2259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RASTRULE_UPPER_RIGHT 1
226cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison/* These are listed as "Reserved, but not seen as useful"
227cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * in Intel documentation (page 212, "Point Rasterization Rule",
228cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * section 7.4 "SF Pipeline State Summary", of document
229cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * "Intel® 965 Express Chipset Family and Intel® G35 Express
230cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * Chipset Graphics Controller Programmer's Reference Manual,
231cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * Volume 2: 3D/Media", Revision 1.0b as of January 2008,
232cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * available at
233cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison *     http://intellinuxgraphics.org/documentation.html
234cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * at the time of this writing).
235cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison *
236cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * These appear to be supported on at least some
237cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * i965-family devices, and the BRW_RASTRULE_LOWER_RIGHT
238cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * is useful when using OpenGL to render to a FBO
239cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * (which has the pixel coordinate Y orientation inverted
240cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * with respect to the normal OpenGL pixel coordinate system).
241cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison */
242cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison#define BRW_RASTRULE_LOWER_LEFT  2
243cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison#define BRW_RASTRULE_LOWER_RIGHT 3
2449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RENDERTARGET_CLAMPRANGE_UNORM    0
2469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RENDERTARGET_CLAMPRANGE_SNORM    1
2479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RENDERTARGET_CLAMPRANGE_FORMAT   2
2489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_KEEP               0
2509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_ZERO               1
2519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_REPLACE            2
2529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_INCRSAT            3
2539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_DECRSAT            4
2549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_INCR               5
2559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_DECR               6
2569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_INVERT             7
2579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2587d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt/* Surface state DW0 */
2599bdc44a52804a64219a0ca1a061b18596863e524Eric Anholt#define BRW_SURFACE_RC_READ_WRITE	(1 << 8)
2607d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_MIPLAYOUT_SHIFT	10
2619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_MIPMAPLAYOUT_BELOW   0
2629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_MIPMAPLAYOUT_RIGHT   1
2637d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_CUBEFACE_ENABLES	0x3f
264ac11c01ddeccf34230f363c0723783a1e2fce555Eric Anholt#define BRW_SURFACE_BLEND_ENABLED	(1 << 13)
265ac11c01ddeccf34230f363c0723783a1e2fce555Eric Anholt#define BRW_SURFACE_WRITEDISABLE_B_SHIFT	14
266ac11c01ddeccf34230f363c0723783a1e2fce555Eric Anholt#define BRW_SURFACE_WRITEDISABLE_G_SHIFT	15
267ac11c01ddeccf34230f363c0723783a1e2fce555Eric Anholt#define BRW_SURFACE_WRITEDISABLE_R_SHIFT	16
268ac11c01ddeccf34230f363c0723783a1e2fce555Eric Anholt#define BRW_SURFACE_WRITEDISABLE_A_SHIFT	17
2699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_FLOAT             0x000
2719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_SINT              0x001
2729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_UINT              0x002
2739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_UNORM             0x003
2749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_SNORM             0x004
2759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64G64_FLOAT                   0x005
2769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32X32_FLOAT             0x006
2779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_SSCALED           0x007
2789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_USCALED           0x008
2799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_FLOAT                0x040
2809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_SINT                 0x041
2819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_UINT                 0x042
2829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_UNORM                0x043
2839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_SNORM                0x044
2849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_SSCALED              0x045
2859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_USCALED              0x046
2869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_UNORM             0x080
2879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_SNORM             0x081
2889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_SINT              0x082
2899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_UINT              0x083
2909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_FLOAT             0x084
2919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_FLOAT                   0x085
2929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_SINT                    0x086
2939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_UINT                    0x087
2949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS       0x088
2959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT        0x089
2969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L32A32_FLOAT                   0x08A
2979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_UNORM                   0x08B
2989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_SNORM                   0x08C
2999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64_FLOAT                      0x08D
3009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16X16_UNORM             0x08E
3019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16X16_FLOAT             0x08F
3029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A32X32_FLOAT                   0x090
3039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L32X32_FLOAT                   0x091
3049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I32X32_FLOAT                   0x092
3059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_SSCALED           0x093
3069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_USCALED           0x094
3079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_SSCALED                 0x095
3089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_USCALED                 0x096
3099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8A8_UNORM                 0x0C0
3109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB            0x0C1
3119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10A2_UNORM              0x0C2
3129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB         0x0C3
3139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10A2_UINT               0x0C4
3149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM       0x0C5
3159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_UNORM                 0x0C7
3169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB            0x0C8
3179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_SNORM                 0x0C9
3189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_SINT                  0x0CA
3199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_UINT                  0x0CB
3209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_UNORM                   0x0CC
3219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_SNORM                   0x0CD
3229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_SINT                    0x0CE
3239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_UINT                    0x0CF
3249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_FLOAT                   0x0D0
3259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B10G10R10A2_UNORM              0x0D1
3269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB         0x0D2
3279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R11G11B10_FLOAT                0x0D3
3289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_SINT                       0x0D6
3299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_UINT                       0x0D7
3309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_FLOAT                      0x0D8
3319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R24_UNORM_X8_TYPELESS          0x0D9
3329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_X24_TYPELESS_G8_UINT           0x0DA
3339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16A16_UNORM                   0x0DF
3349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I24X8_UNORM                    0x0E0
3359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L24X8_UNORM                    0x0E1
3369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A24X8_UNORM                    0x0E2
3379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I32_FLOAT                      0x0E3
3389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L32_FLOAT                      0x0E4
3399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A32_FLOAT                      0x0E5
3409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8X8_UNORM                 0x0E9
3419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB            0x0EA
3429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8X8_UNORM                 0x0EB
3439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB            0x0EC
3449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP             0x0ED
3459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B10G10R10X2_UNORM              0x0EE
3469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16A16_FLOAT                   0x0F0
3479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_UNORM                      0x0F1
3489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_SNORM                      0x0F2
3499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10X2_USCALED            0x0F3
3509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_SSCALED               0x0F4
3519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_USCALED               0x0F5
3529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_SSCALED                 0x0F6
3539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_USCALED                 0x0F7
3549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_SSCALED                    0x0F8
3559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_USCALED                    0x0F9
3569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G6R5_UNORM                   0x100
3579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G6R5_UNORM_SRGB              0x101
3589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G5R5A1_UNORM                 0x102
3599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB            0x103
3609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B4G4R4A4_UNORM                 0x104
3619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB            0x105
3629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_UNORM                     0x106
3639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_SNORM                     0x107
3649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_SINT                      0x108
3659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_UINT                      0x109
3669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_UNORM                      0x10A
3679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_SNORM                      0x10B
3689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_SINT                       0x10C
3699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_UINT                       0x10D
3709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_FLOAT                      0x10E
3719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I16_UNORM                      0x111
3729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16_UNORM                      0x112
3739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A16_UNORM                      0x113
3749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L8A8_UNORM                     0x114
3759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I16_FLOAT                      0x115
3769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16_FLOAT                      0x116
377a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_A16_FLOAT                      0x117
378a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_L8A8_UNORM_SRGB                0x118
379a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_R5G5_SNORM_B6_UNORM            0x119
380a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_B5G5R5X1_UNORM                 0x11A
3819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB            0x11B
3829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_SSCALED                   0x11C
3839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_USCALED                   0x11D
3849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_SSCALED                    0x11E
3859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_USCALED                    0x11F
3869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_UNORM                       0x140
3879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_SNORM                       0x141
3889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_SINT                        0x142
3899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_UINT                        0x143
3909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A8_UNORM                       0x144
3919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I8_UNORM                       0x145
3929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L8_UNORM                       0x146
3939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_P4A4_UNORM                     0x147
3949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A4P4_UNORM                     0x148
3959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_SSCALED                     0x149
3969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_USCALED                     0x14A
397a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_L8_UNORM_SRGB                  0x14C
39806cb1a6a5bdba5654408e3568584e1ab168266b7Eric Anholt#define BRW_SURFACEFORMAT_DXT1_RGB_SRGB                  0x180
3999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R1_UINT                        0x181
4009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_NORMAL                   0x182
4019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_SWAPUVY                  0x183
4029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC1_UNORM                      0x186
4039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC2_UNORM                      0x187
4049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC3_UNORM                      0x188
4059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC4_UNORM                      0x189
4069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC5_UNORM                      0x18A
4079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC1_UNORM_SRGB                 0x18B
4089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC2_UNORM_SRGB                 0x18C
4099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC3_UNORM_SRGB                 0x18D
4109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_MONO8                          0x18E
4119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_SWAPUV                   0x18F
4129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_SWAPY                    0x190
4139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_DXT1_RGB                       0x191
4149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_FXT1                           0x192
4159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_UNORM                   0x193
4169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_SNORM                   0x194
4179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_SSCALED                 0x195
4189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_USCALED                 0x196
4199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64G64B64A64_FLOAT             0x197
4209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64G64B64_FLOAT                0x198
4219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC4_SNORM                      0x199
4229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC5_SNORM                      0x19A
4239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_UNORM                0x19C
4249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_SNORM                0x19D
4259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_SSCALED              0x19E
4269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_USCALED              0x19F
4277d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_FORMAT_SHIFT	18
4287d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_FORMAT_MASK		INTEL_MASK(26, 18)
4299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACERETURNFORMAT_FLOAT32  0
4319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACERETURNFORMAT_S1       1
4329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4337d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_TYPE_SHIFT		29
4347d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_TYPE_MASK		INTEL_MASK(31, 29)
4359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_1D      0
4369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_2D      1
4379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_3D      2
4389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_CUBE    3
4399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_BUFFER  4
4409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_NULL    7
4419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4420e11b2c5afca456e19b1c29889dde449a4072edePaul Berry#define GEN7_SURFACE_ARYSPC_FULL	0
4430e11b2c5afca456e19b1c29889dde449a4072edePaul Berry#define GEN7_SURFACE_ARYSPC_LOD0	1
4440e11b2c5afca456e19b1c29889dde449a4072edePaul Berry
4457d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt/* Surface state DW2 */
4467d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_HEIGHT_SHIFT	19
4477d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_HEIGHT_MASK		INTEL_MASK(31, 19)
4487d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_WIDTH_SHIFT		6
4497d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_WIDTH_MASK		INTEL_MASK(18, 6)
4507d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_LOD_SHIFT		2
4517d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_LOD_MASK		INTEL_MASK(5, 2)
4527d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt
4537d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt/* Surface state DW3 */
4547d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_DEPTH_SHIFT		21
4557d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_DEPTH_MASK		INTEL_MASK(31, 21)
4567d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_PITCH_SHIFT		3
4577d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_PITCH_MASK		INTEL_MASK(19, 3)
4587d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_TILED		(1 << 1)
4597d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt#define BRW_SURFACE_TILED_Y		(1 << 0)
4607d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt
461ee643b23ff546492c67d4e2b525ced7329a3c020Eric Anholt/* Surface state DW4 */
462ee643b23ff546492c67d4e2b525ced7329a3c020Eric Anholt#define BRW_SURFACE_MIN_LOD_SHIFT	28
463ee643b23ff546492c67d4e2b525ced7329a3c020Eric Anholt#define BRW_SURFACE_MIN_LOD_MASK	INTEL_MASK(31, 28)
46419e9b24626c2b9d7abef054d57bb2a52106c545bPaul Berry#define BRW_SURFACE_MULTISAMPLECOUNT_1  (0 << 4)
46519e9b24626c2b9d7abef054d57bb2a52106c545bPaul Berry#define BRW_SURFACE_MULTISAMPLECOUNT_4  (2 << 4)
46619e9b24626c2b9d7abef054d57bb2a52106c545bPaul Berry#define GEN7_SURFACE_MULTISAMPLECOUNT_1 0
46719e9b24626c2b9d7abef054d57bb2a52106c545bPaul Berry#define GEN7_SURFACE_MULTISAMPLECOUNT_4 2
46819e9b24626c2b9d7abef054d57bb2a52106c545bPaul Berry#define GEN7_SURFACE_MULTISAMPLECOUNT_8 3
4690e11b2c5afca456e19b1c29889dde449a4072edePaul Berry#define GEN7_SURFACE_MSFMT_MSS			0
4700e11b2c5afca456e19b1c29889dde449a4072edePaul Berry#define GEN7_SURFACE_MSFMT_DEPTH_STENCIL	1
471ee643b23ff546492c67d4e2b525ced7329a3c020Eric Anholt
4727d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt/* Surface state DW5 */
473dd0e46c4102976b7d317104ecd1bb565ac34613aChad Versace#define BRW_SURFACE_X_OFFSET_SHIFT		25
474dd0e46c4102976b7d317104ecd1bb565ac34613aChad Versace#define BRW_SURFACE_X_OFFSET_MASK		INTEL_MASK(31, 25)
475dd0e46c4102976b7d317104ecd1bb565ac34613aChad Versace#define BRW_SURFACE_VERTICAL_ALIGN_ENABLE	(1 << 24)
476dd0e46c4102976b7d317104ecd1bb565ac34613aChad Versace#define BRW_SURFACE_Y_OFFSET_SHIFT		20
477dd0e46c4102976b7d317104ecd1bb565ac34613aChad Versace#define BRW_SURFACE_Y_OFFSET_MASK		INTEL_MASK(23, 20)
4787d437b1f7fb64f187125a393eebe1d1c17db9961Eric Anholt
4794848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke/* Surface state DW7 */
4804848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke#define HSW_SCS_ZERO                     0
4814848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke#define HSW_SCS_ONE                      1
4824848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke#define HSW_SCS_RED                      4
4834848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke#define HSW_SCS_GREEN                    5
4844848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke#define HSW_SCS_BLUE                     6
4854848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke#define HSW_SCS_ALPHA                    7
4864848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke
4879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_WRAP            0
4889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_MIRROR          1
4899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_CLAMP           2
4909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_CUBE            3
4919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_CLAMP_BORDER    4
4929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_MIRROR_ONCE     5
4939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_PRIORITY_NORMAL   0
4959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_PRIORITY_HIGH     1
4969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TILEWALK_XMAJOR                 0
4989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TILEWALK_YMAJOR                 1
4999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTEX_SUBPIXEL_PRECISION_8BITS  0
5019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTEX_SUBPIXEL_PRECISION_4BITS  1
5029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* Execution Unit (EU) defines
5049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */
5059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALIGN_1   0
5079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALIGN_16  1
5089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ADDRESS_DIRECT                        0
5109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ADDRESS_REGISTER_INDIRECT_REGISTER    1
5119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_X     0
5139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_Y     1
5149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_Z     2
5159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_W     3
5169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5173f5e938a9ded42ae8dc9ae2486e8d5c8b64cfe07Kenneth Graunkeenum brw_compression {
5183f5e938a9ded42ae8dc9ae2486e8d5c8b64cfe07Kenneth Graunke   BRW_COMPRESSION_NONE       = 0,
5193f5e938a9ded42ae8dc9ae2486e8d5c8b64cfe07Kenneth Graunke   BRW_COMPRESSION_2NDHALF    = 1,
5203f5e938a9ded42ae8dc9ae2486e8d5c8b64cfe07Kenneth Graunke   BRW_COMPRESSION_COMPRESSED = 2,
5213f5e938a9ded42ae8dc9ae2486e8d5c8b64cfe07Kenneth Graunke};
5229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
523245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_1Q		0
524245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_2Q		1
525245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_3Q		2
526245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_4Q		3
527245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_1H		0
528245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_2H		2
529245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt
5309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_NONE  0
5319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_Z     1
5329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_NZ    2
5339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_EQ    1	/* Z */
5349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_NEQ   2	/* NZ */
5359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_G     3
5369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_GE    4
5379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_L     5
5389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_LE    6
5391d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt#define BRW_CONDITIONAL_R     7
5409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_O     8
5411d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt#define BRW_CONDITIONAL_U     9
5429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEBUG_NONE        0
5449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEBUG_BREAKPOINT  1
5459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_NORMAL         0
5479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_NOTCLEARED     1
5489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_NOTCHECKED     2
5499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_DISABLE        3
5509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_1     0
5529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_2     1
5539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_4     2
5549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_8     3
5559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_16    4
5569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_32    5
5579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_0   0
5599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_1   1
5609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_2   2
5619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_4   3
5629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INSTRUCTION_NORMAL    0
5649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INSTRUCTION_SATURATE  1
5659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MASK_ENABLE   0
5679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MASK_DISABLE  1
5689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5695d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/** @{
5705d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt *
5715d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * Gen6 has replaced "mask enable/disable" with WECtrl, which is
5725d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * effectively the same but much simpler to think about.  Now, there
5735d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * are two contributors ANDed together to whether channels are
5745d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * executed: The predication on the instruction, and the channel write
5755d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * enable.
5765d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt */
5775d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/**
5785d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * This is the default value.  It means that a channel's write enable is set
5795d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * if the per-channel IP is pointing at this instruction.
5805d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt */
58104466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang#define BRW_WE_NORMAL		0
5825d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/**
5835d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * This is used like BRW_MASK_DISABLE, and causes all channels to have
5845d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * their write enable set.  Note that predication still contributes to
5855d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * whether the channel actually gets written.
5865d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt */
5875d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt#define BRW_WE_ALL		1
5885d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/** @} */
58904466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang
5906034b9a5124475d300d0678bd2fb6160865fa972Eric Anholtenum opcode {
5916034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   /* These are the actual hardware opcodes. */
5926034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_MOV =	1,
5936034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_SEL =	2,
5946034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_NOT =	4,
5956034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_AND =	5,
5966034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_OR =	6,
5976034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_XOR =	7,
5986034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_SHR =	8,
5996034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_SHL =	9,
6006034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_RSR =	10,
6016034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_RSL =	11,
6026034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_ASR =	12,
6036034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_CMP =	16,
6046034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_CMPN =	17,
6056034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_JMPI =	32,
6066034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_IF =	34,
6076034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_IFF =	35,
6086034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_ELSE =	36,
6096034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_ENDIF =	37,
6106034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_DO =	38,
6116034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_WHILE =	39,
6126034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_BREAK =	40,
6136034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_CONTINUE = 41,
6146034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_HALT =	42,
6156034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_MSAVE =	44,
6166034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_MRESTORE = 45,
6176034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_PUSH =	46,
6186034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_POP =	47,
6196034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_WAIT =	48,
6206034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_SEND =	49,
6216034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_SENDC =	50,
6226034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_MATH =	56,
6236034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_ADD =	64,
6246034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_MUL =	65,
6256034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_AVG =	66,
6266034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_FRC =	67,
6276034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_RNDU =	68,
6286034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_RNDD =	69,
6296034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_RNDE =	70,
6306034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_RNDZ =	71,
6316034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_MAC =	72,
6326034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_MACH =	73,
6336034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_LZD =	74,
6346034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_SAD2 =	80,
6356034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_SADA2 =	81,
6366034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_DP4 =	84,
6376034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_DPH =	85,
6386034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_DP3 =	86,
6396034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_DP2 =	87,
6406034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_DPA2 =	88,
6416034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_LINE =	89,
6426034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_PLN =	90,
6432b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt   BRW_OPCODE_MAD =	91,
6446034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   BRW_OPCODE_NOP =	126,
6456034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt
6466034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   /* These are compiler backend opcodes that get translated into other
6476034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt    * instructions.
6486034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt    */
6496034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_FB_WRITE = 128,
65065b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_RCP,
65165b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_RSQ,
65265b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_SQRT,
65365b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_EXP2,
65465b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_LOG2,
65565b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_POW,
656ff8f272b0d02b41a0ce34ab6af7119b9e06f4961Kenneth Graunke   SHADER_OPCODE_INT_QUOTIENT,
657ff8f272b0d02b41a0ce34ab6af7119b9e06f4961Kenneth Graunke   SHADER_OPCODE_INT_REMAINDER,
65865b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_SIN,
65965b5cbbcf783f6c668ab5b31a0734680dd396794Eric Anholt   SHADER_OPCODE_COS,
660febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke
661febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke   SHADER_OPCODE_TEX,
662febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke   SHADER_OPCODE_TXD,
663febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke   SHADER_OPCODE_TXF,
664febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke   SHADER_OPCODE_TXL,
665febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke   SHADER_OPCODE_TXS,
666febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke   FS_OPCODE_TXB,
667febad1779ae5cb5c85d66c2635baea62da52d2faKenneth Graunke
6686034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_DDX,
6696034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_DDY,
6706034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_PIXEL_X,
6716034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_PIXEL_Y,
6726034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_CINTERP,
6736034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_LINTERP,
6746034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_DISCARD,
6756034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_SPILL,
6766034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_UNSPILL,
6776034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt   FS_OPCODE_PULL_CONSTANT_LOAD,
6783f929efa2872aa5a4402520ec9fd551392e2413aPaul Berry   FS_OPCODE_MOV_DISPATCH_TO_FLAGS,
679af3c9803d818fd33139f1247a387d64b967b8992Eric Anholt
680af3c9803d818fd33139f1247a387d64b967b8992Eric Anholt   VS_OPCODE_URB_WRITE,
681d0e4d71070cd7fa197ed98612782484ec1f27123Eric Anholt   VS_OPCODE_SCRATCH_READ,
682d0e4d71070cd7fa197ed98612782484ec1f27123Eric Anholt   VS_OPCODE_SCRATCH_WRITE,
683483f5b348b0f3c0ca7082fd2047c354e8af285e7Eric Anholt   VS_OPCODE_PULL_CONSTANT_LOAD,
6846034b9a5124475d300d0678bd2fb6160865fa972Eric Anholt};
6859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_NONE             0
6879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_NORMAL           1
6889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANYV             2
6899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALLV             3
6909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY2H            4
6919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL2H            5
6929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY4H            6
6939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL4H            7
6949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY8H            8
6959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL8H            9
6969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY16H           10
6979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL16H           11
6989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_X     2
6999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_Y     3
7009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_Z     4
7019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_W     5
7029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_ANY4H           6
7039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_ALL4H           7
7049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARCHITECTURE_REGISTER_FILE    0
7069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_GENERAL_REGISTER_FILE         1
7079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MESSAGE_REGISTER_FILE         2
7089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_IMMEDIATE_VALUE               3
7099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_UD  0
7119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_D   1
7129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_UW  2
7139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_W   3
7149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_UB  4
7159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_B   5
7169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_VF  5	/* packed float vector, immediates only? */
7179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_HF  6
7189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_V   6	/* packed int vector, immediates only, uword dest only */
7199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_F   7
7209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_NULL                  0x00
7229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_ADDRESS               0x10
7239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_ACCUMULATOR           0x20
7249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_FLAG                  0x30
7259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_MASK                  0x40
7269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_MASK_STACK            0x50
7279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_MASK_STACK_DEPTH      0x60
7289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_STATE                 0x70
7299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_CONTROL               0x80
7309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_NOTIFICATION_COUNT    0x90
7319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_IP                    0xA0
7329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
733b3ea15f12b931a38d18b4b250031832916380174Eric Anholt#define BRW_MRF_COMPR4			(1 << 7)
734b3ea15f12b931a38d18b4b250031832916380174Eric Anholt
7359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_AMASK   0
7369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_IMASK   1
7379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LMASK   2
7389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CMASK   3
7399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_NORMAL     0
7439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_ATOMIC     1
7449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_SWITCH     2
7459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_0                 0
7479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_1                 1
7489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_2                 2
7499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_4                 3
7509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_8                 4
7519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_16                5
7529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_32                6
7539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_64                7
7549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_128               8
7559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_256               9
7569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_ONE_DIMENSIONAL   0xF
7579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_1       0
7599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_2       1
7609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_4       2
7619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_8       3
7629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_16      4
7639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_1K      0
7659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_2K      1
7669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_4K      2
7679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_8K      3
7689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_16K     4
7699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_32K     5
7709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_64K     6
7719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_128K    7
7729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_256K    8
7739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_512K    9
7749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_1M      10
7759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_2M      11
7769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_FACING_FRONT      0
7789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_FACING_BACK       1
7799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7802e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke/**
7812e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke * Message target: Shared Function ID for where to SEND a message.
7822e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke *
7832e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke * These are enumerated in the ISA reference under "send - Send Message".
7842e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke * In particular, see the following tables:
7852e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke * - G45 PRM, Volume 4, Table 14-15 "Message Descriptor Definition"
7862e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke * - Sandybridge PRM, Volume 4 Part 2, Table 8-16 "Extended Message Descriptor"
7872e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke * - BSpec, Volume 1a (GPU Overview) / Graphics Processing Engine (GPE) /
7882e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke *   Overview / GPE Function IDs
7892e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke */
7902e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunkeenum brw_message_target {
7912e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_NULL                     = 0,
7922e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_MATH                     = 1, /* Only valid on Gen4-5 */
7932e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_SAMPLER                  = 2,
7942e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_MESSAGE_GATEWAY          = 3,
7952e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_DATAPORT_READ            = 4,
7962e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_DATAPORT_WRITE           = 5,
7972e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_URB                      = 6,
7982e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   BRW_SFID_THREAD_SPAWNER           = 7,
7992e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke
8002e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   GEN6_SFID_DATAPORT_SAMPLER_CACHE  = 4,
8012e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   GEN6_SFID_DATAPORT_RENDER_CACHE   = 5,
8022e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   GEN6_SFID_DATAPORT_CONSTANT_CACHE = 9,
8032e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke
8042e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke   GEN7_SFID_DATAPORT_DATA_CACHE     = 10,
8052e124388a4642d1e7f5154e7b83d38578c6b2789Kenneth Graunke};
8069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8070d4a9ba9b247664bc5662b3db774064778f9aa17Kenneth Graunke#define GEN7_MESSAGE_TARGET_DP_DATA_CACHE     10
8080d4a9ba9b247664bc5662b3db774064778f9aa17Kenneth Graunke
8099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_RETURN_FORMAT_FLOAT32     0
8109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_RETURN_FORMAT_UINT32      2
8119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_RETURN_FORMAT_SINT32      3
8129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE              0
8149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE             0
8159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS        0
8169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_KILLPIX             1
8179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD        1
8189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD         1
8199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_GRADIENTS  2
8209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_GRADIENTS    2
8219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE    0
8229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE     2
823a3cd542894606e3f2c892a4218cc6f7370c827a5Kenneth Graunke#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_BIAS_COMPARE 0
8247ff68176f012649c8c58ef2500e2eebae36bfaceKenneth Graunke#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD_COMPARE 1
825a3cd542894606e3f2c892a4218cc6f7370c827a5Kenneth Graunke#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_LOD_COMPARE  1
8269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_RESINFO           2
8279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_RESINFO            2
8289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_LD                3
8299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_LD                  3
8309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_LD                 3
8319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
832cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE              0
833cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS         1
834cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_LOD          2
835cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_COMPARE      3
836cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_DERIVS       4
837cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE 5
838cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE  6
83930be2cc6c7c3378ee17885b5bf41d7ae53bf6fe0Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_LD           7
840ecf8963754489abfb5097c130a9bcd4cdb76b6bdKenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_RESINFO      10
841d02343e5016a5795451af3e0315b658b39463a30Kenneth Graunke#define HSW_SAMPLER_MESSAGE_SAMPLE_DERIV_COMPARE 20
842754953693db784d4f96d57bb6c7fa11a855a9e22Paul Berry#define GEN7_SAMPLER_MESSAGE_SAMPLE_LD_MCS       29
843754953693db784d4f96d57bb6c7fa11a855a9e22Paul Berry#define GEN7_SAMPLER_MESSAGE_SAMPLE_LD2DMS       30
8441c73c705fadf164d61003415e3380f2d06f2e7b3Paul Berry#define GEN7_SAMPLER_MESSAGE_SAMPLE_LD2DSS       31
8452995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao
846cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang/* for GEN5 only */
8472995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD4X2                   0
8482995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD8                     1
8492995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD16                    2
8502995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD32_64                 3
8512995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao
8529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_1_OWORDLOW   0
8539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_1_OWORDHIGH  1
8549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_2_OWORDS     2
8559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_4_OWORDS     3
8569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_8_OWORDS     4
8579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_DUAL_BLOCK_1OWORD     0
8599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_DUAL_BLOCK_4OWORDS    2
8609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS   2
8629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_DWORD_SCATTERED_BLOCK_16DWORDS  3
8639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8649e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt/* This one stays the same across generations. */
8659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ          0
8669e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt/* GEN4 */
8679e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ     1
8689e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_MEDIA_BLOCK_READ          2
8699e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ      3
8709e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt/* G45, GEN5 */
8719e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_RENDER_UNORM_READ	    1
8729e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ     2
8739e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_AVC_LOOP_FILTER_READ	    3
8749e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_MEDIA_BLOCK_READ          4
8759e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ      6
87604466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang/* GEN6 */
8779e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_RENDER_UNORM_READ	    1
8789e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ     2
8799e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_MEDIA_BLOCK_READ          4
8809e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_OWORD_UNALIGN_BLOCK_READ  5
8819e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ      6
8829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_TARGET_DATA_CACHE      0
8849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_TARGET_RENDER_CACHE    1
8859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_TARGET_SAMPLER_CACHE   2
8869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE                0
8889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE_REPLICATED     1
8899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN01         2
8909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN23         3
8919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01       4
8929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE                0
8949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE           1
895f247b2d633f85d70f006df8e8588072f57ee847cKenneth Graunke#define BRW_DATAPORT_WRITE_MESSAGE_MEDIA_BLOCK_WRITE                2
8969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE            3
8979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE              4
8989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_STREAMED_VERTEX_BUFFER_WRITE     5
8999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_FLUSH_RENDER_CACHE               7
9009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
90104466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang/* GEN6 */
9022baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_DWORD_ATOMIC_WRITE              7
9032baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE               8
9042baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE          9
9052baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_MEDIA_BLOCK_WRITE               10
906ceaec241494ddde8ab49c7d90814b0350c99d222Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE           11
9072baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE             12
9082baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_STREAMED_VB_WRITE               13
9092baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_UNORM_WRITE       14
91004466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang
9110d4a9ba9b247664bc5662b3db774064778f9aa17Kenneth Graunke/* GEN7 */
9120d4a9ba9b247664bc5662b3db774064778f9aa17Kenneth Graunke#define GEN7_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE          10
9130d4a9ba9b247664bc5662b3db774064778f9aa17Kenneth Graunke
9149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INV                              1
9159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_LOG                              2
9169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_EXP                              3
9179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_SQRT                             4
9189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_RSQ                              5
9199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_SIN                              6 /* was 7 */
9209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_COS                              7 /* was 8 */
9219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_SINCOS                           8 /* was 6 */
92238c449409207c8948c1961a3132475bbd422f8f1Eric Anholt#define BRW_MATH_FUNCTION_TAN                              9 /* gen4 */
92338c449409207c8948c1961a3132475bbd422f8f1Eric Anholt#define BRW_MATH_FUNCTION_FDIV                             9 /* gen6+ */
9249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_POW                              10
9259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER   11
9269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INT_DIV_QUOTIENT                 12
9279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INT_DIV_REMAINDER                13
9289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_INTEGER_UNSIGNED     0
9309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_INTEGER_SIGNED       1
9319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_PRECISION_FULL        0
9339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_PRECISION_PARTIAL     1
9349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_SATURATE_NONE         0
9369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_SATURATE_SATURATE     1
9379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_DATA_VECTOR  0
9399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_DATA_SCALAR  1
9409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_OPCODE_WRITE  0
9429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_SWIZZLE_NONE          0
9449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_SWIZZLE_INTERLEAVE    1
9459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_SWIZZLE_TRANSPOSE     2
9469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_1K     0
9489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_2K     1
9499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_4K     2
9509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_8K     3
9519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_16K    4
9529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_32K    5
9539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_64K    6
9549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_128K   7
9559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_256K   8
9569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_512K   9
9579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_1M     10
9589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_2M     11
9599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_URB_FENCE                 0x6000
964d0415a5a01c1a8c2c2a389d977401a7f6cee031bEric Anholt#define CMD_CS_URB_STATE              0x6001
9659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_CONST_BUFFER              0x6002
9669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
9679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_STATE_BASE_ADDRESS        0x6101
968247e4c69ce6389805437256524d043019abfa6d1Kenneth Graunke#define CMD_STATE_SIP                 0x6102
9698e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao#define CMD_PIPELINE_SELECT_965       0x6104
97092c075eeb7c330ea420400d1c2bae57356b19f03Xiang, Haihao#define CMD_PIPELINE_SELECT_GM45      0x6904
9719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
97271acbb54f49089b03d3498b6f88c1681d3f649acKenneth Graunke#define _3DSTATE_PIPELINED_POINTERS		0x7800
97371acbb54f49089b03d3498b6f88c1681d3f649acKenneth Graunke#define _3DSTATE_BINDING_TABLE_POINTERS		0x7801
9749dce60f35b25f4f5605b22d75447bac5d9f55515Eric Anholt# define GEN6_BINDING_TABLE_MODIFY_VS	(1 << 8)
9759dce60f35b25f4f5605b22d75447bac5d9f55515Eric Anholt# define GEN6_BINDING_TABLE_MODIFY_GS	(1 << 9)
9760f88ce1b0a98c7cacaa0dc53bbbb1f3c379aaa6aZou Nan hai# define GEN6_BINDING_TABLE_MODIFY_PS	(1 << 12)
977931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt
978706dbf85f15d42c320481dabe2a3db0c2cbbebb8Kenneth Graunke#define _3DSTATE_BINDING_TABLE_POINTERS_VS	0x7826 /* GEN7+ */
979a94fe79464df088d8e26386d3f0db9a231bfdb61Kenneth Graunke#define _3DSTATE_BINDING_TABLE_POINTERS_HS	0x7827 /* GEN7+ */
980a94fe79464df088d8e26386d3f0db9a231bfdb61Kenneth Graunke#define _3DSTATE_BINDING_TABLE_POINTERS_DS	0x7828 /* GEN7+ */
981706dbf85f15d42c320481dabe2a3db0c2cbbebb8Kenneth Graunke#define _3DSTATE_BINDING_TABLE_POINTERS_GS	0x7829 /* GEN7+ */
982706dbf85f15d42c320481dabe2a3db0c2cbbebb8Kenneth Graunke#define _3DSTATE_BINDING_TABLE_POINTERS_PS	0x782A /* GEN7+ */
983706dbf85f15d42c320481dabe2a3db0c2cbbebb8Kenneth Graunke
984e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SAMPLER_STATE_POINTERS		0x7802 /* GEN6+ */
985c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt# define PS_SAMPLER_STATE_CHANGE				(1 << 12)
986c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt# define GS_SAMPLER_STATE_CHANGE				(1 << 9)
987c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt# define VS_SAMPLER_STATE_CHANGE				(1 << 8)
988c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt/* DW1: VS */
989c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt/* DW2: GS */
990c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt/* DW3: PS */
991c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt
992bc08d4ebb832769aacb4aecaaf1e490f97c53d65Kenneth Graunke#define _3DSTATE_SAMPLER_STATE_POINTERS_VS	0x782B /* GEN7+ */
993bc08d4ebb832769aacb4aecaaf1e490f97c53d65Kenneth Graunke#define _3DSTATE_SAMPLER_STATE_POINTERS_GS	0x782E /* GEN7+ */
994bc08d4ebb832769aacb4aecaaf1e490f97c53d65Kenneth Graunke#define _3DSTATE_SAMPLER_STATE_POINTERS_PS	0x782F /* GEN7+ */
995bc08d4ebb832769aacb4aecaaf1e490f97c53d65Kenneth Graunke
996797522f1c9c0f4aa75e4c9c854e79c44ed374169Kenneth Graunke#define _3DSTATE_VERTEX_BUFFERS       0x7808
997931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_INDEX_SHIFT		27
998ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VB0_INDEX_SHIFT		26
999931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_ACCESS_VERTEXDATA	(0 << 26)
1000931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_ACCESS_INSTANCEDATA	(1 << 26)
1001ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VB0_ACCESS_VERTEXDATA	(0 << 20)
1002ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VB0_ACCESS_INSTANCEDATA	(1 << 20)
100362b79b4bb9d8a4a8679c3d1e1f5455ce33d7b90aKenneth Graunke# define GEN7_VB0_ADDRESS_MODIFYENABLE  (1 << 14)
1004931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_PITCH_SHIFT		0
1005931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt
1006797522f1c9c0f4aa75e4c9c854e79c44ed374169Kenneth Graunke#define _3DSTATE_VERTEX_ELEMENTS      0x7809
1007931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_INDEX_SHIFT		27
1008ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VE0_INDEX_SHIFT		26
1009931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_FORMAT_SHIFT		16
1010931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_VALID			(1 << 26)
1011d790564f9452d6fa0378346a85c792aa346c1a57Eric Anholt# define GEN6_VE0_VALID			(1 << 25)
101204a11b5f5e22155e5816e2da560b485eb0eaaec9Eric Anholt# define GEN6_VE0_EDGE_FLAG_ENABLE	(1 << 15)
1013931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_SRC_OFFSET_SHIFT	0
1014931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_NOSTORE	0
1015931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_SRC	1
1016931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_0	2
1017931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_1_FLT	3
1018931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_1_INT	4
1019931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_VID	5
1020931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_IID	6
1021931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_PID	7
1022931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_0_SHIFT	28
1023931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_1_SHIFT	24
1024931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_2_SHIFT	20
1025931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_3_SHIFT	16
1026931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_DST_OFFSET_SHIFT	0
1027931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt
10289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_INDEX_BUFFER              0x780a
1029348bdaa529c3eb60fcf03ed4531193bbf2e12491Kenneth Graunke#define GEN4_3DSTATE_VF_STATISTICS		0x780b
1030348bdaa529c3eb60fcf03ed4531193bbf2e12491Kenneth Graunke#define GM45_3DSTATE_VF_STATISTICS		0x680b
1031e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CC_STATE_POINTERS		0x780e /* GEN6+ */
103224d0ed72c1817b624e3021b12a0987b2c5edd71bKenneth Graunke#define _3DSTATE_BLEND_STATE_POINTERS		0x7824 /* GEN7+ */
103324d0ed72c1817b624e3021b12a0987b2c5edd71bKenneth Graunke#define _3DSTATE_DEPTH_STENCIL_STATE_POINTERS	0x7825 /* GEN7+ */
1034ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt
10358832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB				0x7805 /* GEN6 */
1036c9dc6d425e645f2988118ff51cabe167a0cd3971Eric Anholt# define GEN6_URB_VS_SIZE_SHIFT				16
1037c9dc6d425e645f2988118ff51cabe167a0cd3971Eric Anholt# define GEN6_URB_VS_ENTRIES_SHIFT			0
1038073f8d1c00165acccb60f878a2aa770c2b885aecEric Anholt# define GEN6_URB_GS_ENTRIES_SHIFT			8
1039073f8d1c00165acccb60f878a2aa770c2b885aecEric Anholt# define GEN6_URB_GS_SIZE_SHIFT				0
1040c9dc6d425e645f2988118ff51cabe167a0cd3971Eric Anholt
1041b922999a404322a1034c4f96c21acae860483bb0Kenneth Graunke#define _3DSTATE_VF                             0x780c /* GEN7.5+ */
1042b922999a404322a1034c4f96c21acae860483bb0Kenneth Graunke#define HSW_CUT_INDEX_ENABLE                            (1 << 8)
1043b922999a404322a1034c4f96c21acae860483bb0Kenneth Graunke
10448832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_VS                         0x7830 /* GEN7+ */
10458832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_HS                         0x7831 /* GEN7+ */
10468832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_DS                         0x7832 /* GEN7+ */
10478832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_GS                         0x7833 /* GEN7+ */
10488832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke# define GEN7_URB_ENTRY_SIZE_SHIFT                      16
10498832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke# define GEN7_URB_STARTING_ADDRESS_SHIFT                25
10508832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke
10518832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_PUSH_CONSTANT_ALLOC_VS         0x7912 /* GEN7+ */
10528832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_PUSH_CONSTANT_ALLOC_PS         0x7916 /* GEN7+ */
10538832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke# define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT         16
10548832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke
1055e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_VIEWPORT_STATE_POINTERS	0x780d /* GEN6+ */
10561ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt# define GEN6_CC_VIEWPORT_MODIFY			(1 << 12)
10571ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt# define GEN6_SF_VIEWPORT_MODIFY			(1 << 11)
10581ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt# define GEN6_CLIP_VIEWPORT_MODIFY			(1 << 10)
10591ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt
106018402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke#define _3DSTATE_VIEWPORT_STATE_POINTERS_CC	0x7823 /* GEN7+ */
106118402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke#define _3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL	0x7821 /* GEN7+ */
106218402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke
1063e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SCISSOR_STATE_POINTERS		0x780f /* GEN6+ */
106464e0c586a74553b2941f18feb199d8cddb192102Eric Anholt
1065e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_VS				0x7810 /* GEN6+ */
1066520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW2 */
1067ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_SPF_MODE				(1 << 31)
1068ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_VECTOR_MASK_ENABLE			(1 << 30)
1069ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_SAMPLER_COUNT_SHIFT			27
1070ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
1071c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_VS_FLOATING_POINT_MODE_IEEE_754		(0 << 16)
1072c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_VS_FLOATING_POINT_MODE_ALT		(1 << 16)
1073520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW4 */
1074d512aa3d6d9948f5c294110fdae7a24aaf37051fEric Anholt# define GEN6_VS_DISPATCH_START_GRF_SHIFT		20
1075ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_URB_READ_LENGTH_SHIFT			11
1076d512aa3d6d9948f5c294110fdae7a24aaf37051fEric Anholt# define GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT		4
1077a935cb2acafab199ac5ed4f2484af77be2af6363Eric Anholt/* DW5 */
1078ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_MAX_THREADS_SHIFT			25
10791b3a199097190a0bf857eb17c12949fa2b456d9bKenneth Graunke# define HSW_VS_MAX_THREADS_SHIFT			23
1080ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_STATISTICS_ENABLE			(1 << 10)
1081ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_CACHE_DISABLE				(1 << 1)
1082ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_ENABLE					(1 << 0)
1083ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt
1084e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_GS		      		0x7811 /* GEN6+ */
1085520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW2 */
1086520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_SPF_MODE				(1 << 31)
1087520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_VECTOR_MASK_ENABLE			(1 << 30)
1088520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_SAMPLER_COUNT_SHIFT			27
1089520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
1090384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_FLOATING_POINT_MODE_IEEE_754		(0 << 16)
1091384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_FLOATING_POINT_MODE_ALT		(1 << 16)
1092520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW4 */
1093520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_URB_READ_LENGTH_SHIFT			11
1094bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke# define GEN7_GS_INCLUDE_VERTEX_HANDLES		        (1 << 10)
1095d512aa3d6d9948f5c294110fdae7a24aaf37051fEric Anholt# define GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT		4
1096da577ee8800b940fcf416716c13133cd43c3d035Eric Anholt# define GEN6_GS_DISPATCH_START_GRF_SHIFT		0
1097520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW5 */
1098520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_MAX_THREADS_SHIFT			25
1099520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_STATISTICS_ENABLE			(1 << 10)
1100520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_SO_STATISTICS_ENABLE			(1 << 9)
1101520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_RENDERING_ENABLE			(1 << 8)
1102bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke# define GEN7_GS_ENABLE					(1 << 0)
1103520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW6 */
1104384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_REORDER				(1 << 30)
1105384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_DISCARD_ADJACENCY			(1 << 29)
1106384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_SVBI_PAYLOAD_ENABLE			(1 << 28)
1107384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_SVBI_POSTINCREMENT_ENABLE		(1 << 27)
1108384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_SVBI_POSTINCREMENT_VALUE_SHIFT		16
1109384ad987a1dd495681be0a5a04344fe6400e48ecKenneth Graunke# define GEN6_GS_SVBI_POSTINCREMENT_VALUE_MASK		INTEL_MASK(25, 16)
1110520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_ENABLE					(1 << 15)
1111520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt
1112d4976158c7f32705b48c773c3abd1b22bebe9c16Paul Berry# define BRW_GS_EDGE_INDICATOR_0			(1 << 8)
1113d4976158c7f32705b48c773c3abd1b22bebe9c16Paul Berry# define BRW_GS_EDGE_INDICATOR_1			(1 << 9)
1114d4976158c7f32705b48c773c3abd1b22bebe9c16Paul Berry
1115bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_HS                             0x781B /* GEN7+ */
1116bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_TE                             0x781C /* GEN7+ */
1117bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_DS                             0x781D /* GEN7+ */
1118bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke
1119e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CLIP				0x7812 /* GEN6+ */
1120f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt/* DW1 */
112181fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_WINDING_CW                           (0 << 20)
112281fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_WINDING_CCW                          (1 << 20)
112381fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_VERTEX_SUBPIXEL_PRECISION_8          (0 << 19)
112481fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_VERTEX_SUBPIXEL_PRECISION_4          (1 << 19)
112581fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_EARLY_CULL                           (1 << 18)
112681fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_BOTH                        (0 << 16)
112781fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_NONE                        (1 << 16)
112881fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_FRONT                       (2 << 16)
112981fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_BACK                        (3 << 16)
1130f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_STATISTICS_ENABLE			(1 << 10)
1131e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt/**
1132e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt * Just does cheap culling based on the clip distance.  Bits must be
1133e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt * disjoint with USER_CLIP_CLIP_DISTANCE bits.
1134e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt */
1135e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt# define GEN6_USER_CLIP_CULL_DISTANCES_SHIFT		0
1136f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt/* DW2 */
1137f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_ENABLE				(1 << 31)
1138dedfc0e6e606594b9b1772c6b0689f7fa547c3aaEric Anholt# define GEN6_CLIP_API_OGL				(0 << 30)
1139dedfc0e6e606594b9b1772c6b0689f7fa547c3aaEric Anholt# define GEN6_CLIP_API_D3D				(1 << 30)
1140f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_XY_TEST				(1 << 28)
1141f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_Z_TEST				(1 << 27)
1142f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_GB_TEST				(1 << 26)
1143e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt/** 8-bit field of which user clip distances to clip aganist. */
1144e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt# define GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT		16
1145f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MODE_NORMAL				(0 << 13)
1146f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MODE_REJECT_ALL			(3 << 13)
1147f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MODE_ACCEPT_ALL			(4 << 13)
1148f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_PERSPECTIVE_DIVIDE_DISABLE		(1 << 9)
11494d563ec1cc912e4b3f02e71ad72d7b08f001d4d7Paul Berry# define GEN6_CLIP_NON_PERSPECTIVE_BARYCENTRIC_ENABLE	(1 << 8)
1150f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_TRI_PROVOKE_SHIFT			4
1151f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_LINE_PROVOKE_SHIFT			2
1152f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_TRIFAN_PROVOKE_SHIFT			0
1153f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt/* DW3 */
1154f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MIN_POINT_WIDTH_SHIFT		17
1155f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MAX_POINT_WIDTH_SHIFT		6
115603218a00932e83f0ffd0c3077bbbe65a7765c572Zhenyu Wang# define GEN6_CLIP_FORCE_ZERO_RTAINDEX			(1 << 5)
1157f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt
1158e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SF				0x7813 /* GEN6+ */
11597d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW1 (for gen6) */
116070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_NUM_OUTPUTS_SHIFT			22
116170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_SWIZZLE_ENABLE				(1 << 21)
1162eaf360e5bffc5630789367020252cd12fe586177Yuanhan Liu# define GEN6_SF_POINT_SPRITE_UPPERLEFT			(0 << 20)
116370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_POINT_SPRITE_LOWERLEFT			(1 << 20)
116470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_URB_ENTRY_READ_LENGTH_SHIFT		11
116570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT		4
116670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW2 */
116770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LEGACY_GLOBAL_DEPTH_BIAS		(1 << 11)
116870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_STATISTICS_ENABLE			(1 << 10)
116970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_GLOBAL_DEPTH_OFFSET_SOLID		(1 << 9)
117070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_GLOBAL_DEPTH_OFFSET_WIREFRAME		(1 << 8)
117170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_GLOBAL_DEPTH_OFFSET_POINT		(1 << 7)
117270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_FRONT_SOLID				(0 << 5)
117370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_FRONT_WIREFRAME			(1 << 5)
117470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_FRONT_POINT				(2 << 5)
117570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_BACK_SOLID				(0 << 3)
117670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_BACK_WIREFRAME				(1 << 3)
117770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_BACK_POINT				(2 << 3)
117870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_VIEWPORT_TRANSFORM_ENABLE		(1 << 1)
117970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_WINDING_CCW				(1 << 0)
118070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW3 */
118170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_AA_ENABLE				(1 << 31)
118270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_BOTH				(0 << 29)
118370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_NONE				(1 << 29)
118470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_FRONT				(2 << 29)
118570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_BACK				(3 << 29)
118670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_WIDTH_SHIFT			18 /* U3.7 */
118770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_0_5			(0 << 16)
118870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_1_0			(1 << 16)
118970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_2_0			(2 << 16)
119070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_4_0			(3 << 16)
119170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_SCISSOR_ENABLE				(1 << 11)
119270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_OFF_PIXEL			(0 << 8)
119370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_OFF_PATTERN			(1 << 8)
119470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_ON_PIXEL			(2 << 8)
119570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_ON_PATTERN			(3 << 8)
119670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW4 */
119770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_TRI_PROVOKE_SHIFT			29
119870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_PROVOKE_SHIFT			27
119970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_TRIFAN_PROVOKE_SHIFT			25
120070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_AA_MODE_MANHATTAN			(0 << 14)
120170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_AA_MODE_TRUE			(1 << 14)
120270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_VERTEX_SUBPIXEL_8BITS			(0 << 12)
120370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_VERTEX_SUBPIXEL_4BITS			(1 << 12)
120470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_USE_STATE_POINT_WIDTH			(1 << 11)
120570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_POINT_WIDTH_SHIFT			0 /* U8.3 */
120670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW5: depth offset constant */
120770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW6: depth offset scale */
120870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW7: depth offset clamp */
120970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW8 */
121070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_W				(1 << 31)
121170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_Z				(1 << 30)
121270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_Y				(1 << 29)
121370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_X				(1 << 28)
121470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_CONST_SOURCE_SHIFT			25
121570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_SWIZZLE_SHIFT			22
121670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_SOURCE_SHIFT			16
121770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_W				(1 << 15)
121870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_Z				(1 << 14)
121970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_Y				(1 << 13)
122070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_X				(1 << 12)
122170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_CONST_SOURCE_SHIFT			9
122270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_SWIZZLE_SHIFT			6
122370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_SOURCE_SHIFT			0
1224e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao
1225e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR                    0
1226e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR_FACING             1
1227e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR_W                  2
1228e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR_FACING_W           3
1229e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_SHIFT                        6
1230e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao
123170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW16: Point sprite texture coordinate enables */
123270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW17: Constant interpolation enables */
123370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW18: attr 0-7 wrap shortest enables */
123470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW19: attr 8-16 wrap shortest enables */
123570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt
12367d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* On GEN7, many fields of 3DSTATE_SF were split out into a new command:
12377d608d0c331c101088273655708965fb9f1be56eKenneth Graunke * 3DSTATE_SBE.  The remaining fields live in different DWords, but retain
12387d608d0c331c101088273655708965fb9f1be56eKenneth Graunke * the same bit-offset.  The only new field:
12397d608d0c331c101088273655708965fb9f1be56eKenneth Graunke */
12407d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* GEN7/DW1: */
12417d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SF_DEPTH_BUFFER_SURFACE_FORMAT_SHIFT	12
1242b4410ac3944ee30bbf5455e3e649b73f559a7d38Kenneth Graunke/* GEN7/DW2: */
1243b4410ac3944ee30bbf5455e3e649b73f559a7d38Kenneth Graunke# define HSW_SF_LINE_STIPPLE_ENABLE			14
12447d608d0c331c101088273655708965fb9f1be56eKenneth Graunke
12457d608d0c331c101088273655708965fb9f1be56eKenneth Graunke#define _3DSTATE_SBE				0x781F /* GEN7+ */
12467d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW1 */
12477d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_SWIZZLE_CONTROL_MODE			(1 << 28)
12487d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_NUM_OUTPUTS_SHIFT			22
12497d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_SWIZZLE_ENABLE			(1 << 21)
12507d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_POINT_SPRITE_LOWERLEFT		(1 << 20)
12517d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT		11
12527d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT		4
12537d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW2-9: Attribute setup (same as DW8-15 of gen6 _3DSTATE_SF) */
12547d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW10: Point sprite texture coordinate enables */
12557d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW11: Constant interpolation enables */
12567d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW12: attr 0-7 wrap shortest enables */
12577d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW13: attr 8-16 wrap shortest enables */
12587d608d0c331c101088273655708965fb9f1be56eKenneth Graunke
1259e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berryenum brw_wm_barycentric_interp_mode {
1260e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry   BRW_WM_PERSPECTIVE_PIXEL_BARYCENTRIC		= 0,
1261e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry   BRW_WM_PERSPECTIVE_CENTROID_BARYCENTRIC	= 1,
1262e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry   BRW_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC	= 2,
1263e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry   BRW_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC	= 3,
1264e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry   BRW_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC	= 4,
1265e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry   BRW_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC	= 5,
1266e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry   BRW_WM_BARYCENTRIC_INTERP_MODE_COUNT  = 6
1267e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry};
12686d7ebb21f8848a4a407e458e2772a45f9c3bd28aPaul Berry#define BRW_WM_NONPERSPECTIVE_BARYCENTRIC_BITS \
12696d7ebb21f8848a4a407e458e2772a45f9c3bd28aPaul Berry   ((1 << BRW_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC) | \
12706d7ebb21f8848a4a407e458e2772a45f9c3bd28aPaul Berry    (1 << BRW_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC) | \
12716d7ebb21f8848a4a407e458e2772a45f9c3bd28aPaul Berry    (1 << BRW_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC))
1272e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry
1273e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_WM				0x7814 /* GEN6+ */
1274ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW1: kernel pointer */
1275ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW2 */
1276ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_SPF_MODE				(1 << 31)
1277ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_VECTOR_MASK_ENABLE			(1 << 30)
1278ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_SAMPLER_COUNT_SHIFT			27
1279ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
1280c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_WM_FLOATING_POINT_MODE_IEEE_754		(0 << 16)
1281c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_WM_FLOATING_POINT_MODE_ALT		(1 << 16)
1282ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW3: scratch space */
1283ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW4 */
1284ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_STATISTICS_ENABLE			(1 << 31)
1285ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DEPTH_CLEAR				(1 << 30)
1286ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DEPTH_RESOLVE				(1 << 28)
1287ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_HIERARCHICAL_DEPTH_RESOLVE		(1 << 27)
1288ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_START_GRF_SHIFT_0		16
1289ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_START_GRF_SHIFT_1		8
1290ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_START_GRF_SHIFT_2		0
1291ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW5 */
1292ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MAX_THREADS_SHIFT			25
1293ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_KILL_ENABLE				(1 << 22)
1294ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_COMPUTED_DEPTH				(1 << 21)
1295ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_USES_SOURCE_DEPTH			(1 << 20)
1296ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_ENABLE			(1 << 19)
1297ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_0_5		(0 << 16)
1298ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_1_0		(1 << 16)
1299ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_2_0		(2 << 16)
1300ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_4_0		(3 << 16)
1301ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_0_5			(0 << 14)
1302ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_1_0			(1 << 14)
1303ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_2_0			(2 << 14)
1304ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_4_0			(3 << 14)
1305ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POLYGON_STIPPLE_ENABLE			(1 << 13)
13069a1ce46fce4f2a4317fd4e2d0b4309e774b3adcaZhenyu Wang# define GEN6_WM_LINE_STIPPLE_ENABLE			(1 << 11)
1307ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_OMASK_TO_RENDER_TARGET			(1 << 9)
1308ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_USES_SOURCE_W				(1 << 8)
1309ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DUAL_SOURCE_BLEND_ENABLE		(1 << 7)
1310ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_32_DISPATCH_ENABLE			(1 << 2)
1311ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_16_DISPATCH_ENABLE			(1 << 1)
1312ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_8_DISPATCH_ENABLE			(1 << 0)
1313ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW6 */
1314ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NUM_SF_OUTPUTS_SHIFT			20
1315ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSOFFSET_NONE				(0 << 18)
1316ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSOFFSET_CENTROID			(2 << 18)
1317ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSOFFSET_SAMPLE			(3 << 18)
1318ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSITION_ZW_PIXEL			(0 << 16)
1319ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSITION_ZW_CENTROID			(2 << 16)
1320ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSITION_ZW_SAMPLE			(3 << 16)
1321ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC	(1 << 15)
1322ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 14)
1323ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC	(1 << 13)
1324ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC		(1 << 12)
1325ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_PERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 11)
1326ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_PERSPECTIVE_PIXEL_BARYCENTRIC		(1 << 10)
1327e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry# define GEN6_WM_BARYCENTRIC_INTERPOLATION_MODE_SHIFT   10
1328ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POINT_RASTRULE_UPPER_RIGHT		(1 << 9)
1329ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_OFF_PIXEL			(0 << 1)
1330ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_OFF_PATTERN			(1 << 1)
1331ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_ON_PIXEL			(2 << 1)
1332ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_ON_PATTERN			(3 << 1)
133319e9b24626c2b9d7abef054d57bb2a52106c545bPaul Berry# define GEN6_WM_MSDISPMODE_PERSAMPLE			(0 << 0)
1334ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSDISPMODE_PERPIXEL			(1 << 0)
1335ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW7: kernel 1 pointer */
1336ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW8: kernel 2 pointer */
1337ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt
1338e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CONSTANT_VS		      0x7815 /* GEN6+ */
1339e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CONSTANT_GS		      0x7816 /* GEN6+ */
1340e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CONSTANT_PS		      0x7817 /* GEN6+ */
1341520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_3_ENABLE			(1 << 15)
1342520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_2_ENABLE			(1 << 14)
1343520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_1_ENABLE			(1 << 13)
1344520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_0_ENABLE			(1 << 12)
13459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1346bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_CONSTANT_HS                  0x7819 /* GEN7+ */
1347bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_CONSTANT_DS                  0x781A /* GEN7+ */
1348bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke
1349e1425a54b119363bf038ec2e1636986980bba77dEric Anholt#define _3DSTATE_STREAMOUT                    0x781e /* GEN7+ */
1350e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* DW1 */
1351e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_FUNCTION_ENABLE				(1 << 31)
1352e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_RENDERING_DISABLE				(1 << 30)
1353e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* This selects which incoming rendering stream goes down the pipeline.  The
1354e1425a54b119363bf038ec2e1636986980bba77dEric Anholt * rendering stream is 0 if not defined by special cases in the GS state.
1355e1425a54b119363bf038ec2e1636986980bba77dEric Anholt */
1356e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_RENDER_STREAM_SELECT_SHIFT			27
1357e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_RENDER_STREAM_SELECT_MASK			INTEL_MASK(28, 27)
1358e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* Controls reordering of TRISTRIP_* elements in stream output (not rendering).
1359e1425a54b119363bf038ec2e1636986980bba77dEric Anholt */
1360e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_REORDER_TRAILING				(1 << 26)
1361e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* Controls SO_NUM_PRIMS_WRITTEN_* and SO_PRIM_STORAGE_* */
1362e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STATISTICS_ENABLE				(1 << 25)
1363e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_BUFFER_ENABLE(n)				(1 << (8 + (n)))
1364e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* DW2 */
1365e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_3_VERTEX_READ_OFFSET_SHIFT		29
1366e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_3_VERTEX_READ_OFFSET_MASK		INTEL_MASK(29, 29)
1367e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_3_VERTEX_READ_LENGTH_SHIFT		24
1368e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_3_VERTEX_READ_LENGTH_MASK		INTEL_MASK(28, 24)
1369e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_2_VERTEX_READ_OFFSET_SHIFT		21
1370e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_2_VERTEX_READ_OFFSET_MASK		INTEL_MASK(21, 21)
1371e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_2_VERTEX_READ_LENGTH_SHIFT		16
1372e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_2_VERTEX_READ_LENGTH_MASK		INTEL_MASK(20, 16)
1373e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_1_VERTEX_READ_OFFSET_SHIFT		13
1374e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_1_VERTEX_READ_OFFSET_MASK		INTEL_MASK(13, 13)
1375e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_1_VERTEX_READ_LENGTH_SHIFT		8
1376e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_1_VERTEX_READ_LENGTH_MASK		INTEL_MASK(12, 8)
1377e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_0_VERTEX_READ_OFFSET_SHIFT		5
1378e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_0_VERTEX_READ_OFFSET_MASK		INTEL_MASK(5, 5)
1379e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_0_VERTEX_READ_LENGTH_SHIFT		0
1380e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_0_VERTEX_READ_LENGTH_MASK		INTEL_MASK(4, 0)
1381e1425a54b119363bf038ec2e1636986980bba77dEric Anholt
1382a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* 3DSTATE_WM for Gen7 */
1383a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW1 */
1384a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_STATISTICS_ENABLE			(1 << 31)
1385a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_DEPTH_CLEAR				(1 << 30)
1386a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_DISPATCH_ENABLE			(1 << 29)
1387b755f5894ce211dcb8ec881ba9cd9856383c3c79Chad Versace# define GEN7_WM_DEPTH_RESOLVE				(1 << 28)
1388a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE		(1 << 27)
1389a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_KILL_ENABLE				(1 << 25)
1390a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_OFF			        (0 << 23)
1391a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_ON			        (1 << 23)
1392a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_ON_GE			        (2 << 23)
1393a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_ON_LE			        (3 << 23)
1394a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_USES_SOURCE_DEPTH			(1 << 20)
1395a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_USES_SOURCE_W			        (1 << 19)
1396a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POSITION_ZW_PIXEL			(0 << 17)
1397a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POSITION_ZW_CENTROID			(2 << 17)
1398a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POSITION_ZW_SAMPLE			(3 << 17)
1399e04bdeae82797dbdcf6f544a997a4626fdfd4aeePaul Berry# define GEN7_WM_BARYCENTRIC_INTERPOLATION_MODE_SHIFT   11
1400a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_USES_INPUT_COVERAGE_MASK	        (1 << 10)
1401a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5		(0 << 8)
1402a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0		(1 << 8)
1403a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0		(2 << 8)
1404a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0		(3 << 8)
1405a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_0_5			(0 << 6)
1406a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_1_0			(1 << 6)
1407a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_2_0			(2 << 6)
1408a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_4_0			(3 << 6)
1409a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POLYGON_STIPPLE_ENABLE			(1 << 4)
1410a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_STIPPLE_ENABLE			(1 << 3)
1411a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT		(1 << 2)
1412a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_OFF_PIXEL			(0 << 0)
1413a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_OFF_PATTERN			(1 << 0)
1414a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_ON_PIXEL			(2 << 0)
1415a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_ON_PATTERN			(3 << 0)
1416a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW2 */
141719e9b24626c2b9d7abef054d57bb2a52106c545bPaul Berry# define GEN7_WM_MSDISPMODE_PERSAMPLE			(0 << 31)
1418a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSDISPMODE_PERPIXEL			(1 << 31)
1419a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke
1420a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke#define _3DSTATE_PS				0x7820 /* GEN7+ */
1421a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW1: kernel pointer */
1422a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW2 */
1423a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_SPF_MODE				(1 << 31)
1424a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_VECTOR_MASK_ENABLE			(1 << 30)
1425a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_SAMPLER_COUNT_SHIFT			27
1426a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
1427a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_FLOATING_POINT_MODE_IEEE_754		(0 << 16)
1428a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_FLOATING_POINT_MODE_ALT		(1 << 16)
1429a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW3: scratch space */
1430a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW4 */
14311b3a199097190a0bf857eb17c12949fa2b456d9bKenneth Graunke# define IVB_PS_MAX_THREADS_SHIFT			24
14321b3a199097190a0bf857eb17c12949fa2b456d9bKenneth Graunke# define HSW_PS_MAX_THREADS_SHIFT			23
1433a23dcc18e71e905da117d14b5d56c4e49c66ab79Kenneth Graunke# define HSW_PS_SAMPLE_MASK_SHIFT		        12
1434a23dcc18e71e905da117d14b5d56c4e49c66ab79Kenneth Graunke# define HSW_PS_SAMPLE_MASK_MASK			INTEL_MASK(19, 12)
1435a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_PUSH_CONSTANT_ENABLE		        (1 << 11)
1436a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_ATTRIBUTE_ENABLE		        (1 << 10)
1437a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_OMASK_TO_RENDER_TARGET			(1 << 9)
1438a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE		(1 << 7)
1439a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_POSOFFSET_NONE				(0 << 3)
1440a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_POSOFFSET_CENTROID			(2 << 3)
1441a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_POSOFFSET_SAMPLE			(3 << 3)
1442a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_32_DISPATCH_ENABLE			(1 << 2)
1443a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_16_DISPATCH_ENABLE			(1 << 1)
1444a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_8_DISPATCH_ENABLE			(1 << 0)
1445a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW5 */
1446a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DISPATCH_START_GRF_SHIFT_0		16
1447a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DISPATCH_START_GRF_SHIFT_1		8
1448a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DISPATCH_START_GRF_SHIFT_2		0
1449a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW6: kernel 1 pointer */
1450a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW7: kernel 2 pointer */
1451a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke
1452e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SAMPLE_MASK			0x7818 /* GEN6+ */
1453f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
14541feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_DRAWING_RECTANGLE		0x7900
14551feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_BLEND_CONSTANT_COLOR		0x7901
14561feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_CHROMA_KEY			0x7904
14578c8985bdd714f43a96ce922a7c0284d50aec3d1aKenneth Graunke#define _3DSTATE_DEPTH_BUFFER			0x7905 /* GEN4-6 */
14581feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_POLY_STIPPLE_OFFSET		0x7906
14591feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_POLY_STIPPLE_PATTERN		0x7907
14601feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_LINE_STIPPLE_PATTERN		0x7908
14611feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP	0x7909
14621feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_AA_LINE_PARAMETERS		0x790a /* G45+ */
14631feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke
14641feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_GS_SVB_INDEX			0x790b /* CTG+ */
1465f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW1 */
1466f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define SVB_INDEX_SHIFT				29
1467f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define SVB_LOAD_INTERNAL_VERTEX_COUNT			(1 << 0) /* SNB+ */
1468f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW2: SVB index */
1469f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW3: SVB maximum index */
1470f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
1471e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_MULTISAMPLE			0x790d /* GEN6+ */
1472f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW1 */
1473f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_PIXEL_LOCATION_CENTER			(0 << 4)
1474f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_PIXEL_LOCATION_UPPER_LEFT			(1 << 4)
1475f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_NUMSAMPLES_1				(0 << 1)
1476f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_NUMSAMPLES_4				(2 << 1)
1477f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_NUMSAMPLES_8				(3 << 1)
1478f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
1479da0c0dbab060416452e7c96415abef91ec7d64f4Kenneth Graunke#define _3DSTATE_STENCIL_BUFFER			0x790e /* ILK, SNB */
1480da0c0dbab060416452e7c96415abef91ec7d64f4Kenneth Graunke#define _3DSTATE_HIER_DEPTH_BUFFER		0x790f /* ILK, SNB */
1481da0c0dbab060416452e7c96415abef91ec7d64f4Kenneth Graunke
14828c8985bdd714f43a96ce922a7c0284d50aec3d1aKenneth Graunke#define GEN7_3DSTATE_CLEAR_PARAMS		0x7804
14838c8985bdd714f43a96ce922a7c0284d50aec3d1aKenneth Graunke#define GEN7_3DSTATE_DEPTH_BUFFER		0x7805
14848c8985bdd714f43a96ce922a7c0284d50aec3d1aKenneth Graunke#define GEN7_3DSTATE_STENCIL_BUFFER		0x7806
1485fc8edbe016348a22e4631fb1e1c7f7b87301c5ecKenneth Graunke# define HSW_STENCIL_ENABLED                            (1 << 31)
14868c8985bdd714f43a96ce922a7c0284d50aec3d1aKenneth Graunke#define GEN7_3DSTATE_HIER_DEPTH_BUFFER		0x7807
14878c8985bdd714f43a96ce922a7c0284d50aec3d1aKenneth Graunke
14888c8985bdd714f43a96ce922a7c0284d50aec3d1aKenneth Graunke#define _3DSTATE_CLEAR_PARAMS			0x7910 /* ILK, SNB */
148968216f35814ab8d292f37b8c0fa0a5f181b7f20dEric Anholt# define GEN5_DEPTH_CLEAR_VALID				(1 << 15)
1490f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW1: depth clear value */
149168216f35814ab8d292f37b8c0fa0a5f181b7f20dEric Anholt/* DW2 */
149268216f35814ab8d292f37b8c0fa0a5f181b7f20dEric Anholt# define GEN7_DEPTH_CLEAR_VALID				(1 << 0)
1493f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
1494e1425a54b119363bf038ec2e1636986980bba77dEric Anholt#define _3DSTATE_SO_DECL_LIST			0x7917 /* GEN7+ */
1495e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* DW1 */
1496e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_3_SHIFT		12
1497e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_3_MASK		INTEL_MASK(15, 12)
1498e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_2_SHIFT		8
1499e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_2_MASK		INTEL_MASK(11, 8)
1500e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_1_SHIFT		4
1501e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_1_MASK		INTEL_MASK(7, 4)
1502e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_0_SHIFT		0
1503e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_STREAM_TO_BUFFER_SELECTS_0_MASK		INTEL_MASK(3, 0)
1504e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* DW2 */
1505e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_3_SHIFT				24
1506e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_3_MASK				INTEL_MASK(31, 24)
1507e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_2_SHIFT				16
1508e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_2_MASK				INTEL_MASK(23, 16)
1509e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_1_SHIFT				8
1510e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_1_MASK				INTEL_MASK(15, 8)
1511e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_0_SHIFT				0
1512e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_NUM_ENTRIES_0_MASK				INTEL_MASK(7, 0)
1513e1425a54b119363bf038ec2e1636986980bba77dEric Anholt
1514e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* SO_DECL DW0 */
1515e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_DECL_OUTPUT_BUFFER_SLOT_SHIFT		12
1516e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_DECL_OUTPUT_BUFFER_SLOT_MASK		INTEL_MASK(13, 12)
1517e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_DECL_HOLE_FLAG				(1 << 11)
1518e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_DECL_REGISTER_INDEX_SHIFT			4
1519e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_DECL_REGISTER_INDEX_MASK			INTEL_MASK(9, 4)
1520e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_DECL_COMPONENT_MASK_SHIFT			0
1521e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_DECL_COMPONENT_MASK_MASK			INTEL_MASK(3, 0)
1522e1425a54b119363bf038ec2e1636986980bba77dEric Anholt
1523e1425a54b119363bf038ec2e1636986980bba77dEric Anholt#define _3DSTATE_SO_BUFFER                    0x7918 /* GEN7+ */
1524e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* DW1 */
1525e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_BUFFER_INDEX_SHIFT				29
1526e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_BUFFER_INDEX_MASK				INTEL_MASK(30, 29)
1527e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_BUFFER_PITCH_SHIFT				0
1528e1425a54b119363bf038ec2e1636986980bba77dEric Anholt# define SO_BUFFER_PITCH_MASK				INTEL_MASK(11, 0)
1529e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* DW2: start address */
1530e1425a54b119363bf038ec2e1636986980bba77dEric Anholt/* DW3: end address. */
1531e1425a54b119363bf038ec2e1636986980bba77dEric Anholt
15329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_PIPE_CONTROL              0x7a00
15339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
15349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_MI_FLUSH                  0x0200
15359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
15369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
15372252e5e3f1e8caece5c73df82f3ddf306baa2c91Paul Berry/* Bitfields for the URB_WRITE message, DW2 of message header: */
15382252e5e3f1e8caece5c73df82f3ddf306baa2c91Paul Berry#define URB_WRITE_PRIM_END		0x1
15392252e5e3f1e8caece5c73df82f3ddf306baa2c91Paul Berry#define URB_WRITE_PRIM_START		0x2
15402252e5e3f1e8caece5c73df82f3ddf306baa2c91Paul Berry#define URB_WRITE_PRIM_TYPE_SHIFT	2
15419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
15429308f298300beaa757194a0db8ed50924754c011Paul Berry
15439308f298300beaa757194a0db8ed50924754c011Paul Berry/* Maximum number of entries that can be addressed using a binding table
15449308f298300beaa757194a0db8ed50924754c011Paul Berry * pointer of type SURFTYPE_BUFFER
15459308f298300beaa757194a0db8ed50924754c011Paul Berry */
15469308f298300beaa757194a0db8ed50924754c011Paul Berry#define BRW_MAX_NUM_BUFFER_ENTRIES	(1 << 27)
15479308f298300beaa757194a0db8ed50924754c011Paul Berry
15488e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao#include "intel_chipset.h"
15499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
15509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#endif
1551