Module: Mesa Branch: main Commit: 118d61df59dffc7353a1978ed3a16de7b0024036 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=118d61df59dffc7353a1978ed3a16de7b0024036
Author: Dave Airlie <[email protected]> Date: Fri Jul 29 10:33:29 2022 +1000 draw: fix up jit type creation for gs/tcs/tes These were using numbers instead of defines, which makes reordering them harder. This should have no functional differences. Reviewed-by: Roland Scheidegger <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17783> --- src/gallium/auxiliary/draw/draw_llvm.c | 143 +++++++++++++++++---------------- src/gallium/auxiliary/draw/draw_llvm.h | 4 + 2 files changed, 76 insertions(+), 71 deletions(-) diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 4ec2883c2dd..aaf4b309a86 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -376,31 +376,32 @@ create_gs_jit_context_type(struct gallivm_state *gallivm, LLVMTypeRef elem_types[DRAW_GS_JIT_CTX_NUM_FIELDS]; LLVMTypeRef context_type; - elem_types[0] = LLVMArrayType(LLVMPointerType(float_type, 0), /* constants */ - LP_MAX_TGSI_CONST_BUFFERS); - elem_types[1] = LLVMArrayType(int_type, /* num_constants */ - LP_MAX_TGSI_CONST_BUFFERS); - elem_types[2] = LLVMPointerType(LLVMArrayType(LLVMArrayType(float_type, 4), - DRAW_TOTAL_CLIP_PLANES), 0); - elem_types[3] = LLVMPointerType(float_type, 0); /* viewports */ - - elem_types[4] = LLVMArrayType(texture_type, - PIPE_MAX_SHADER_SAMPLER_VIEWS); /* textures */ - elem_types[5] = LLVMArrayType(sampler_type, - PIPE_MAX_SAMPLERS); /* samplers */ - elem_types[6] = LLVMArrayType(image_type, - PIPE_MAX_SHADER_IMAGES); /* images */ - elem_types[7] = LLVMPointerType(LLVMPointerType(int_type, 0), 0); - elem_types[8] = LLVMPointerType(LLVMVectorType(int_type, - vector_length), 0); - elem_types[9] = LLVMPointerType(LLVMVectorType(int_type, - vector_length), 0); - - elem_types[10] = LLVMArrayType(LLVMPointerType(int_type, 0), /* ssbos */ + elem_types[DRAW_GS_JIT_CTX_CONSTANTS] = LLVMArrayType(LLVMPointerType(float_type, 0), /* constants */ + LP_MAX_TGSI_CONST_BUFFERS); + elem_types[DRAW_GS_JIT_CTX_NUM_CONSTANTS] = LLVMArrayType(int_type, /* num_constants */ + LP_MAX_TGSI_CONST_BUFFERS); + elem_types[DRAW_GS_JIT_CTX_PLANES] = LLVMPointerType(LLVMArrayType(LLVMArrayType(float_type, 4), + DRAW_TOTAL_CLIP_PLANES), 0); + elem_types[DRAW_GS_JIT_CTX_VIEWPORT] = LLVMPointerType(float_type, 0); /* viewports */ + + elem_types[DRAW_GS_JIT_CTX_TEXTURES] = LLVMArrayType(texture_type, + PIPE_MAX_SHADER_SAMPLER_VIEWS); /* textures */ + elem_types[DRAW_GS_JIT_CTX_SAMPLERS] = LLVMArrayType(sampler_type, + PIPE_MAX_SAMPLERS); /* samplers */ + elem_types[DRAW_GS_JIT_CTX_IMAGES] = LLVMArrayType(image_type, + PIPE_MAX_SHADER_IMAGES); /* images */ + elem_types[DRAW_GS_JIT_CTX_PRIM_LENGTHS] = LLVMPointerType(LLVMPointerType(int_type, 0), 0); + elem_types[DRAW_GS_JIT_CTX_EMITTED_VERTICES] = LLVMPointerType(LLVMVectorType(int_type, + vector_length), 0); + elem_types[DRAW_GS_JIT_CTX_EMITTED_PRIMS] = LLVMPointerType(LLVMVectorType(int_type, + vector_length), 0); + + elem_types[DRAW_GS_JIT_CTX_SSBOS] = LLVMArrayType(LLVMPointerType(int_type, 0), /* ssbos */ + LP_MAX_TGSI_SHADER_BUFFERS); + elem_types[DRAW_GS_JIT_CTX_NUM_SSBOS] = LLVMArrayType(int_type, /* num_ssbos */ LP_MAX_TGSI_SHADER_BUFFERS); - elem_types[11] = LLVMArrayType(int_type, /* num_ssbos */ - LP_MAX_TGSI_SHADER_BUFFERS); - elem_types[12] = LLVMPointerType(float_type, 0); /* aniso table */ + elem_types[DRAW_GS_JIT_CTX_ANISO_FILTER_TABLE] = LLVMPointerType(float_type, 0); /* aniso table */ + context_type = LLVMStructTypeInContext(gallivm->context, elem_types, ARRAY_SIZE(elem_types), 0); @@ -556,25 +557,25 @@ create_tcs_jit_context_type(struct gallivm_state *gallivm, LLVMTypeRef elem_types[DRAW_TCS_JIT_CTX_NUM_FIELDS]; LLVMTypeRef context_type; - elem_types[0] = LLVMArrayType(LLVMPointerType(float_type, 0), /* constants */ - LP_MAX_TGSI_CONST_BUFFERS); - elem_types[1] = LLVMArrayType(int_type, /* num_constants */ - LP_MAX_TGSI_CONST_BUFFERS); - elem_types[2] = LLVMInt32TypeInContext(gallivm->context); - elem_types[3] = LLVMInt32TypeInContext(gallivm->context); - - elem_types[4] = LLVMArrayType(texture_type, - PIPE_MAX_SHADER_SAMPLER_VIEWS); /* textures */ - elem_types[5] = LLVMArrayType(sampler_type, - PIPE_MAX_SAMPLERS); /* samplers */ - elem_types[6] = LLVMArrayType(image_type, - PIPE_MAX_SHADER_IMAGES); /* images */ - - elem_types[7] = LLVMArrayType(LLVMPointerType(int_type, 0), /* ssbos */ - LP_MAX_TGSI_SHADER_BUFFERS); - elem_types[8] = LLVMArrayType(int_type, /* num_ssbos */ - LP_MAX_TGSI_SHADER_BUFFERS); - elem_types[9] = LLVMPointerType(float_type, 0); /* aniso table */ + elem_types[DRAW_TCS_JIT_CTX_CONSTANTS] = LLVMArrayType(LLVMPointerType(float_type, 0), /* constants */ + LP_MAX_TGSI_CONST_BUFFERS); + elem_types[DRAW_TCS_JIT_CTX_NUM_CONSTANTS] = LLVMArrayType(int_type, /* num_constants */ + LP_MAX_TGSI_CONST_BUFFERS); + elem_types[DRAW_TCS_JIT_CTX_DUMMY1] = LLVMInt32TypeInContext(gallivm->context); + elem_types[DRAW_TCS_JIT_CTX_DUMMY2] = LLVMInt32TypeInContext(gallivm->context); + + elem_types[DRAW_TCS_JIT_CTX_TEXTURES] = LLVMArrayType(texture_type, + PIPE_MAX_SHADER_SAMPLER_VIEWS); /* textures */ + elem_types[DRAW_TCS_JIT_CTX_SAMPLERS] = LLVMArrayType(sampler_type, + PIPE_MAX_SAMPLERS); /* samplers */ + elem_types[DRAW_TCS_JIT_CTX_IMAGES] = LLVMArrayType(image_type, + PIPE_MAX_SHADER_IMAGES); /* images */ + + elem_types[DRAW_TCS_JIT_CTX_SSBOS] = LLVMArrayType(LLVMPointerType(int_type, 0), /* ssbos */ + LP_MAX_TGSI_SHADER_BUFFERS); + elem_types[DRAW_TCS_JIT_CTX_NUM_SSBOS] = LLVMArrayType(int_type, /* num_ssbos */ + LP_MAX_TGSI_SHADER_BUFFERS); + elem_types[DRAW_TCS_JIT_CTX_ANISO_FILTER_TABLE] = LLVMPointerType(float_type, 0); /* aniso table */ context_type = LLVMStructTypeInContext(gallivm->context, elem_types, ARRAY_SIZE(elem_types), 0); @@ -654,50 +655,50 @@ create_tes_jit_context_type(struct gallivm_state *gallivm, LLVMTargetDataRef target = gallivm->target; LLVMTypeRef float_type = LLVMFloatTypeInContext(gallivm->context); LLVMTypeRef int_type = LLVMInt32TypeInContext(gallivm->context); - LLVMTypeRef elem_types[DRAW_TCS_JIT_CTX_NUM_FIELDS]; + LLVMTypeRef elem_types[DRAW_TES_JIT_CTX_NUM_FIELDS]; LLVMTypeRef context_type; - elem_types[0] = LLVMArrayType(LLVMPointerType(float_type, 0), /* constants */ - LP_MAX_TGSI_CONST_BUFFERS); - elem_types[1] = LLVMArrayType(int_type, /* num_constants */ - LP_MAX_TGSI_CONST_BUFFERS); - elem_types[2] = LLVMInt32TypeInContext(gallivm->context); - elem_types[3] = LLVMInt32TypeInContext(gallivm->context); - - elem_types[4] = LLVMArrayType(texture_type, - PIPE_MAX_SHADER_SAMPLER_VIEWS); /* textures */ - elem_types[5] = LLVMArrayType(sampler_type, - PIPE_MAX_SAMPLERS); /* samplers */ - elem_types[6] = LLVMArrayType(image_type, - PIPE_MAX_SHADER_IMAGES); /* images */ - - elem_types[7] = LLVMArrayType(LLVMPointerType(int_type, 0), /* ssbos */ - LP_MAX_TGSI_SHADER_BUFFERS); - elem_types[8] = LLVMArrayType(int_type, /* num_ssbos */ - LP_MAX_TGSI_SHADER_BUFFERS); - elem_types[9] = LLVMPointerType(float_type, 0); /* aniso table */ + elem_types[DRAW_TES_JIT_CTX_CONSTANTS] = LLVMArrayType(LLVMPointerType(float_type, 0), /* constants */ + LP_MAX_TGSI_CONST_BUFFERS); + elem_types[DRAW_TES_JIT_CTX_NUM_CONSTANTS] = LLVMArrayType(int_type, /* num_constants */ + LP_MAX_TGSI_CONST_BUFFERS); + elem_types[DRAW_TES_JIT_CTX_DUMMY1] = LLVMInt32TypeInContext(gallivm->context); + elem_types[DRAW_TES_JIT_CTX_DUMMY2] = LLVMInt32TypeInContext(gallivm->context); + + elem_types[DRAW_TES_JIT_CTX_TEXTURES] = LLVMArrayType(texture_type, + PIPE_MAX_SHADER_SAMPLER_VIEWS); /* textures */ + elem_types[DRAW_TES_JIT_CTX_SAMPLERS] = LLVMArrayType(sampler_type, + PIPE_MAX_SAMPLERS); /* samplers */ + elem_types[DRAW_TES_JIT_CTX_IMAGES] = LLVMArrayType(image_type, + PIPE_MAX_SHADER_IMAGES); /* images */ + + elem_types[DRAW_TES_JIT_CTX_SSBOS] = LLVMArrayType(LLVMPointerType(int_type, 0), /* ssbos */ + LP_MAX_TGSI_SHADER_BUFFERS); + elem_types[DRAW_TES_JIT_CTX_NUM_SSBOS] = LLVMArrayType(int_type, /* num_ssbos */ + LP_MAX_TGSI_SHADER_BUFFERS); + elem_types[DRAW_TES_JIT_CTX_ANISO_FILTER_TABLE] = LLVMPointerType(float_type, 0); /* aniso table */ context_type = LLVMStructTypeInContext(gallivm->context, elem_types, ARRAY_SIZE(elem_types), 0); (void) target; /* silence unused var warning for non-debug build */ LP_CHECK_MEMBER_OFFSET(struct draw_tes_jit_context, constants, - target, context_type, DRAW_TCS_JIT_CTX_CONSTANTS); + target, context_type, DRAW_TES_JIT_CTX_CONSTANTS); LP_CHECK_MEMBER_OFFSET(struct draw_tes_jit_context, num_constants, - target, context_type, DRAW_TCS_JIT_CTX_NUM_CONSTANTS); + target, context_type, DRAW_TES_JIT_CTX_NUM_CONSTANTS); LP_CHECK_MEMBER_OFFSET(struct draw_tes_jit_context, textures, target, context_type, - DRAW_TCS_JIT_CTX_TEXTURES); + DRAW_TES_JIT_CTX_TEXTURES); LP_CHECK_MEMBER_OFFSET(struct draw_tes_jit_context, samplers, target, context_type, - DRAW_TCS_JIT_CTX_SAMPLERS); + DRAW_TES_JIT_CTX_SAMPLERS); LP_CHECK_MEMBER_OFFSET(struct draw_tes_jit_context, ssbos, - target, context_type, DRAW_TCS_JIT_CTX_SSBOS); + target, context_type, DRAW_TES_JIT_CTX_SSBOS); LP_CHECK_MEMBER_OFFSET(struct draw_tes_jit_context, num_ssbos, - target, context_type, DRAW_TCS_JIT_CTX_NUM_SSBOS); + target, context_type, DRAW_TES_JIT_CTX_NUM_SSBOS); LP_CHECK_MEMBER_OFFSET(struct draw_tes_jit_context, images, - target, context_type, DRAW_TCS_JIT_CTX_IMAGES); + target, context_type, DRAW_TES_JIT_CTX_IMAGES); LP_CHECK_MEMBER_OFFSET(struct draw_tcs_jit_context, aniso_filter_table, - target, context_type, DRAW_TCS_JIT_CTX_ANISO_FILTER_TABLE); + target, context_type, DRAW_TES_JIT_CTX_ANISO_FILTER_TABLE); LP_CHECK_STRUCT_SIZE(struct draw_tes_jit_context, target, context_type); diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index 3e1946a3144..54a992db175 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -362,6 +362,8 @@ struct draw_tcs_jit_context { enum { DRAW_TCS_JIT_CTX_CONSTANTS = 0, DRAW_TCS_JIT_CTX_NUM_CONSTANTS = 1, + DRAW_TCS_JIT_CTX_DUMMY1 = 2, + DRAW_TCS_JIT_CTX_DUMMY2 = 3, DRAW_TCS_JIT_CTX_TEXTURES = DRAW_JIT_CTX_TEXTURES, DRAW_TCS_JIT_CTX_SAMPLERS = DRAW_JIT_CTX_SAMPLERS, DRAW_TCS_JIT_CTX_IMAGES = DRAW_JIT_CTX_IMAGES, @@ -416,6 +418,8 @@ struct draw_tes_jit_context { enum { DRAW_TES_JIT_CTX_CONSTANTS = 0, DRAW_TES_JIT_CTX_NUM_CONSTANTS = 1, + DRAW_TES_JIT_CTX_DUMMY1 = 2, + DRAW_TES_JIT_CTX_DUMMY2 = 3, DRAW_TES_JIT_CTX_TEXTURES = DRAW_JIT_CTX_TEXTURES, DRAW_TES_JIT_CTX_SAMPLERS = DRAW_JIT_CTX_SAMPLERS, DRAW_TES_JIT_CTX_IMAGES = DRAW_JIT_CTX_IMAGES,
