Merge branch '7.8' into master
[mesa.git] / src / mesa / drivers / dri / i965 / brw_defines.h
index d166250b4feaec3136e26eb3341fbeee80a28234..984e56d00c8c0c6eaecb034438fb903e12a408f5 100644 (file)
 #define BRW_CONDITIONAL_GE    4
 #define BRW_CONDITIONAL_L     5
 #define BRW_CONDITIONAL_LE    6
-#define BRW_CONDITIONAL_C     7
+#define BRW_CONDITIONAL_R     7
 #define BRW_CONDITIONAL_O     8
+#define BRW_CONDITIONAL_U     9
 
 #define BRW_DEBUG_NONE        0
 #define BRW_DEBUG_BREAKPOINT  1
 #define BRW_OPCODE_RSL        11
 #define BRW_OPCODE_ASR        12
 #define BRW_OPCODE_CMP        16
+#define BRW_OPCODE_CMPN       17
 #define BRW_OPCODE_JMPI       32
 #define BRW_OPCODE_IF         34
 #define BRW_OPCODE_IFF        35
 #define BRW_OPCODE_POP        47
 #define BRW_OPCODE_WAIT       48
 #define BRW_OPCODE_SEND       49
+#define BRW_OPCODE_MATH       56
 #define BRW_OPCODE_ADD        64
 #define BRW_OPCODE_MUL        65
 #define BRW_OPCODE_AVG        66
 #define BRW_OPCODE_DP2        87
 #define BRW_OPCODE_DPA2       88
 #define BRW_OPCODE_LINE       89
+#define BRW_OPCODE_PLN        90
 #define BRW_OPCODE_NOP        126
 
 #define BRW_PREDICATE_NONE             0
 #define BRW_SAMPLER_MESSAGE_SIMD8_LD                  3
 #define BRW_SAMPLER_MESSAGE_SIMD16_LD                 3
 
-#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_IGDNG            0
-#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_IGDNG          0
-#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_IGDNG           0
-#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_BIAS_IGDNG       1
-#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_BIAS_IGDNG     1
-#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS_IGDNG      1
-#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_LOD_IGDNG        2
-#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD_IGDNG      2
-#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD_IGDNG       2
-#define BRW_SAMPLER_MESSAGE_SIMD8_SAMPLE_COMPARE_IGDNG    3
-#define BRW_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE_IGDNG  3
-#define BRW_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE_IGDNG   3
+#define BRW_SAMPLER_MESSAGE_SAMPLE_IGDNG            0
+#define BRW_SAMPLER_MESSAGE_SAMPLE_BIAS_IGDNG       1
+#define BRW_SAMPLER_MESSAGE_SAMPLE_LOD_IGDNG        2
+#define BRW_SAMPLER_MESSAGE_SAMPLE_COMPARE_IGDNG    3
 
 /* for IGDNG only */
 #define BRW_SAMPLER_SIMD_MODE_SIMD4X2                   0
 #define BRW_MATH_FUNCTION_SIN                              6 /* was 7 */
 #define BRW_MATH_FUNCTION_COS                              7 /* was 8 */
 #define BRW_MATH_FUNCTION_SINCOS                           8 /* was 6 */
-#define BRW_MATH_FUNCTION_TAN                              9
+#define BRW_MATH_FUNCTION_TAN                              9 /* gen4 */
+#define BRW_MATH_FUNCTION_FDIV                             9 /* gen6+ */
 #define BRW_MATH_FUNCTION_POW                              10
 #define BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER   11
 #define BRW_MATH_FUNCTION_INT_DIV_QUOTIENT                 12
 
 #define CMD_PIPELINED_STATE_POINTERS  0x7800
 #define CMD_BINDING_TABLE_PTRS        0x7801
+# define GEN6_BINDING_TABLE_MODIFY_VS  (1 << 8)
+# define GEN6_BINDING_TABLE_MODIFY_GS  (1 << 9)
+# define GEN6_BINDING_TABLE_MODIFY_PS  (1 << 10)
+
+#define CMD_3D_SAMPLER_STATE_POINTERS                  0x7802 /* SNB+ */
+# define PS_SAMPLER_STATE_CHANGE                               (1 << 12)
+# define GS_SAMPLER_STATE_CHANGE                               (1 << 9)
+# define VS_SAMPLER_STATE_CHANGE                               (1 << 8)
+/* DW1: VS */
+/* DW2: GS */
+/* DW3: PS */
 
 #define CMD_VERTEX_BUFFER             0x7808
 # define BRW_VB0_INDEX_SHIFT           27
+# define GEN6_VB0_INDEX_SHIFT          26
 # define BRW_VB0_ACCESS_VERTEXDATA     (0 << 26)
 # define BRW_VB0_ACCESS_INSTANCEDATA   (1 << 26)
+# define GEN6_VB0_ACCESS_VERTEXDATA    (0 << 20)
+# define GEN6_VB0_ACCESS_INSTANCEDATA  (1 << 20)
 # define BRW_VB0_PITCH_SHIFT           0
 
 #define CMD_VERTEX_ELEMENT            0x7809
 # define BRW_VE0_INDEX_SHIFT           27
+# define GEN6_VE0_INDEX_SHIFT          26
 # define BRW_VE0_FORMAT_SHIFT          16
 # define BRW_VE0_VALID                 (1 << 26)
+# define GEN6_VE0_VALID                        (1 << 25)
 # define BRW_VE0_SRC_OFFSET_SHIFT      0
 # define BRW_VE1_COMPONENT_NOSTORE     0
 # define BRW_VE1_COMPONENT_STORE_SRC   1
 # define BRW_VE1_DST_OFFSET_SHIFT      0
 
 #define CMD_INDEX_BUFFER              0x780a
-#define CMD_VF_STATISTICS_965         0x780b
+#define CMD_VF_STATISTICS_965          0x780b
 #define CMD_VF_STATISTICS_GM45        0x680b
+#define CMD_3D_CC_STATE_POINTERS      0x780e /* GEN6+ */
+
+#define CMD_URB                                        0x7805 /* GEN6+ */
+# define GEN6_URB_VS_SIZE_SHIFT                                16
+# define GEN6_URB_VS_ENTRIES_SHIFT                     0
+# define GEN6_URB_GS_SIZE_SHIFT                                8
+# define GEN6_URB_GS_ENTRIES_SHIFT                     0
+
+#define CMD_VIEWPORT_STATE_POINTERS                    0x780d /* GEN6+ */
+# define GEN6_CC_VIEWPORT_MODIFY                       (1 << 12)
+# define GEN6_SF_VIEWPORT_MODIFY                       (1 << 11)
+# define GEN6_CLIP_VIEWPORT_MODIFY                     (1 << 10)
+
+#define CMD_3D_SCISSOR_STATE_POINTERS          0x780f /* GEN6+ */
+
+#define CMD_3D_VS_STATE                      0x7810 /* GEN6+ */
+/* DW2 */
+# define GEN6_VS_SPF_MODE                              (1 << 31)
+# define GEN6_VS_VECTOR_MASK_ENABLE                    (1 << 30)
+# define GEN6_VS_SAMPLER_COUNT_SHIFT                   27
+# define GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT       18
+/* DW4 */
+# define GEN6_VS_DISPATCH_START_GRF_SHIFT              20
+# define GEN6_VS_URB_READ_LENGTH_SHIFT                 11
+# define GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT           4
+/* DW5 */
+# define GEN6_VS_MAX_THREADS_SHIFT                     25
+# define GEN6_VS_STATISTICS_ENABLE                     (1 << 10)
+# define GEN6_VS_CACHE_DISABLE                         (1 << 1)
+# define GEN6_VS_ENABLE                                        (1 << 0)
+
+#define CMD_3D_GS_STATE                      0x7811 /* GEN6+ */
+/* DW2 */
+# define GEN6_GS_SPF_MODE                              (1 << 31)
+# define GEN6_GS_VECTOR_MASK_ENABLE                    (1 << 30)
+# define GEN6_GS_SAMPLER_COUNT_SHIFT                   27
+# define GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT       18
+/* DW4 */
+# define GEN6_GS_URB_READ_LENGTH_SHIFT                 11
+# define GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT           4
+# define GEN6_GS_DISPATCH_START_GRF_SHIFT              0
+/* DW5 */
+# define GEN6_GS_MAX_THREADS_SHIFT                     25
+# define GEN6_GS_STATISTICS_ENABLE                     (1 << 10)
+# define GEN6_GS_SO_STATISTICS_ENABLE                  (1 << 9)
+# define GEN6_GS_RENDERING_ENABLE                      (1 << 8)
+/* DW6 */
+# define GEN6_GS_ENABLE                                        (1 << 15)
+
+#define CMD_3D_CLIP_STATE                    0x7812 /* GEN6+ */
+/* DW1 */
+# define GEN6_CLIP_STATISTICS_ENABLE                   (1 << 10)
+/* DW2 */
+# define GEN6_CLIP_ENABLE                              (1 << 31)
+# define GEN6_CLIP_API_OGL                             (0 << 30)
+# define GEN6_CLIP_API_D3D                             (1 << 30)
+# define GEN6_CLIP_XY_TEST                             (1 << 28)
+# define GEN6_CLIP_Z_TEST                              (1 << 27)
+# define GEN6_CLIP_GB_TEST                             (1 << 26)
+# define GEN6_CLIP_MODE_NORMAL                         (0 << 13)
+# define GEN6_CLIP_MODE_REJECT_ALL                     (3 << 13)
+# define GEN6_CLIP_MODE_ACCEPT_ALL                     (4 << 13)
+# define GEN6_CLIP_PERSPECTIVE_DIVIDE_DISABLE          (1 << 9)
+# define GEN6_CLIP_BARYCENTRIC_ENABLE                  (1 << 8)
+# define GEN6_CLIP_TRI_PROVOKE_SHIFT                   4
+# define GEN6_CLIP_LINE_PROVOKE_SHIFT                  2
+# define GEN6_CLIP_TRIFAN_PROVOKE_SHIFT                        0
+/* DW3 */
+# define GEN6_CLIP_MIN_POINT_WIDTH_SHIFT               17
+# define GEN6_CLIP_MAX_POINT_WIDTH_SHIFT               6
+
+#define CMD_3D_SF_STATE                                0x7813 /* GEN6+ */
+/* DW1 */
+# define GEN6_SF_NUM_OUTPUTS_SHIFT                     22
+# define GEN6_SF_SWIZZLE_ENABLE                                (1 << 21)
+# define GEN6_SF_POINT_SPRITE_LOWERLEFT                        (1 << 20)
+# define GEN6_SF_URB_ENTRY_READ_LENGTH_SHIFT           11
+# define GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT           4
+/* DW2 */
+# define GEN6_SF_LEGACY_GLOBAL_DEPTH_BIAS              (1 << 11)
+# define GEN6_SF_STATISTICS_ENABLE                     (1 << 10)
+# define GEN6_SF_GLOBAL_DEPTH_OFFSET_SOLID             (1 << 9)
+# define GEN6_SF_GLOBAL_DEPTH_OFFSET_WIREFRAME         (1 << 8)
+# define GEN6_SF_GLOBAL_DEPTH_OFFSET_POINT             (1 << 7)
+# define GEN6_SF_FRONT_SOLID                           (0 << 5)
+# define GEN6_SF_FRONT_WIREFRAME                       (1 << 5)
+# define GEN6_SF_FRONT_POINT                           (2 << 5)
+# define GEN6_SF_BACK_SOLID                            (0 << 3)
+# define GEN6_SF_BACK_WIREFRAME                                (1 << 3)
+# define GEN6_SF_BACK_POINT                            (2 << 3)
+# define GEN6_SF_VIEWPORT_TRANSFORM_ENABLE             (1 << 1)
+# define GEN6_SF_WINDING_CCW                           (1 << 0)
+/* DW3 */
+# define GEN6_SF_LINE_AA_ENABLE                                (1 << 31)
+# define GEN6_SF_CULL_BOTH                             (0 << 29)
+# define GEN6_SF_CULL_NONE                             (1 << 29)
+# define GEN6_SF_CULL_FRONT                            (2 << 29)
+# define GEN6_SF_CULL_BACK                             (3 << 29)
+# define GEN6_SF_LINE_WIDTH_SHIFT                      18 /* U3.7 */
+# define GEN6_SF_LINE_END_CAP_WIDTH_0_5                        (0 << 16)
+# define GEN6_SF_LINE_END_CAP_WIDTH_1_0                        (1 << 16)
+# define GEN6_SF_LINE_END_CAP_WIDTH_2_0                        (2 << 16)
+# define GEN6_SF_LINE_END_CAP_WIDTH_4_0                        (3 << 16)
+# define GEN6_SF_SCISSOR_ENABLE                                (1 << 11)
+# define GEN6_SF_MSRAST_OFF_PIXEL                      (0 << 8)
+# define GEN6_SF_MSRAST_OFF_PATTERN                    (1 << 8)
+# define GEN6_SF_MSRAST_ON_PIXEL                       (2 << 8)
+# define GEN6_SF_MSRAST_ON_PATTERN                     (3 << 8)
+/* DW4 */
+# define GEN6_SF_TRI_PROVOKE_SHIFT                     29
+# define GEN6_SF_LINE_PROVOKE_SHIFT                    27
+# define GEN6_SF_TRIFAN_PROVOKE_SHIFT                  25
+# define GEN6_SF_LINE_AA_MODE_MANHATTAN                        (0 << 14)
+# define GEN6_SF_LINE_AA_MODE_TRUE                     (1 << 14)
+# define GEN6_SF_VERTEX_SUBPIXEL_8BITS                 (0 << 12)
+# define GEN6_SF_VERTEX_SUBPIXEL_4BITS                 (1 << 12)
+# define GEN6_SF_USE_STATE_POINT_WIDTH                 (1 << 11)
+# define GEN6_SF_POINT_WIDTH_SHIFT                     0 /* U8.3 */
+/* DW5: depth offset constant */
+/* DW6: depth offset scale */
+/* DW7: depth offset clamp */
+/* DW8 */
+# define ATTRIBUTE_1_OVERRIDE_W                                (1 << 31)
+# define ATTRIBUTE_1_OVERRIDE_Z                                (1 << 30)
+# define ATTRIBUTE_1_OVERRIDE_Y                                (1 << 29)
+# define ATTRIBUTE_1_OVERRIDE_X                                (1 << 28)
+# define ATTRIBUTE_1_CONST_SOURCE_SHIFT                        25
+# define ATTRIBUTE_1_SWIZZLE_SHIFT                     22
+# define ATTRIBUTE_1_SOURCE_SHIFT                      16
+# define ATTRIBUTE_0_OVERRIDE_W                                (1 << 15)
+# define ATTRIBUTE_0_OVERRIDE_Z                                (1 << 14)
+# define ATTRIBUTE_0_OVERRIDE_Y                                (1 << 13)
+# define ATTRIBUTE_0_OVERRIDE_X                                (1 << 12)
+# define ATTRIBUTE_0_CONST_SOURCE_SHIFT                        9
+# define ATTRIBUTE_0_SWIZZLE_SHIFT                     6
+# define ATTRIBUTE_0_SOURCE_SHIFT                      0
+/* DW16: Point sprite texture coordinate enables */
+/* DW17: Constant interpolation enables */
+/* DW18: attr 0-7 wrap shortest enables */
+/* DW19: attr 8-16 wrap shortest enables */
+
+#define CMD_3D_WM_STATE                      0x7814 /* GEN6+ */
+/* DW1: kernel pointer */
+/* DW2 */
+# define GEN6_WM_SPF_MODE                              (1 << 31)
+# define GEN6_WM_VECTOR_MASK_ENABLE                    (1 << 30)
+# define GEN6_WM_SAMPLER_COUNT_SHIFT                   27
+# define GEN6_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT       18
+/* DW3: scratch space */
+/* DW4 */
+# define GEN6_WM_STATISTICS_ENABLE                     (1 << 31)
+# define GEN6_WM_DEPTH_CLEAR                           (1 << 30)
+# define GEN6_WM_DEPTH_RESOLVE                         (1 << 28)
+# define GEN6_WM_HIERARCHICAL_DEPTH_RESOLVE            (1 << 27)
+# define GEN6_WM_DISPATCH_START_GRF_SHIFT_0            16
+# define GEN6_WM_DISPATCH_START_GRF_SHIFT_1            8
+# define GEN6_WM_DISPATCH_START_GRF_SHIFT_2            0
+/* DW5 */
+# define GEN6_WM_MAX_THREADS_SHIFT                     25
+# define GEN6_WM_KILL_ENABLE                           (1 << 22)
+# define GEN6_WM_COMPUTED_DEPTH                                (1 << 21)
+# define GEN6_WM_USES_SOURCE_DEPTH                     (1 << 20)
+# define GEN6_WM_DISPATCH_ENABLE                       (1 << 19)
+# define GEN6_WM_LINE_END_CAP_AA_WIDTH_0_5             (0 << 16)
+# define GEN6_WM_LINE_END_CAP_AA_WIDTH_1_0             (1 << 16)
+# define GEN6_WM_LINE_END_CAP_AA_WIDTH_2_0             (2 << 16)
+# define GEN6_WM_LINE_END_CAP_AA_WIDTH_4_0             (3 << 16)
+# define GEN6_WM_LINE_AA_WIDTH_0_5                     (0 << 14)
+# define GEN6_WM_LINE_AA_WIDTH_1_0                     (1 << 14)
+# define GEN6_WM_LINE_AA_WIDTH_2_0                     (2 << 14)
+# define GEN6_WM_LINE_AA_WIDTH_4_0                     (3 << 14)
+# define GEN6_WM_POLYGON_STIPPLE_ENABLE                        (1 << 13)
+# define GEN6_WM_LINE_STIPPLE_ENABLE                   (1 << 12)
+# define GEN6_WM_OMASK_TO_RENDER_TARGET                        (1 << 9)
+# define GEN6_WM_USES_SOURCE_W                         (1 << 8)
+# define GEN6_WM_DUAL_SOURCE_BLEND_ENABLE              (1 << 7)
+# define GEN6_WM_32_DISPATCH_ENABLE                    (1 << 2)
+# define GEN6_WM_16_DISPATCH_ENABLE                    (1 << 1)
+# define GEN6_WM_8_DISPATCH_ENABLE                     (1 << 0)
+/* DW6 */
+# define GEN6_WM_NUM_SF_OUTPUTS_SHIFT                  20
+# define GEN6_WM_POSOFFSET_NONE                                (0 << 18)
+# define GEN6_WM_POSOFFSET_CENTROID                    (2 << 18)
+# define GEN6_WM_POSOFFSET_SAMPLE                      (3 << 18)
+# define GEN6_WM_POSITION_ZW_PIXEL                     (0 << 16)
+# define GEN6_WM_POSITION_ZW_CENTROID                  (2 << 16)
+# define GEN6_WM_POSITION_ZW_SAMPLE                    (3 << 16)
+# define GEN6_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC     (1 << 15)
+# define GEN6_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC   (1 << 14)
+# define GEN6_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC      (1 << 13)
+# define GEN6_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC                (1 << 12)
+# define GEN6_WM_PERSPECTIVE_CENTROID_BARYCENTRIC      (1 << 11)
+# define GEN6_WM_PERSPECTIVE_PIXEL_BARYCENTRIC         (1 << 10)
+# define GEN6_WM_POINT_RASTRULE_UPPER_RIGHT            (1 << 9)
+# define GEN6_WM_MSRAST_OFF_PIXEL                      (0 << 1)
+# define GEN6_WM_MSRAST_OFF_PATTERN                    (1 << 1)
+# define GEN6_WM_MSRAST_ON_PIXEL                       (2 << 1)
+# define GEN6_WM_MSRAST_ON_PATTERN                     (3 << 1)
+# define GEN6_WM_MSDISPMODE_PERPIXEL                   (1 << 0)
+/* DW7: kernel 1 pointer */
+/* DW8: kernel 2 pointer */
+
+#define CMD_3D_CONSTANT_VS_STATE             0x7815 /* GEN6+ */
+#define CMD_3D_CONSTANT_GS_STATE             0x7816 /* GEN6+ */
+#define CMD_3D_CONSTANT_PS_STATE             0x7817 /* GEN6+ */
+# define GEN6_CONSTANT_BUFFER_3_ENABLE                 (1 << 15)
+# define GEN6_CONSTANT_BUFFER_2_ENABLE                 (1 << 14)
+# define GEN6_CONSTANT_BUFFER_1_ENABLE                 (1 << 13)
+# define GEN6_CONSTANT_BUFFER_0_ENABLE                 (1 << 12)
+
+#define CMD_3D_SAMPLE_MASK                     0x7818 /* GEN6+ */
 
 #define CMD_DRAW_RECT                 0x7900
 #define CMD_BLEND_CONSTANT_COLOR      0x7901
 #define CMD_GLOBAL_DEPTH_OFFSET_CLAMP 0x7909
 #define CMD_AA_LINE_PARAMETERS        0x790a
 
+#define CMD_GS_SVB_INDEX                       0x790b /* CTG+ */
+/* DW1 */
+# define SVB_INDEX_SHIFT                               29
+# define SVB_LOAD_INTERNAL_VERTEX_COUNT                        (1 << 0) /* SNB+ */
+/* DW2: SVB index */
+/* DW3: SVB maximum index */
+
+#define CMD_3D_MULTISAMPLE                     0x790d /* SNB+ */
+/* DW1 */
+# define MS_PIXEL_LOCATION_CENTER                      (0 << 4)
+# define MS_PIXEL_LOCATION_UPPER_LEFT                  (1 << 4)
+# define MS_NUMSAMPLES_1                               (0 << 1)
+# define MS_NUMSAMPLES_4                               (2 << 1)
+# define MS_NUMSAMPLES_8                               (3 << 1)
+
+#define CMD_3D_CLEAR_PARAMS                    0x7910 /* ILK+ */
+# define DEPTH_CLEAR_VALID                             (1 << 15)
+/* DW1: depth clear value */
+
 #define CMD_PIPE_CONTROL              0x7a00
 
 #define CMD_3D_PRIM                   0x7b00
 
 #include "intel_chipset.h"
 
-#define BRW_IS_G4X(brw)         (IS_G4X((brw)->intel.intelScreen->deviceID))
-#define BRW_IS_IGDNG(brw)         (IS_IGDNG((brw)->intel.intelScreen->deviceID))
-#define BRW_IS_965(brw)         (!(BRW_IS_G4X(brw) || BRW_IS_IGDNG(brw)))
-#define CMD_PIPELINE_SELECT(brw)        ((BRW_IS_G4X(brw) || BRW_IS_IGDNG(brw)) ? CMD_PIPELINE_SELECT_GM45 : CMD_PIPELINE_SELECT_965)
-#define CMD_VF_STATISTICS(brw)          ((BRW_IS_G4X(brw) || BRW_IS_IGDNG(brw)) ? CMD_VF_STATISTICS_GM45 : CMD_VF_STATISTICS_965)
-#define URB_SIZES(brw)                  (BRW_IS_IGDNG(brw) ? 1024 : \
-                                         (BRW_IS_G4X(brw) ? 384 : 256))  /* 512 bit units */
-
 #endif