brw_defines.h revision bac10b58de69108bdb2cc3358733e2648ab7c5d2
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  */
319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#ifndef BRW_DEFINES_H
349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEFINES_H
359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* 3D state:
379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */
389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_NOWRITE          0x00
399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_WRITEIMMEDIATE   0x01
409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_WRITEDEPTH       0x02
419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_WRITETIMESTAMP   0x03
429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_GTTWRITE_PROCESS_LOCAL 0x00
449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define PIPE_CONTROL_GTTWRITE_GLOBAL        0x01
459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
46ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke#define CMD_3D_PRIM                                 0x7b00 /* 3DPRIMITIVE */
47ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke/* DW0 */
48ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke# define GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT            10
49ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 15)
50ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM     (1 << 15)
51ff5dd55e264d8f0282aa3ae3dc4f6ab26d98731dKenneth Graunke
529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_POINTLIST         0x01
539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINELIST          0x02
549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP         0x03
559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRILIST           0x04
569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRISTRIP          0x05
579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRIFAN            0x06
589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_QUADLIST          0x07
599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_QUADSTRIP         0x08
609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINELIST_ADJ      0x09
619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_ADJ     0x0A
629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRILIST_ADJ       0x0B
639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRISTRIP_ADJ      0x0C
649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRISTRIP_REVERSE  0x0D
659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_POLYGON           0x0E
669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_RECTLIST          0x0F
679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINELOOP          0x10
689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_POINTLIST_BF      0x11
699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_CONT    0x12
709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_BF      0x13
719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_LINESTRIP_CONT_BF 0x14
729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define _3DPRIM_TRIFAN_NOSTIPPLE  0x15
739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_2     0
759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_4     1
769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_6     2
779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_8     3
789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_10    4
799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_12    5
809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_14    6
819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ANISORATIO_16    7
829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_ONE                 0x1
849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC_COLOR           0x2
859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC_ALPHA           0x3
869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_DST_ALPHA           0x4
879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_DST_COLOR           0x5
889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC_ALPHA_SATURATE  0x6
899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_CONST_COLOR         0x7
909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_CONST_ALPHA         0x8
919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC1_COLOR          0x9
929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_SRC1_ALPHA          0x0A
939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_ZERO                0x11
949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC_COLOR       0x12
959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC_ALPHA       0x13
969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_DST_ALPHA       0x14
979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_DST_COLOR       0x15
989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_CONST_COLOR     0x17
999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_CONST_ALPHA     0x18
1009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC1_COLOR      0x19
1019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFACTOR_INV_SRC1_ALPHA      0x1A
1029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_ADD               0
1049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_SUBTRACT          1
1059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_REVERSE_SUBTRACT  2
1069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_MIN               3
1079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_BLENDFUNCTION_MAX               4
1089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALPHATEST_FORMAT_UNORM8         0
1109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALPHATEST_FORMAT_FLOAT32        1
1119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHROMAKEY_KILL_ON_ANY_MATCH  0
1139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHROMAKEY_REPLACE_BLACK      1
1149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_API_OGL     0
1169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_API_DX      1
1179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_NORMAL              0
1199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_CLIP_ALL            1
1209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_CLIP_NON_REJECTED   2
1219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_REJECT_ALL          3
1229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIPMODE_ACCEPT_ALL          4
1232995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_CLIPMODE_KERNEL_CLIP         5
1249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_NDCSPACE     0
1269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CLIP_SCREENSPACE  1
1279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_ALWAYS       0
1299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_NEVER        1
1309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_LESS         2
1319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_EQUAL        3
1329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_LEQUAL       4
1339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_GREATER      5
1349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_NOTEQUAL     6
1359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPAREFUNCTION_GEQUAL       7
1369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_HALF     0
1389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_1        1
1399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_2        2
1409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COVERAGE_PIXELS_4        3
1419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_BOTH        0
1439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_NONE        1
1449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_FRONT       2
1459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CULLMODE_BACK        3
1469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEFAULTCOLOR_R8G8B8A8_UNORM      0
1489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEFAULTCOLOR_R32G32B32A32_FLOAT  1
1499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D32_FLOAT_S8X24_UINT     0
1519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D32_FLOAT                1
1529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D24_UNORM_S8_UINT        2
1534d7c1871671710865be3020e0d460e0463707f14Chad Versace#define BRW_DEPTHFORMAT_D24_UNORM_X8_UINT        3 /* GEN5 */
1549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPTHFORMAT_D16_UNORM                5
1559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FLOATING_POINT_IEEE_754        0
1579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FLOATING_POINT_NON_IEEE_754    1
1589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FRONTWINDING_CW      0
1609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FRONTWINDING_CCW     1
1619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
162505453a04e8ba5e394c34401bd9ec320ffce2423Zou Nan hai#define BRW_SPRITE_POINT_ENABLE  16
163505453a04e8ba5e394c34401bd9ec320ffce2423Zou Nan hai
1649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INDEX_BYTE     0
1659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INDEX_WORD     1
1669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INDEX_DWORD    2
1679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_CLEAR            0
1699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_NOR              1
1709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_AND_INVERTED     2
1719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_COPY_INVERTED    3
1729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_AND_REVERSE      4
1739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_INVERT           5
1749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_XOR              6
1759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_NAND             7
1769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_AND              8
1779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_EQUIV            9
1789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_NOOP             10
1799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_OR_INVERTED      11
1809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_COPY             12
1819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_OR_REVERSE       13
1829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_OR               14
1839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LOGICOPFUNCTION_SET              15
1849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MAPFILTER_NEAREST        0x0
1869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MAPFILTER_LINEAR         0x1
1879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MAPFILTER_ANISOTROPIC    0x2
1889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MIPFILTER_NONE        0
1909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MIPFILTER_NEAREST     1
1919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MIPFILTER_LINEAR      3
1929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_FRONT_FACING     0
1949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_BACK_FACING      1
1959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_ALWAYS     0x0
1979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_NEVER      0x1
1989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_LESS       0x2
1999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_EQUAL      0x3
2009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_LEQUAL     0x4
2019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_GREATER    0x5
2029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_NOTEQUAL   0x6
2039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREFILTER_GEQUAL     0x7
2049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PROVOKING_VERTEX_0    0
2069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PROVOKING_VERTEX_1    1
2079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PROVOKING_VERTEX_2    2
2089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RASTRULE_UPPER_LEFT  0
2109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RASTRULE_UPPER_RIGHT 1
211cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison/* These are listed as "Reserved, but not seen as useful"
212cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * in Intel documentation (page 212, "Point Rasterization Rule",
213cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * section 7.4 "SF Pipeline State Summary", of document
214cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * "Intel® 965 Express Chipset Family and Intel® G35 Express
215cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * Chipset Graphics Controller Programmer's Reference Manual,
216cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * Volume 2: 3D/Media", Revision 1.0b as of January 2008,
217cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * available at
218cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison *     http://intellinuxgraphics.org/documentation.html
219cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * at the time of this writing).
220cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison *
221cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * These appear to be supported on at least some
222cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * i965-family devices, and the BRW_RASTRULE_LOWER_RIGHT
223cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * is useful when using OpenGL to render to a FBO
224cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * (which has the pixel coordinate Y orientation inverted
225cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison * with respect to the normal OpenGL pixel coordinate system).
226cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison */
227cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison#define BRW_RASTRULE_LOWER_LEFT  2
228cc8afbd3862fedfe42e51c3774960d1c7078ec53Robert Ellison#define BRW_RASTRULE_LOWER_RIGHT 3
2299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RENDERTARGET_CLAMPRANGE_UNORM    0
2319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RENDERTARGET_CLAMPRANGE_SNORM    1
2329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_RENDERTARGET_CLAMPRANGE_FORMAT   2
2339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_KEEP               0
2359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_ZERO               1
2369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_REPLACE            2
2379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_INCRSAT            3
2389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_DECRSAT            4
2399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_INCR               5
2409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_DECR               6
2419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STENCILOP_INVERT             7
2429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_MIPMAPLAYOUT_BELOW   0
2449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_MIPMAPLAYOUT_RIGHT   1
2459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
2469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_FLOAT             0x000
2479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_SINT              0x001
2489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_UINT              0x002
2499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_UNORM             0x003
2509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_SNORM             0x004
2519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64G64_FLOAT                   0x005
2529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32X32_FLOAT             0x006
2539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_SSCALED           0x007
2549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32A32_USCALED           0x008
2559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_FLOAT                0x040
2569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_SINT                 0x041
2579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_UINT                 0x042
2589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_UNORM                0x043
2599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_SNORM                0x044
2609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_SSCALED              0x045
2619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32B32_USCALED              0x046
2629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_UNORM             0x080
2639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_SNORM             0x081
2649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_SINT              0x082
2659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_UINT              0x083
2669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_FLOAT             0x084
2679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_FLOAT                   0x085
2689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_SINT                    0x086
2699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_UINT                    0x087
2709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS       0x088
2719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT        0x089
2729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L32A32_FLOAT                   0x08A
2739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_UNORM                   0x08B
2749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_SNORM                   0x08C
2759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64_FLOAT                      0x08D
2769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16X16_UNORM             0x08E
2779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16X16_FLOAT             0x08F
2789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A32X32_FLOAT                   0x090
2799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L32X32_FLOAT                   0x091
2809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I32X32_FLOAT                   0x092
2819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_SSCALED           0x093
2829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16A16_USCALED           0x094
2839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_SSCALED                 0x095
2849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32G32_USCALED                 0x096
2859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8A8_UNORM                 0x0C0
2869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB            0x0C1
2879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10A2_UNORM              0x0C2
2889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB         0x0C3
2899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10A2_UINT               0x0C4
2909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM       0x0C5
2919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_UNORM                 0x0C7
2929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB            0x0C8
2939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_SNORM                 0x0C9
2949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_SINT                  0x0CA
2959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_UINT                  0x0CB
2969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_UNORM                   0x0CC
2979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_SNORM                   0x0CD
2989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_SINT                    0x0CE
2999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_UINT                    0x0CF
3009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_FLOAT                   0x0D0
3019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B10G10R10A2_UNORM              0x0D1
3029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB         0x0D2
3039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R11G11B10_FLOAT                0x0D3
3049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_SINT                       0x0D6
3059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_UINT                       0x0D7
3069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_FLOAT                      0x0D8
3079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R24_UNORM_X8_TYPELESS          0x0D9
3089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_X24_TYPELESS_G8_UINT           0x0DA
3099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16A16_UNORM                   0x0DF
3109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I24X8_UNORM                    0x0E0
3119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L24X8_UNORM                    0x0E1
3129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A24X8_UNORM                    0x0E2
3139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I32_FLOAT                      0x0E3
3149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L32_FLOAT                      0x0E4
3159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A32_FLOAT                      0x0E5
3169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8X8_UNORM                 0x0E9
3179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB            0x0EA
3189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8X8_UNORM                 0x0EB
3199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB            0x0EC
3209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP             0x0ED
3219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B10G10R10X2_UNORM              0x0EE
3229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16A16_FLOAT                   0x0F0
3239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_UNORM                      0x0F1
3249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_SNORM                      0x0F2
3259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R10G10B10X2_USCALED            0x0F3
3269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_SSCALED               0x0F4
3279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8A8_USCALED               0x0F5
3289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_SSCALED                 0x0F6
3299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16_USCALED                 0x0F7
3309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_SSCALED                    0x0F8
3319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R32_USCALED                    0x0F9
3329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G6R5_UNORM                   0x100
3339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G6R5_UNORM_SRGB              0x101
3349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G5R5A1_UNORM                 0x102
3359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB            0x103
3369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B4G4R4A4_UNORM                 0x104
3379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB            0x105
3389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_UNORM                     0x106
3399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_SNORM                     0x107
3409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_SINT                      0x108
3419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_UINT                      0x109
3429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_UNORM                      0x10A
3439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_SNORM                      0x10B
3449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_SINT                       0x10C
3459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_UINT                       0x10D
3469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_FLOAT                      0x10E
3479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I16_UNORM                      0x111
3489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16_UNORM                      0x112
3499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A16_UNORM                      0x113
3509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L8A8_UNORM                     0x114
3519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I16_FLOAT                      0x115
3529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L16_FLOAT                      0x116
353a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_A16_FLOAT                      0x117
354a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_L8A8_UNORM_SRGB                0x118
355a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_R5G5_SNORM_B6_UNORM            0x119
356a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_B5G5R5X1_UNORM                 0x11A
3579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB            0x11B
3589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_SSCALED                   0x11C
3599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8_USCALED                   0x11D
3609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_SSCALED                    0x11E
3619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16_USCALED                    0x11F
3629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_UNORM                       0x140
3639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_SNORM                       0x141
3649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_SINT                        0x142
3659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_UINT                        0x143
3669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A8_UNORM                       0x144
3679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_I8_UNORM                       0x145
3689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_L8_UNORM                       0x146
3699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_P4A4_UNORM                     0x147
3709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_A4P4_UNORM                     0x148
3719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_SSCALED                     0x149
3729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8_USCALED                     0x14A
373a693a2998c996f063edec8a83a4f6a175f39c471Roland Scheidegger#define BRW_SURFACEFORMAT_L8_UNORM_SRGB                  0x14C
37406cb1a6a5bdba5654408e3568584e1ab168266b7Eric Anholt#define BRW_SURFACEFORMAT_DXT1_RGB_SRGB                  0x180
3759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R1_UINT                        0x181
3769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_NORMAL                   0x182
3779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_SWAPUVY                  0x183
3789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC1_UNORM                      0x186
3799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC2_UNORM                      0x187
3809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC3_UNORM                      0x188
3819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC4_UNORM                      0x189
3829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC5_UNORM                      0x18A
3839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC1_UNORM_SRGB                 0x18B
3849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC2_UNORM_SRGB                 0x18C
3859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC3_UNORM_SRGB                 0x18D
3869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_MONO8                          0x18E
3879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_SWAPUV                   0x18F
3889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_YCRCB_SWAPY                    0x190
3899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_DXT1_RGB                       0x191
3909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_FXT1                           0x192
3919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_UNORM                   0x193
3929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_SNORM                   0x194
3939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_SSCALED                 0x195
3949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R8G8B8_USCALED                 0x196
3959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64G64B64A64_FLOAT             0x197
3969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R64G64B64_FLOAT                0x198
3979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC4_SNORM                      0x199
3989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_BC5_SNORM                      0x19A
3999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_UNORM                0x19C
4009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_SNORM                0x19D
4019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_SSCALED              0x19E
4029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACEFORMAT_R16G16B16_USCALED              0x19F
4039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACERETURNFORMAT_FLOAT32  0
4059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACERETURNFORMAT_S1       1
4069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_1D      0
4089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_2D      1
4099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_3D      2
4109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_CUBE    3
4119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_BUFFER  4
4129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SURFACE_NULL    7
4139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_WRAP            0
4159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_MIRROR          1
4169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_CLAMP           2
4179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_CUBE            3
4189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_CLAMP_BORDER    4
4199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TEXCOORDMODE_MIRROR_ONCE     5
4209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_PRIORITY_NORMAL   0
4229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_PRIORITY_HIGH     1
4239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TILEWALK_XMAJOR                 0
4259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_TILEWALK_YMAJOR                 1
4269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTEX_SUBPIXEL_PRECISION_8BITS  0
4289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTEX_SUBPIXEL_PRECISION_4BITS  1
4299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* Execution Unit (EU) defines
4319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */
4329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALIGN_1   0
4349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ALIGN_16  1
4359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ADDRESS_DIRECT                        0
4379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ADDRESS_REGISTER_INDIRECT_REGISTER    1
4389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_X     0
4409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_Y     1
4419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_Z     2
4429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CHANNEL_W     3
4439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPRESSION_NONE          0
4459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPRESSION_2NDHALF       1
4469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_COMPRESSION_COMPRESSED    2
4479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
448245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_1Q		0
449245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_2Q		1
450245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_3Q		2
451245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_4Q		3
452245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_1H		0
453245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt#define GEN6_COMPRESSION_2H		2
454245662f3083795e272fe9ef5d4cbeb6d048cf0e5Eric Anholt
4559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_NONE  0
4569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_Z     1
4579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_NZ    2
4589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_EQ    1	/* Z */
4599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_NEQ   2	/* NZ */
4609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_G     3
4619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_GE    4
4629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_L     5
4639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_LE    6
4641d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt#define BRW_CONDITIONAL_R     7
4659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CONDITIONAL_O     8
4661d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt#define BRW_CONDITIONAL_U     9
4679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEBUG_NONE        0
4699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEBUG_BREAKPOINT  1
4709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_NORMAL         0
4729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_NOTCLEARED     1
4739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_NOTCHECKED     2
4749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DEPENDENCY_DISABLE        3
4759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_1     0
4779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_2     1
4789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_4     2
4799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_8     3
4809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_16    4
4819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_EXECUTE_32    5
4829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_0   0
4849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_1   1
4859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_2   2
4869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_HORIZONTAL_STRIDE_4   3
4879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INSTRUCTION_NORMAL    0
4899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INSTRUCTION_SATURATE  1
4909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MASK_ENABLE   0
4929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MASK_DISABLE  1
4939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
4945d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/** @{
4955d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt *
4965d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * Gen6 has replaced "mask enable/disable" with WECtrl, which is
4975d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * effectively the same but much simpler to think about.  Now, there
4985d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * are two contributors ANDed together to whether channels are
4995d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * executed: The predication on the instruction, and the channel write
5005d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * enable.
5015d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt */
5025d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/**
5035d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * This is the default value.  It means that a channel's write enable is set
5045d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * if the per-channel IP is pointing at this instruction.
5055d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt */
50604466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang#define BRW_WE_NORMAL		0
5075d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/**
5085d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * This is used like BRW_MASK_DISABLE, and causes all channels to have
5095d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * their write enable set.  Note that predication still contributes to
5105d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt * whether the channel actually gets written.
5115d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt */
5125d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt#define BRW_WE_ALL		1
5135d99b01501128c7179cdd6aa29bc8953d0d81e75Eric Anholt/** @} */
51404466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang
5159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_MOV        1
5169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_SEL        2
5179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_NOT        4
5189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_AND        5
5199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_OR         6
5209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_XOR        7
5219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_SHR        8
5229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_SHL        9
5239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_RSR        10
5249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_RSL        11
5259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_ASR        12
5269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_CMP        16
5271d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt#define BRW_OPCODE_CMPN       17
5289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_JMPI       32
5299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_IF         34
5309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_IFF        35
5319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_ELSE       36
5329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_ENDIF      37
5339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_DO         38
5349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_WHILE      39
5359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_BREAK      40
5369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_CONTINUE   41
5379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_HALT       42
5389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_MSAVE      44
5399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_MRESTORE   45
5409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_PUSH       46
5419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_POP        47
5429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_WAIT       48
5439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_SEND       49
5441732a8bc72fe0a8eaf7449eda65eba1a017ae909Eric Anholt#define BRW_OPCODE_SENDC      50
54538c449409207c8948c1961a3132475bbd422f8f1Eric Anholt#define BRW_OPCODE_MATH       56
5469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_ADD        64
5479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_MUL        65
5489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_AVG        66
5499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_FRC        67
5509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_RNDU       68
5519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_RNDD       69
5529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_RNDE       70
5539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_RNDZ       71
5549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_MAC        72
5559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_MACH       73
5569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_LZD        74
5579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_SAD2       80
5589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_SADA2      81
5599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_DP4        84
5609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_DPH        85
5619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_DP3        86
5629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_DP2        87
5639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_DPA2       88
5649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_LINE       89
56556ff30a9f97a1a7094432333906544d6138d6bf2Eric Anholt#define BRW_OPCODE_PLN        90
5669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_OPCODE_NOP        126
5679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_NONE             0
5699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_NORMAL           1
5709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANYV             2
5719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALLV             3
5729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY2H            4
5739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL2H            5
5749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY4H            6
5759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL4H            7
5769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY8H            8
5779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL8H            9
5789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ANY16H           10
5799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN1_ALL16H           11
5809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_X     2
5819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_Y     3
5829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_Z     4
5839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_REPLICATE_W     5
5849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_ANY4H           6
5859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_PREDICATE_ALIGN16_ALL4H           7
5869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARCHITECTURE_REGISTER_FILE    0
5889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_GENERAL_REGISTER_FILE         1
5899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MESSAGE_REGISTER_FILE         2
5909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_IMMEDIATE_VALUE               3
5919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
5929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_UD  0
5939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_D   1
5949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_UW  2
5959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_W   3
5969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_UB  4
5979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_B   5
5989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_VF  5	/* packed float vector, immediates only? */
5999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_HF  6
6009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_V   6	/* packed int vector, immediates only, uword dest only */
6019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_REGISTER_TYPE_F   7
6029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_NULL                  0x00
6049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_ADDRESS               0x10
6059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_ACCUMULATOR           0x20
6069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_FLAG                  0x30
6079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_MASK                  0x40
6089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_MASK_STACK            0x50
6099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_MASK_STACK_DEPTH      0x60
6109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_STATE                 0x70
6119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_CONTROL               0x80
6129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_NOTIFICATION_COUNT    0x90
6139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_ARF_IP                    0xA0
6149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
615b3ea15f12b931a38d18b4b250031832916380174Eric Anholt#define BRW_MRF_COMPR4			(1 << 7)
616b3ea15f12b931a38d18b4b250031832916380174Eric Anholt
6179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_AMASK   0
6189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_IMASK   1
6199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_LMASK   2
6209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_CMASK   3
6219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_NORMAL     0
6259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_ATOMIC     1
6269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_THREAD_SWITCH     2
6279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_0                 0
6299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_1                 1
6309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_2                 2
6319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_4                 3
6329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_8                 4
6339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_16                5
6349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_32                6
6359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_64                7
6369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_128               8
6379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_256               9
6389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_VERTICAL_STRIDE_ONE_DIMENSIONAL   0xF
6399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_1       0
6419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_2       1
6429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_4       2
6439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_8       3
6449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_WIDTH_16      4
6459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_1K      0
6479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_2K      1
6489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_4K      2
6499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_8K      3
6509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_16K     4
6519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_32K     5
6529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_64K     6
6539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_128K    7
6549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_256K    8
6559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_512K    9
6569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_1M      10
6579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STATELESS_BUFFER_BOUNDARY_2M      11
6589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_FACING_FRONT      0
6609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_POLYGON_FACING_BACK       1
6619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MESSAGE_TARGET_NULL               0
66304466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang#define BRW_MESSAGE_TARGET_MATH               1 /* reserved on GEN6 */
6649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MESSAGE_TARGET_SAMPLER            2
6659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MESSAGE_TARGET_GATEWAY            3
66617eaff77b09d356aae46c5d89a8eaa67cfa4c1e7Kenneth Graunke#define BRW_MESSAGE_TARGET_DATAPORT_READ      4
66717eaff77b09d356aae46c5d89a8eaa67cfa4c1e7Kenneth Graunke#define BRW_MESSAGE_TARGET_DATAPORT_WRITE     5
6689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MESSAGE_TARGET_URB                6
6699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MESSAGE_TARGET_THREAD_SPAWNER     7
67017eaff77b09d356aae46c5d89a8eaa67cfa4c1e7Kenneth Graunke
67117eaff77b09d356aae46c5d89a8eaa67cfa4c1e7Kenneth Graunke#define GEN6_MESSAGE_TARGET_DP_SAMPLER_CACHE  4
67217eaff77b09d356aae46c5d89a8eaa67cfa4c1e7Kenneth Graunke#define GEN6_MESSAGE_TARGET_DP_RENDER_CACHE   5
67317eaff77b09d356aae46c5d89a8eaa67cfa4c1e7Kenneth Graunke#define GEN6_MESSAGE_TARGET_DP_CONST_CACHE    9
6749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_RETURN_FORMAT_FLOAT32     0
6769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_RETURN_FORMAT_UINT32      2
6779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_RETURN_FORMAT_SINT32      3
6789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
6799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE              0
6809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE             0
6819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS        0
6829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_KILLPIX             1
6839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD        1
6849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD         1
6859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_GRADIENTS  2
6869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_GRADIENTS    2
6879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE    0
6889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE     2
689a3cd542894606e3f2c892a4218cc6f7370c827a5Kenneth Graunke#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_BIAS_COMPARE 0
690a3cd542894606e3f2c892a4218cc6f7370c827a5Kenneth Graunke#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_LOD_COMPARE  1
6919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_RESINFO           2
6929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_RESINFO             2
6939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_RESINFO            2
6949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD4X2_LD                3
6959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD8_LD                  3
6969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SAMPLER_MESSAGE_SIMD16_LD                 3
6979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
698cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE              0
699cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS         1
700cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_LOD          2
701cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_COMPARE      3
702cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_DERIVS       4
703cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE 5
704cc48d663f7282411d88c6187ce3d03f21df0acd3Kenneth Graunke#define GEN5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE  6
7052995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao
706cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang/* for GEN5 only */
7072995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD4X2                   0
7082995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD8                     1
7092995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD16                    2
7102995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao#define BRW_SAMPLER_SIMD_MODE_SIMD32_64                 3
7112995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao
7129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_1_OWORDLOW   0
7139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_1_OWORDHIGH  1
7149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_2_OWORDS     2
7159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_4_OWORDS     3
7169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_BLOCK_8_OWORDS     4
7179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_DUAL_BLOCK_1OWORD     0
7199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_OWORD_DUAL_BLOCK_4OWORDS    2
7209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS   2
7229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_DWORD_SCATTERED_BLOCK_16DWORDS  3
7239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7249e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt/* This one stays the same across generations. */
7259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ          0
7269e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt/* GEN4 */
7279e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ     1
7289e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_MEDIA_BLOCK_READ          2
7299e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define BRW_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ      3
7309e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt/* G45, GEN5 */
7319e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_RENDER_UNORM_READ	    1
7329e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ     2
7339e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_AVC_LOOP_FILTER_READ	    3
7349e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_MEDIA_BLOCK_READ          4
7359e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define G45_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ      6
73604466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang/* GEN6 */
7379e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_RENDER_UNORM_READ	    1
7389e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ     2
7399e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_MEDIA_BLOCK_READ          4
7409e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_OWORD_UNALIGN_BLOCK_READ  5
7419e9e87a9b20c581315ff679dc2541d9e442a6301Eric Anholt#define GEN6_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ      6
7429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_TARGET_DATA_CACHE      0
7449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_TARGET_RENDER_CACHE    1
7459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_READ_TARGET_SAMPLER_CACHE   2
7469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE                0
7489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE_REPLICATED     1
7499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN01         2
7509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN23         3
7519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01       4
7529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE                0
7549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE           1
755f247b2d633f85d70f006df8e8588072f57ee847cKenneth Graunke#define BRW_DATAPORT_WRITE_MESSAGE_MEDIA_BLOCK_WRITE                2
7569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE            3
7579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE              4
7589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_STREAMED_VERTEX_BUFFER_WRITE     5
7599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_DATAPORT_WRITE_MESSAGE_FLUSH_RENDER_CACHE               7
7609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
76104466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang/* GEN6 */
7622baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_DWORD_ATOMIC_WRITE              7
7632baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE               8
7642baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE          9
7652baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_MEDIA_BLOCK_WRITE               10
766ceaec241494ddde8ab49c7d90814b0350c99d222Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE           11
7672baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE             12
7682baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_STREAMED_VB_WRITE               13
7692baac48f3900b6e7a6443c6c116899cf95275629Kenneth Graunke#define GEN6_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_UNORM_WRITE       14
77004466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang
7719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INV                              1
7729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_LOG                              2
7739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_EXP                              3
7749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_SQRT                             4
7759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_RSQ                              5
7769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_SIN                              6 /* was 7 */
7779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_COS                              7 /* was 8 */
7789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_SINCOS                           8 /* was 6 */
77938c449409207c8948c1961a3132475bbd422f8f1Eric Anholt#define BRW_MATH_FUNCTION_TAN                              9 /* gen4 */
78038c449409207c8948c1961a3132475bbd422f8f1Eric Anholt#define BRW_MATH_FUNCTION_FDIV                             9 /* gen6+ */
7819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_POW                              10
7829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER   11
7839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INT_DIV_QUOTIENT                 12
7849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_FUNCTION_INT_DIV_REMAINDER                13
7859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_INTEGER_UNSIGNED     0
7879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_INTEGER_SIGNED       1
7889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_PRECISION_FULL        0
7909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_PRECISION_PARTIAL     1
7919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_SATURATE_NONE         0
7939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_SATURATE_SATURATE     1
7949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_DATA_VECTOR  0
7969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_MATH_DATA_SCALAR  1
7979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
7989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_OPCODE_WRITE  0
7999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_SWIZZLE_NONE          0
8019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_SWIZZLE_INTERLEAVE    1
8029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_URB_SWIZZLE_TRANSPOSE     2
8039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_1K     0
8059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_2K     1
8069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_4K     2
8079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_8K     3
8089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_16K    4
8099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_32K    5
8109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_64K    6
8119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_128K   7
8129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_256K   8
8139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_512K   9
8149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_1M     10
8159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_SCRATCH_SPACE_SIZE_2M     11
8169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_URB_FENCE                 0x6000
821d0415a5a01c1a8c2c2a389d977401a7f6cee031bEric Anholt#define CMD_CS_URB_STATE              0x6001
8229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_CONST_BUFFER              0x6002
8239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
8249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_STATE_BASE_ADDRESS        0x6101
8259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_STATE_INSN_POINTER        0x6102
8268e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao#define CMD_PIPELINE_SELECT_965       0x6104
82792c075eeb7c330ea420400d1c2bae57356b19f03Xiang, Haihao#define CMD_PIPELINE_SELECT_GM45      0x6904
8289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
82971acbb54f49089b03d3498b6f88c1681d3f649acKenneth Graunke#define _3DSTATE_PIPELINED_POINTERS		0x7800
83071acbb54f49089b03d3498b6f88c1681d3f649acKenneth Graunke#define _3DSTATE_BINDING_TABLE_POINTERS		0x7801
8319dce60f35b25f4f5605b22d75447bac5d9f55515Eric Anholt# define GEN6_BINDING_TABLE_MODIFY_VS	(1 << 8)
8329dce60f35b25f4f5605b22d75447bac5d9f55515Eric Anholt# define GEN6_BINDING_TABLE_MODIFY_GS	(1 << 9)
8330f88ce1b0a98c7cacaa0dc53bbbb1f3c379aaa6aZou Nan hai# define GEN6_BINDING_TABLE_MODIFY_PS	(1 << 12)
834931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt
835e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SAMPLER_STATE_POINTERS		0x7802 /* GEN6+ */
836c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt# define PS_SAMPLER_STATE_CHANGE				(1 << 12)
837c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt# define GS_SAMPLER_STATE_CHANGE				(1 << 9)
838c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt# define VS_SAMPLER_STATE_CHANGE				(1 << 8)
839c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt/* DW1: VS */
840c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt/* DW2: GS */
841c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt/* DW3: PS */
842c791f8a1e532834ae7a517c042e9efe262b62233Eric Anholt
8439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_VERTEX_BUFFER             0x7808
844931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_INDEX_SHIFT		27
845ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VB0_INDEX_SHIFT		26
846931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_ACCESS_VERTEXDATA	(0 << 26)
847931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_ACCESS_INSTANCEDATA	(1 << 26)
848ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VB0_ACCESS_VERTEXDATA	(0 << 20)
849ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VB0_ACCESS_INSTANCEDATA	(1 << 20)
850931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VB0_PITCH_SHIFT		0
851931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt
8529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_VERTEX_ELEMENT            0x7809
853931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_INDEX_SHIFT		27
854ff3997904ab988824e744fdbecde6eb79d9bf40fEric Anholt# define GEN6_VE0_INDEX_SHIFT		26
855931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_FORMAT_SHIFT		16
856931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_VALID			(1 << 26)
857d790564f9452d6fa0378346a85c792aa346c1a57Eric Anholt# define GEN6_VE0_VALID			(1 << 25)
858931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE0_SRC_OFFSET_SHIFT	0
859931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_NOSTORE	0
860931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_SRC	1
861931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_0	2
862931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_1_FLT	3
863931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_1_INT	4
864931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_VID	5
865931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_IID	6
866931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_STORE_PID	7
867931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_0_SHIFT	28
868931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_1_SHIFT	24
869931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_2_SHIFT	20
870931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_COMPONENT_3_SHIFT	16
871931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt# define BRW_VE1_DST_OFFSET_SHIFT	0
872931685e243af52271d4cdc0ddc8ea153036dee42Eric Anholt
8739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_INDEX_BUFFER              0x780a
874ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt#define CMD_VF_STATISTICS_965          0x780b
87592c075eeb7c330ea420400d1c2bae57356b19f03Xiang, Haihao#define CMD_VF_STATISTICS_GM45        0x680b
876e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CC_STATE_POINTERS		0x780e /* GEN6+ */
87724d0ed72c1817b624e3021b12a0987b2c5edd71bKenneth Graunke#define _3DSTATE_BLEND_STATE_POINTERS		0x7824 /* GEN7+ */
87824d0ed72c1817b624e3021b12a0987b2c5edd71bKenneth Graunke#define _3DSTATE_DEPTH_STENCIL_STATE_POINTERS	0x7825 /* GEN7+ */
879ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt
8808832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB				0x7805 /* GEN6 */
881c9dc6d425e645f2988118ff51cabe167a0cd3971Eric Anholt# define GEN6_URB_VS_SIZE_SHIFT				16
882c9dc6d425e645f2988118ff51cabe167a0cd3971Eric Anholt# define GEN6_URB_VS_ENTRIES_SHIFT			0
883073f8d1c00165acccb60f878a2aa770c2b885aecEric Anholt# define GEN6_URB_GS_ENTRIES_SHIFT			8
884073f8d1c00165acccb60f878a2aa770c2b885aecEric Anholt# define GEN6_URB_GS_SIZE_SHIFT				0
885c9dc6d425e645f2988118ff51cabe167a0cd3971Eric Anholt
8868832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_VS                         0x7830 /* GEN7+ */
8878832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_HS                         0x7831 /* GEN7+ */
8888832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_DS                         0x7832 /* GEN7+ */
8898832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_URB_GS                         0x7833 /* GEN7+ */
8908832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke# define GEN7_URB_ENTRY_SIZE_SHIFT                      16
8918832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke# define GEN7_URB_STARTING_ADDRESS_SHIFT                25
8928832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke
8938832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_PUSH_CONSTANT_ALLOC_VS         0x7912 /* GEN7+ */
8948832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke#define _3DSTATE_PUSH_CONSTANT_ALLOC_PS         0x7916 /* GEN7+ */
8958832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke# define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT         16
8968832920c298f4e13ffd5e53feeba509be69edb16Kenneth Graunke
897e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_VIEWPORT_STATE_POINTERS	0x780d /* GEN6+ */
8981ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt# define GEN6_CC_VIEWPORT_MODIFY			(1 << 12)
8991ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt# define GEN6_SF_VIEWPORT_MODIFY			(1 << 11)
9001ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt# define GEN6_CLIP_VIEWPORT_MODIFY			(1 << 10)
9011ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt
90218402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke#define _3DSTATE_VIEWPORT_STATE_POINTERS_CC	0x7823 /* GEN7+ */
90318402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke#define _3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL	0x7821 /* GEN7+ */
90418402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke
905e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SCISSOR_STATE_POINTERS		0x780f /* GEN6+ */
90664e0c586a74553b2941f18feb199d8cddb192102Eric Anholt
907e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_VS				0x7810 /* GEN6+ */
908520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW2 */
909ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_SPF_MODE				(1 << 31)
910ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_VECTOR_MASK_ENABLE			(1 << 30)
911ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_SAMPLER_COUNT_SHIFT			27
912ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
913c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_VS_FLOATING_POINT_MODE_IEEE_754		(0 << 16)
914c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_VS_FLOATING_POINT_MODE_ALT		(1 << 16)
915520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW4 */
916d512aa3d6d9948f5c294110fdae7a24aaf37051fEric Anholt# define GEN6_VS_DISPATCH_START_GRF_SHIFT		20
917ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_URB_READ_LENGTH_SHIFT			11
918d512aa3d6d9948f5c294110fdae7a24aaf37051fEric Anholt# define GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT		4
919a935cb2acafab199ac5ed4f2484af77be2af6363Eric Anholt/* DW5 */
920ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_MAX_THREADS_SHIFT			25
921ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_STATISTICS_ENABLE			(1 << 10)
922ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_CACHE_DISABLE				(1 << 1)
923ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt# define GEN6_VS_ENABLE					(1 << 0)
924ba882d7827e5526e99c9d5c453d56c5e029c7476Eric Anholt
925e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_GS		      		0x7811 /* GEN6+ */
926520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW2 */
927520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_SPF_MODE				(1 << 31)
928520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_VECTOR_MASK_ENABLE			(1 << 30)
929520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_SAMPLER_COUNT_SHIFT			27
930520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
931520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW4 */
932520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_URB_READ_LENGTH_SHIFT			11
933bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke# define GEN7_GS_INCLUDE_VERTEX_HANDLES		        (1 << 10)
934d512aa3d6d9948f5c294110fdae7a24aaf37051fEric Anholt# define GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT		4
935da577ee8800b940fcf416716c13133cd43c3d035Eric Anholt# define GEN6_GS_DISPATCH_START_GRF_SHIFT		0
936520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW5 */
937520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_MAX_THREADS_SHIFT			25
938520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_STATISTICS_ENABLE			(1 << 10)
939520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_SO_STATISTICS_ENABLE			(1 << 9)
940520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_RENDERING_ENABLE			(1 << 8)
941bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke# define GEN7_GS_ENABLE					(1 << 0)
942520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt/* DW6 */
943520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_GS_ENABLE					(1 << 15)
944520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt
945bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_HS                             0x781B /* GEN7+ */
946bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_TE                             0x781C /* GEN7+ */
947bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_DS                             0x781D /* GEN7+ */
948bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke
949e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CLIP				0x7812 /* GEN6+ */
950f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt/* DW1 */
95181fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_WINDING_CW                           (0 << 20)
95281fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_WINDING_CCW                          (1 << 20)
95381fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_VERTEX_SUBPIXEL_PRECISION_8          (0 << 19)
95481fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_VERTEX_SUBPIXEL_PRECISION_4          (1 << 19)
95581fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_EARLY_CULL                           (1 << 18)
95681fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_BOTH                        (0 << 16)
95781fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_NONE                        (1 << 16)
95881fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_FRONT                       (2 << 16)
95981fd03fe56372c5c702bf257e821cea71ee25448Kenneth Graunke# define GEN7_CLIP_CULLMODE_BACK                        (3 << 16)
960f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_STATISTICS_ENABLE			(1 << 10)
961e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt/**
962e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt * Just does cheap culling based on the clip distance.  Bits must be
963e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt * disjoint with USER_CLIP_CLIP_DISTANCE bits.
964e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt */
965e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt# define GEN6_USER_CLIP_CULL_DISTANCES_SHIFT		0
966f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt/* DW2 */
967f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_ENABLE				(1 << 31)
968dedfc0e6e606594b9b1772c6b0689f7fa547c3aaEric Anholt# define GEN6_CLIP_API_OGL				(0 << 30)
969dedfc0e6e606594b9b1772c6b0689f7fa547c3aaEric Anholt# define GEN6_CLIP_API_D3D				(1 << 30)
970f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_XY_TEST				(1 << 28)
971f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_Z_TEST				(1 << 27)
972f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_GB_TEST				(1 << 26)
973e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt/** 8-bit field of which user clip distances to clip aganist. */
974e30a3e7aa09c373c0a02df555d090693718f0fe8Eric Anholt# define GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT		16
975f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MODE_NORMAL				(0 << 13)
976f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MODE_REJECT_ALL			(3 << 13)
977f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MODE_ACCEPT_ALL			(4 << 13)
978f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_PERSPECTIVE_DIVIDE_DISABLE		(1 << 9)
979f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_BARYCENTRIC_ENABLE			(1 << 8)
980f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_TRI_PROVOKE_SHIFT			4
981f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_LINE_PROVOKE_SHIFT			2
982f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_TRIFAN_PROVOKE_SHIFT			0
983f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt/* DW3 */
984f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MIN_POINT_WIDTH_SHIFT		17
985f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt# define GEN6_CLIP_MAX_POINT_WIDTH_SHIFT		6
98603218a00932e83f0ffd0c3077bbbe65a7765c572Zhenyu Wang# define GEN6_CLIP_FORCE_ZERO_RTAINDEX			(1 << 5)
987f58fbcf7618bcc6ef9da8e8939100b14ea4d584bEric Anholt
988e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SF				0x7813 /* GEN6+ */
9897d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW1 (for gen6) */
99070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_NUM_OUTPUTS_SHIFT			22
99170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_SWIZZLE_ENABLE				(1 << 21)
99270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_POINT_SPRITE_LOWERLEFT			(1 << 20)
99370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_URB_ENTRY_READ_LENGTH_SHIFT		11
99470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT		4
99570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW2 */
99670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LEGACY_GLOBAL_DEPTH_BIAS		(1 << 11)
99770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_STATISTICS_ENABLE			(1 << 10)
99870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_GLOBAL_DEPTH_OFFSET_SOLID		(1 << 9)
99970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_GLOBAL_DEPTH_OFFSET_WIREFRAME		(1 << 8)
100070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_GLOBAL_DEPTH_OFFSET_POINT		(1 << 7)
100170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_FRONT_SOLID				(0 << 5)
100270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_FRONT_WIREFRAME			(1 << 5)
100370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_FRONT_POINT				(2 << 5)
100470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_BACK_SOLID				(0 << 3)
100570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_BACK_WIREFRAME				(1 << 3)
100670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_BACK_POINT				(2 << 3)
100770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_VIEWPORT_TRANSFORM_ENABLE		(1 << 1)
100870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_WINDING_CCW				(1 << 0)
100970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW3 */
101070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_AA_ENABLE				(1 << 31)
101170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_BOTH				(0 << 29)
101270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_NONE				(1 << 29)
101370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_FRONT				(2 << 29)
101470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_CULL_BACK				(3 << 29)
101570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_WIDTH_SHIFT			18 /* U3.7 */
101670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_0_5			(0 << 16)
101770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_1_0			(1 << 16)
101870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_2_0			(2 << 16)
101970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_END_CAP_WIDTH_4_0			(3 << 16)
102070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_SCISSOR_ENABLE				(1 << 11)
102170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_OFF_PIXEL			(0 << 8)
102270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_OFF_PATTERN			(1 << 8)
102370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_ON_PIXEL			(2 << 8)
102470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_MSRAST_ON_PATTERN			(3 << 8)
102570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW4 */
102670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_TRI_PROVOKE_SHIFT			29
102770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_PROVOKE_SHIFT			27
102870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_TRIFAN_PROVOKE_SHIFT			25
102970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_AA_MODE_MANHATTAN			(0 << 14)
103070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_LINE_AA_MODE_TRUE			(1 << 14)
103170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_VERTEX_SUBPIXEL_8BITS			(0 << 12)
103270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_VERTEX_SUBPIXEL_4BITS			(1 << 12)
103370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_USE_STATE_POINT_WIDTH			(1 << 11)
103470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define GEN6_SF_POINT_WIDTH_SHIFT			0 /* U8.3 */
103570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW5: depth offset constant */
103670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW6: depth offset scale */
103770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW7: depth offset clamp */
103870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW8 */
103970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_W				(1 << 31)
104070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_Z				(1 << 30)
104170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_Y				(1 << 29)
104270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_OVERRIDE_X				(1 << 28)
104370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_CONST_SOURCE_SHIFT			25
104470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_SWIZZLE_SHIFT			22
104570be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_1_SOURCE_SHIFT			16
104670be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_W				(1 << 15)
104770be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_Z				(1 << 14)
104870be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_Y				(1 << 13)
104970be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_OVERRIDE_X				(1 << 12)
105070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_CONST_SOURCE_SHIFT			9
105170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_SWIZZLE_SHIFT			6
105270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt# define ATTRIBUTE_0_SOURCE_SHIFT			0
1053e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao
1054e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR                    0
1055e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR_FACING             1
1056e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR_W                  2
1057e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_INPUTATTR_FACING_W           3
1058e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao# define ATTRIBUTE_SWIZZLE_SHIFT                        6
1059e47eacdc53aec6743c42c8d9ab8298f802161733Xiang, Haihao
106070be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW16: Point sprite texture coordinate enables */
106170be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW17: Constant interpolation enables */
106270be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW18: attr 0-7 wrap shortest enables */
106370be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt/* DW19: attr 8-16 wrap shortest enables */
106470be48dff6bb68c61285641e4d976bfd53e0f00cEric Anholt
10657d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* On GEN7, many fields of 3DSTATE_SF were split out into a new command:
10667d608d0c331c101088273655708965fb9f1be56eKenneth Graunke * 3DSTATE_SBE.  The remaining fields live in different DWords, but retain
10677d608d0c331c101088273655708965fb9f1be56eKenneth Graunke * the same bit-offset.  The only new field:
10687d608d0c331c101088273655708965fb9f1be56eKenneth Graunke */
10697d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* GEN7/DW1: */
10707d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SF_DEPTH_BUFFER_SURFACE_FORMAT_SHIFT	12
10717d608d0c331c101088273655708965fb9f1be56eKenneth Graunke
10727d608d0c331c101088273655708965fb9f1be56eKenneth Graunke#define _3DSTATE_SBE				0x781F /* GEN7+ */
10737d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW1 */
10747d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_SWIZZLE_CONTROL_MODE			(1 << 28)
10757d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_NUM_OUTPUTS_SHIFT			22
10767d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_SWIZZLE_ENABLE			(1 << 21)
10777d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_POINT_SPRITE_LOWERLEFT		(1 << 20)
10787d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT		11
10797d608d0c331c101088273655708965fb9f1be56eKenneth Graunke# define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT		4
10807d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW2-9: Attribute setup (same as DW8-15 of gen6 _3DSTATE_SF) */
10817d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW10: Point sprite texture coordinate enables */
10827d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW11: Constant interpolation enables */
10837d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW12: attr 0-7 wrap shortest enables */
10847d608d0c331c101088273655708965fb9f1be56eKenneth Graunke/* DW13: attr 8-16 wrap shortest enables */
10857d608d0c331c101088273655708965fb9f1be56eKenneth Graunke
1086e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_WM				0x7814 /* GEN6+ */
1087ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW1: kernel pointer */
1088ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW2 */
1089ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_SPF_MODE				(1 << 31)
1090ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_VECTOR_MASK_ENABLE			(1 << 30)
1091ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_SAMPLER_COUNT_SHIFT			27
1092ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
1093c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_WM_FLOATING_POINT_MODE_IEEE_754		(0 << 16)
1094c52adfc2e1d130effea940e75690897eb5d3ceaaEric Anholt# define GEN6_WM_FLOATING_POINT_MODE_ALT		(1 << 16)
1095ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW3: scratch space */
1096ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW4 */
1097ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_STATISTICS_ENABLE			(1 << 31)
1098ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DEPTH_CLEAR				(1 << 30)
1099ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DEPTH_RESOLVE				(1 << 28)
1100ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_HIERARCHICAL_DEPTH_RESOLVE		(1 << 27)
1101ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_START_GRF_SHIFT_0		16
1102ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_START_GRF_SHIFT_1		8
1103ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_START_GRF_SHIFT_2		0
1104ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW5 */
1105ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MAX_THREADS_SHIFT			25
1106ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_KILL_ENABLE				(1 << 22)
1107ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_COMPUTED_DEPTH				(1 << 21)
1108ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_USES_SOURCE_DEPTH			(1 << 20)
1109ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DISPATCH_ENABLE			(1 << 19)
1110ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_0_5		(0 << 16)
1111ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_1_0		(1 << 16)
1112ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_2_0		(2 << 16)
1113ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_END_CAP_AA_WIDTH_4_0		(3 << 16)
1114ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_0_5			(0 << 14)
1115ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_1_0			(1 << 14)
1116ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_2_0			(2 << 14)
1117ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_LINE_AA_WIDTH_4_0			(3 << 14)
1118ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POLYGON_STIPPLE_ENABLE			(1 << 13)
11199a1ce46fce4f2a4317fd4e2d0b4309e774b3adcaZhenyu Wang# define GEN6_WM_LINE_STIPPLE_ENABLE			(1 << 11)
1120ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_OMASK_TO_RENDER_TARGET			(1 << 9)
1121ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_USES_SOURCE_W				(1 << 8)
1122ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_DUAL_SOURCE_BLEND_ENABLE		(1 << 7)
1123ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_32_DISPATCH_ENABLE			(1 << 2)
1124ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_16_DISPATCH_ENABLE			(1 << 1)
1125ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_8_DISPATCH_ENABLE			(1 << 0)
1126ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW6 */
1127ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NUM_SF_OUTPUTS_SHIFT			20
1128ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSOFFSET_NONE				(0 << 18)
1129ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSOFFSET_CENTROID			(2 << 18)
1130ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSOFFSET_SAMPLE			(3 << 18)
1131ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSITION_ZW_PIXEL			(0 << 16)
1132ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSITION_ZW_CENTROID			(2 << 16)
1133ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POSITION_ZW_SAMPLE			(3 << 16)
1134ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC	(1 << 15)
1135ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 14)
1136ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC	(1 << 13)
1137ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC		(1 << 12)
1138ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_PERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 11)
1139ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_PERSPECTIVE_PIXEL_BARYCENTRIC		(1 << 10)
1140ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_POINT_RASTRULE_UPPER_RIGHT		(1 << 9)
1141ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_OFF_PIXEL			(0 << 1)
1142ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_OFF_PATTERN			(1 << 1)
1143ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_ON_PIXEL			(2 << 1)
1144ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSRAST_ON_PATTERN			(3 << 1)
1145ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt# define GEN6_WM_MSDISPMODE_PERPIXEL			(1 << 0)
1146ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW7: kernel 1 pointer */
1147ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt/* DW8: kernel 2 pointer */
1148ab8c37fe18e0367e8718774198a0d0086fde0cf9Eric Anholt
1149e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CONSTANT_VS		      0x7815 /* GEN6+ */
1150e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CONSTANT_GS		      0x7816 /* GEN6+ */
1151e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_CONSTANT_PS		      0x7817 /* GEN6+ */
1152520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_3_ENABLE			(1 << 15)
1153520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_2_ENABLE			(1 << 14)
1154520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_1_ENABLE			(1 << 13)
1155520b64ddfb4c2efa742bc2217fef96fdec5eea9bEric Anholt# define GEN6_CONSTANT_BUFFER_0_ENABLE			(1 << 12)
11569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
1157bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_CONSTANT_HS                  0x7819 /* GEN7+ */
1158bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_CONSTANT_DS                  0x781A /* GEN7+ */
1159bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke
1160a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* 3DSTATE_WM for Gen7 */
1161a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW1 */
1162a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_STATISTICS_ENABLE			(1 << 31)
1163a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_DEPTH_CLEAR				(1 << 30)
1164a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_DISPATCH_ENABLE			(1 << 29)
1165a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN6_WM_DEPTH_RESOLVE				(1 << 28)
1166a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE		(1 << 27)
1167a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_KILL_ENABLE				(1 << 25)
1168a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_OFF			        (0 << 23)
1169a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_ON			        (1 << 23)
1170a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_ON_GE			        (2 << 23)
1171a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PSCDEPTH_ON_LE			        (3 << 23)
1172a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_USES_SOURCE_DEPTH			(1 << 20)
1173a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_USES_SOURCE_W			        (1 << 19)
1174a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POSITION_ZW_PIXEL			(0 << 17)
1175a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POSITION_ZW_CENTROID			(2 << 17)
1176a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POSITION_ZW_SAMPLE			(3 << 17)
1177a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC	(1 << 16)
1178a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 15)
1179a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC	(1 << 14)
1180a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC		(1 << 13)
1181a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 12)
1182a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC		(1 << 11)
1183a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_USES_INPUT_COVERAGE_MASK	        (1 << 10)
1184a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5		(0 << 8)
1185a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0		(1 << 8)
1186a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0		(2 << 8)
1187a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0		(3 << 8)
1188a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_0_5			(0 << 6)
1189a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_1_0			(1 << 6)
1190a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_2_0			(2 << 6)
1191a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_AA_WIDTH_4_0			(3 << 6)
1192a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POLYGON_STIPPLE_ENABLE			(1 << 4)
1193a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_LINE_STIPPLE_ENABLE			(1 << 3)
1194a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT		(1 << 2)
1195a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_OFF_PIXEL			(0 << 0)
1196a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_OFF_PATTERN			(1 << 0)
1197a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_ON_PIXEL			(2 << 0)
1198a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSRAST_ON_PATTERN			(3 << 0)
1199a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW2 */
1200a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_WM_MSDISPMODE_PERPIXEL			(1 << 31)
1201a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke
1202a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke#define _3DSTATE_PS				0x7820 /* GEN7+ */
1203a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW1: kernel pointer */
1204a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW2 */
1205a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_SPF_MODE				(1 << 31)
1206a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_VECTOR_MASK_ENABLE			(1 << 30)
1207a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_SAMPLER_COUNT_SHIFT			27
1208a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
1209a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_FLOATING_POINT_MODE_IEEE_754		(0 << 16)
1210a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_FLOATING_POINT_MODE_ALT		(1 << 16)
1211a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW3: scratch space */
1212a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW4 */
1213a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_MAX_THREADS_SHIFT			23
1214a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_PUSH_CONSTANT_ENABLE		        (1 << 11)
1215a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_ATTRIBUTE_ENABLE		        (1 << 10)
1216a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_OMASK_TO_RENDER_TARGET			(1 << 9)
1217a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE		(1 << 7)
1218a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_POSOFFSET_NONE				(0 << 3)
1219a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_POSOFFSET_CENTROID			(2 << 3)
1220a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_POSOFFSET_SAMPLE			(3 << 3)
1221a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_32_DISPATCH_ENABLE			(1 << 2)
1222a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_16_DISPATCH_ENABLE			(1 << 1)
1223a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_8_DISPATCH_ENABLE			(1 << 0)
1224a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW5 */
1225a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DISPATCH_START_GRF_SHIFT_0		16
1226a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DISPATCH_START_GRF_SHIFT_1		8
1227a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke# define GEN7_PS_DISPATCH_START_GRF_SHIFT_2		0
1228a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW6: kernel 1 pointer */
1229a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke/* DW7: kernel 2 pointer */
1230a924d69b57a82c02f2d4fba3fc0b31bf6a4f744eKenneth Graunke
1231bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke#define _3DSTATE_STREAMOUT                      0x781e /* GEN7+ */
1232bac10b58de69108bdb2cc3358733e2648ab7c5d2Kenneth Graunke
1233e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_SAMPLE_MASK			0x7818 /* GEN6+ */
1234f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
12351feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_DRAWING_RECTANGLE		0x7900
12361feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_BLEND_CONSTANT_COLOR		0x7901
12371feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_CHROMA_KEY			0x7904
12381feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_DEPTH_BUFFER			0x7905
12391feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_POLY_STIPPLE_OFFSET		0x7906
12401feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_POLY_STIPPLE_PATTERN		0x7907
12411feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_LINE_STIPPLE_PATTERN		0x7908
12421feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP	0x7909
12431feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_AA_LINE_PARAMETERS		0x790a /* G45+ */
12441feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke
12451feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_GS_SVB_INDEX			0x790b /* CTG+ */
1246f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW1 */
1247f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define SVB_INDEX_SHIFT				29
1248f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define SVB_LOAD_INTERNAL_VERTEX_COUNT			(1 << 0) /* SNB+ */
1249f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW2: SVB index */
1250f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW3: SVB maximum index */
1251f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
1252e31defc825ee94f1d1092e277954abad7097c552Kenneth Graunke#define _3DSTATE_MULTISAMPLE			0x790d /* GEN6+ */
1253f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW1 */
1254f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_PIXEL_LOCATION_CENTER			(0 << 4)
1255f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_PIXEL_LOCATION_UPPER_LEFT			(1 << 4)
1256f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_NUMSAMPLES_1				(0 << 1)
1257f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_NUMSAMPLES_4				(2 << 1)
1258f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define MS_NUMSAMPLES_8				(3 << 1)
1259f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
1260da0c0dbab060416452e7c96415abef91ec7d64f4Kenneth Graunke#define _3DSTATE_STENCIL_BUFFER			0x790e /* ILK, SNB */
1261da0c0dbab060416452e7c96415abef91ec7d64f4Kenneth Graunke#define _3DSTATE_HIER_DEPTH_BUFFER		0x790f /* ILK, SNB */
1262da0c0dbab060416452e7c96415abef91ec7d64f4Kenneth Graunke
12631feee7b1b39e54c279ffdc3c27f3911c04658430Kenneth Graunke#define _3DSTATE_CLEAR_PARAMS			0x7910 /* ILK+ */
1264f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt# define DEPTH_CLEAR_VALID				(1 << 15)
1265f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt/* DW1: depth clear value */
1266f69d46150c308285a518391db02cc9cba0f2a12dEric Anholt
12679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_PIPE_CONTROL              0x7a00
12689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
12699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define CMD_MI_FLUSH                  0x0200
12709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
12719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
12729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* Various values from the R0 vertex header:
12739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */
12749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define R02_PRIM_END    0x1
12759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define R02_PRIM_START  0x2
12769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
12778e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao#include "intel_chipset.h"
12789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt
12799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#endif
1280