xref: /aosp_15_r20/external/mesa3d/src/intel/shaders/libintel_shaders.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /* Copyright © 2023 Intel Corporation
2*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker  */
4*61046927SAndroid Build Coastguard Worker 
5*61046927SAndroid Build Coastguard Worker #ifndef _LIBANV_SHADERS_H_
6*61046927SAndroid Build Coastguard Worker #define _LIBANV_SHADERS_H_
7*61046927SAndroid Build Coastguard Worker 
8*61046927SAndroid Build Coastguard Worker /* Define stdint types compatible between the CPU and GPU for shared headers */
9*61046927SAndroid Build Coastguard Worker #ifndef __OPENCL_VERSION__
10*61046927SAndroid Build Coastguard Worker #include <stdint.h>
11*61046927SAndroid Build Coastguard Worker 
12*61046927SAndroid Build Coastguard Worker #include "util/macros.h"
13*61046927SAndroid Build Coastguard Worker 
14*61046927SAndroid Build Coastguard Worker #else
15*61046927SAndroid Build Coastguard Worker #define BITFIELD_BIT(i) (1u << i)
16*61046927SAndroid Build Coastguard Worker 
17*61046927SAndroid Build Coastguard Worker typedef ulong uint64_t;
18*61046927SAndroid Build Coastguard Worker typedef uint uint32_t;
19*61046927SAndroid Build Coastguard Worker typedef ushort uint16_t;
20*61046927SAndroid Build Coastguard Worker typedef uchar uint8_t;
21*61046927SAndroid Build Coastguard Worker 
22*61046927SAndroid Build Coastguard Worker typedef long int64_t;
23*61046927SAndroid Build Coastguard Worker typedef int int32_t;
24*61046927SAndroid Build Coastguard Worker typedef short int16_t;
25*61046927SAndroid Build Coastguard Worker typedef char int8_t;
26*61046927SAndroid Build Coastguard Worker 
27*61046927SAndroid Build Coastguard Worker typedef struct VkDrawIndexedIndirectCommand {
28*61046927SAndroid Build Coastguard Worker     uint32_t    indexCount;
29*61046927SAndroid Build Coastguard Worker     uint32_t    instanceCount;
30*61046927SAndroid Build Coastguard Worker     uint32_t    firstIndex;
31*61046927SAndroid Build Coastguard Worker     int32_t     vertexOffset;
32*61046927SAndroid Build Coastguard Worker     uint32_t    firstInstance;
33*61046927SAndroid Build Coastguard Worker } VkDrawIndexedIndirectCommand __attribute__((aligned(4)));
34*61046927SAndroid Build Coastguard Worker 
35*61046927SAndroid Build Coastguard Worker typedef struct VkDrawIndirectCommand {
36*61046927SAndroid Build Coastguard Worker     uint32_t    vertexCount;
37*61046927SAndroid Build Coastguard Worker     uint32_t    instanceCount;
38*61046927SAndroid Build Coastguard Worker     uint32_t    firstVertex;
39*61046927SAndroid Build Coastguard Worker     uint32_t    firstInstance;
40*61046927SAndroid Build Coastguard Worker } VkDrawIndirectCommand __attribute__((aligned(4)));
41*61046927SAndroid Build Coastguard Worker 
42*61046927SAndroid Build Coastguard Worker #include "genxml/gen_macros.h"
43*61046927SAndroid Build Coastguard Worker #include "genxml/genX_cl_pack.h"
44*61046927SAndroid Build Coastguard Worker #endif
45*61046927SAndroid Build Coastguard Worker 
46*61046927SAndroid Build Coastguard Worker /**
47*61046927SAndroid Build Coastguard Worker  * Flags for generated_draws.cl
48*61046927SAndroid Build Coastguard Worker  */
49*61046927SAndroid Build Coastguard Worker #define ANV_GENERATED_FLAG_INDEXED    BITFIELD_BIT(0)
50*61046927SAndroid Build Coastguard Worker #define ANV_GENERATED_FLAG_PREDICATED BITFIELD_BIT(1)
51*61046927SAndroid Build Coastguard Worker /* Only used on Gfx9, means the pipeline is using gl_DrawID */
52*61046927SAndroid Build Coastguard Worker #define ANV_GENERATED_FLAG_DRAWID     BITFIELD_BIT(2)
53*61046927SAndroid Build Coastguard Worker /* Only used on Gfx9, means the pipeline is using gl_BaseVertex or
54*61046927SAndroid Build Coastguard Worker  * gl_BaseInstance
55*61046927SAndroid Build Coastguard Worker  */
56*61046927SAndroid Build Coastguard Worker #define ANV_GENERATED_FLAG_BASE       BITFIELD_BIT(3)
57*61046927SAndroid Build Coastguard Worker /* Whether the count is indirect  */
58*61046927SAndroid Build Coastguard Worker #define ANV_GENERATED_FLAG_COUNT      BITFIELD_BIT(4)
59*61046927SAndroid Build Coastguard Worker /* Whether the generation shader writes to the ring buffer */
60*61046927SAndroid Build Coastguard Worker #define ANV_GENERATED_FLAG_RING_MODE  BITFIELD_BIT(5)
61*61046927SAndroid Build Coastguard Worker /* Whether TBIMR tile-based rendering shall be enabled. */
62*61046927SAndroid Build Coastguard Worker #define ANV_GENERATED_FLAG_TBIMR      BITFIELD_BIT(6)
63*61046927SAndroid Build Coastguard Worker 
64*61046927SAndroid Build Coastguard Worker /**
65*61046927SAndroid Build Coastguard Worker  * Flags for query_copy.cl
66*61046927SAndroid Build Coastguard Worker  */
67*61046927SAndroid Build Coastguard Worker #define ANV_COPY_QUERY_FLAG_RESULT64  BITFIELD_BIT(0)
68*61046927SAndroid Build Coastguard Worker #define ANV_COPY_QUERY_FLAG_AVAILABLE BITFIELD_BIT(1)
69*61046927SAndroid Build Coastguard Worker #define ANV_COPY_QUERY_FLAG_DELTA     BITFIELD_BIT(2)
70*61046927SAndroid Build Coastguard Worker #define ANV_COPY_QUERY_FLAG_PARTIAL   BITFIELD_BIT(3)
71*61046927SAndroid Build Coastguard Worker 
72*61046927SAndroid Build Coastguard Worker #ifdef __OPENCL_VERSION__
73*61046927SAndroid Build Coastguard Worker 
74*61046927SAndroid Build Coastguard Worker void genX(write_3DSTATE_VERTEX_BUFFERS)(global void *dst_ptr,
75*61046927SAndroid Build Coastguard Worker                                         uint32_t buffer_count);
76*61046927SAndroid Build Coastguard Worker 
77*61046927SAndroid Build Coastguard Worker void genX(write_VERTEX_BUFFER_STATE)(global void *dst_ptr,
78*61046927SAndroid Build Coastguard Worker                                      uint32_t mocs,
79*61046927SAndroid Build Coastguard Worker                                      uint32_t buffer_idx,
80*61046927SAndroid Build Coastguard Worker                                      uint64_t address,
81*61046927SAndroid Build Coastguard Worker                                      uint32_t size,
82*61046927SAndroid Build Coastguard Worker                                      uint32_t stride);
83*61046927SAndroid Build Coastguard Worker 
84*61046927SAndroid Build Coastguard Worker void genX(write_3DPRIMITIVE)(global void *dst_ptr,
85*61046927SAndroid Build Coastguard Worker                              bool is_predicated,
86*61046927SAndroid Build Coastguard Worker                              bool is_indexed,
87*61046927SAndroid Build Coastguard Worker                              bool use_tbimr,
88*61046927SAndroid Build Coastguard Worker                              uint32_t vertex_count_per_instance,
89*61046927SAndroid Build Coastguard Worker                              uint32_t start_vertex_location,
90*61046927SAndroid Build Coastguard Worker                              uint32_t instance_count,
91*61046927SAndroid Build Coastguard Worker                              uint32_t start_instance_location,
92*61046927SAndroid Build Coastguard Worker                              uint32_t base_vertex_location);
93*61046927SAndroid Build Coastguard Worker 
94*61046927SAndroid Build Coastguard Worker #if GFX_VER >= 11
95*61046927SAndroid Build Coastguard Worker void genX(write_3DPRIMITIVE_EXTENDED)(global void *dst_ptr,
96*61046927SAndroid Build Coastguard Worker                                       bool is_predicated,
97*61046927SAndroid Build Coastguard Worker                                       bool is_indexed,
98*61046927SAndroid Build Coastguard Worker                                       bool use_tbimr,
99*61046927SAndroid Build Coastguard Worker                                       uint32_t vertex_count_per_instance,
100*61046927SAndroid Build Coastguard Worker                                       uint32_t start_vertex_location,
101*61046927SAndroid Build Coastguard Worker                                       uint32_t instance_count,
102*61046927SAndroid Build Coastguard Worker                                       uint32_t start_instance_location,
103*61046927SAndroid Build Coastguard Worker                                       uint32_t base_vertex_location,
104*61046927SAndroid Build Coastguard Worker                                       uint32_t param_base_vertex,
105*61046927SAndroid Build Coastguard Worker                                       uint32_t param_base_instance,
106*61046927SAndroid Build Coastguard Worker                                       uint32_t param_draw_id);
107*61046927SAndroid Build Coastguard Worker #endif
108*61046927SAndroid Build Coastguard Worker 
109*61046927SAndroid Build Coastguard Worker void genX(write_MI_BATCH_BUFFER_START)(global void *dst_ptr, uint64_t addr);
110*61046927SAndroid Build Coastguard Worker 
111*61046927SAndroid Build Coastguard Worker void genX(write_draw)(global uint32_t *dst_ptr,
112*61046927SAndroid Build Coastguard Worker                       global void *indirect_ptr,
113*61046927SAndroid Build Coastguard Worker                       global uint32_t *draw_id_ptr,
114*61046927SAndroid Build Coastguard Worker                       uint32_t draw_id,
115*61046927SAndroid Build Coastguard Worker                       uint32_t instance_multiplier,
116*61046927SAndroid Build Coastguard Worker                       bool is_indexed,
117*61046927SAndroid Build Coastguard Worker                       bool is_predicated,
118*61046927SAndroid Build Coastguard Worker                       bool uses_tbimr,
119*61046927SAndroid Build Coastguard Worker                       bool uses_base,
120*61046927SAndroid Build Coastguard Worker                       bool uses_draw_id,
121*61046927SAndroid Build Coastguard Worker                       uint32_t mocs);
122*61046927SAndroid Build Coastguard Worker 
123*61046927SAndroid Build Coastguard Worker #endif /* __OPENCL_VERSION__ */
124*61046927SAndroid Build Coastguard Worker 
125*61046927SAndroid Build Coastguard Worker #endif /* _LIBANV_SHADERS_H_ */
126