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