mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-18 22:28:06 +02:00
Iris does not use Gfx11+ SGVS extended parameters, so we have to rely on the old Gfx9 method of providing the parameters through vertex buffers. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26797>
125 lines
4.3 KiB
C
125 lines
4.3 KiB
C
/* Copyright © 2023 Intel Corporation
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#ifndef _LIBANV_SHADERS_H_
|
|
#define _LIBANV_SHADERS_H_
|
|
|
|
/* Define stdint types compatible between the CPU and GPU for shared headers */
|
|
#ifndef __OPENCL_VERSION__
|
|
#include <stdint.h>
|
|
|
|
#include "util/macros.h"
|
|
|
|
#else
|
|
#define BITFIELD_BIT(i) (1u << i)
|
|
|
|
typedef ulong uint64_t;
|
|
typedef uint uint32_t;
|
|
typedef ushort uint16_t;
|
|
typedef uchar uint8_t;
|
|
|
|
typedef long int64_t;
|
|
typedef int int32_t;
|
|
typedef short int16_t;
|
|
typedef char int8_t;
|
|
|
|
typedef struct VkDrawIndexedIndirectCommand {
|
|
uint32_t indexCount;
|
|
uint32_t instanceCount;
|
|
uint32_t firstIndex;
|
|
int32_t vertexOffset;
|
|
uint32_t firstInstance;
|
|
} VkDrawIndexedIndirectCommand __attribute__((aligned(4)));
|
|
|
|
typedef struct VkDrawIndirectCommand {
|
|
uint32_t vertexCount;
|
|
uint32_t instanceCount;
|
|
uint32_t firstVertex;
|
|
uint32_t firstInstance;
|
|
} VkDrawIndirectCommand __attribute__((aligned(4)));
|
|
|
|
#include "genxml/gen_macros.h"
|
|
#include "genxml/genX_cl_pack.h"
|
|
#endif
|
|
|
|
/**
|
|
* Flags for generated_draws.cl
|
|
*/
|
|
#define ANV_GENERATED_FLAG_INDEXED BITFIELD_BIT(0)
|
|
#define ANV_GENERATED_FLAG_PREDICATED BITFIELD_BIT(1)
|
|
/* Only used on Gfx9, means the pipeline is using gl_DrawID */
|
|
#define ANV_GENERATED_FLAG_DRAWID BITFIELD_BIT(2)
|
|
/* Only used on Gfx9, means the pipeline is using gl_BaseVertex or
|
|
* gl_BaseInstance
|
|
*/
|
|
#define ANV_GENERATED_FLAG_BASE BITFIELD_BIT(3)
|
|
/* Whether the count is indirect */
|
|
#define ANV_GENERATED_FLAG_COUNT BITFIELD_BIT(4)
|
|
/* Whether the generation shader writes to the ring buffer */
|
|
#define ANV_GENERATED_FLAG_RING_MODE BITFIELD_BIT(5)
|
|
/* Whether TBIMR tile-based rendering shall be enabled. */
|
|
#define ANV_GENERATED_FLAG_TBIMR BITFIELD_BIT(6)
|
|
|
|
/**
|
|
* Flags for query_copy.cl
|
|
*/
|
|
#define ANV_COPY_QUERY_FLAG_RESULT64 BITFIELD_BIT(0)
|
|
#define ANV_COPY_QUERY_FLAG_AVAILABLE BITFIELD_BIT(1)
|
|
#define ANV_COPY_QUERY_FLAG_DELTA BITFIELD_BIT(2)
|
|
#define ANV_COPY_QUERY_FLAG_PARTIAL BITFIELD_BIT(3)
|
|
|
|
#ifdef __OPENCL_VERSION__
|
|
|
|
void genX(write_3DSTATE_VERTEX_BUFFERS)(global void *dst_ptr,
|
|
uint32_t buffer_count);
|
|
|
|
void genX(write_VERTEX_BUFFER_STATE)(global void *dst_ptr,
|
|
uint32_t mocs,
|
|
uint32_t buffer_idx,
|
|
uint64_t address,
|
|
uint32_t size,
|
|
uint32_t stride);
|
|
|
|
void genX(write_3DPRIMITIVE)(global void *dst_ptr,
|
|
bool is_predicated,
|
|
bool is_indexed,
|
|
bool use_tbimr,
|
|
uint32_t vertex_count_per_instance,
|
|
uint32_t start_vertex_location,
|
|
uint32_t instance_count,
|
|
uint32_t start_instance_location,
|
|
uint32_t base_vertex_location);
|
|
|
|
#if GFX_VER >= 11
|
|
void genX(write_3DPRIMITIVE_EXTENDED)(global void *dst_ptr,
|
|
bool is_predicated,
|
|
bool is_indexed,
|
|
bool use_tbimr,
|
|
uint32_t vertex_count_per_instance,
|
|
uint32_t start_vertex_location,
|
|
uint32_t instance_count,
|
|
uint32_t start_instance_location,
|
|
uint32_t base_vertex_location,
|
|
uint32_t param_base_vertex,
|
|
uint32_t param_base_instance,
|
|
uint32_t param_draw_id);
|
|
#endif
|
|
|
|
void genX(write_MI_BATCH_BUFFER_START)(global void *dst_ptr, uint64_t addr);
|
|
|
|
void genX(write_draw)(global uint32_t *dst_ptr,
|
|
global void *indirect_ptr,
|
|
global uint32_t *draw_id_ptr,
|
|
uint32_t draw_id,
|
|
uint32_t instance_multiplier,
|
|
bool is_indexed,
|
|
bool is_predicated,
|
|
bool uses_tbimr,
|
|
bool uses_base,
|
|
bool uses_draw_id,
|
|
uint32_t mocs);
|
|
|
|
#endif /* __OPENCL_VERSION__ */
|
|
|
|
#endif /* _LIBANV_SHADERS_H_ */
|