gallium: add TGSI_SEMANTIC_DEFAULT_OUTER/INNER_LEVEL
for radeonsi NIR support.
This commit is contained in:
@@ -3495,6 +3495,18 @@ A bit mask of ``bit index < TGSI_SEMANTIC_SUBGROUP_INVOCATION``, i.e.
|
||||
``(1 << subgroup_invocation) - 1`` in arbitrary precision arithmetic.
|
||||
|
||||
|
||||
TGSI_SEMANTIC_TESS_DEFAULT_OUTER_LEVEL
|
||||
""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
A system value equal to the default_outer_level array set via set_tess_level.
|
||||
|
||||
|
||||
TGSI_SEMANTIC_TESS_DEFAULT_INNER_LEVEL
|
||||
""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
A system value equal to the default_inner_level array set via set_tess_level.
|
||||
|
||||
|
||||
Declaration Interpolate
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@@ -2116,8 +2116,8 @@ void si_load_system_value(struct si_shader_context *ctx,
|
||||
value = load_tess_level(ctx, decl->Semantic.Name);
|
||||
break;
|
||||
|
||||
case TGSI_SEMANTIC_DEFAULT_TESSOUTER_SI:
|
||||
case TGSI_SEMANTIC_DEFAULT_TESSINNER_SI:
|
||||
case TGSI_SEMANTIC_TESS_DEFAULT_OUTER_LEVEL:
|
||||
case TGSI_SEMANTIC_TESS_DEFAULT_INNER_LEVEL:
|
||||
{
|
||||
LLVMValueRef buf, slot, val[4];
|
||||
int i, offset;
|
||||
@@ -2125,7 +2125,7 @@ void si_load_system_value(struct si_shader_context *ctx,
|
||||
slot = LLVMConstInt(ctx->i32, SI_HS_CONST_DEFAULT_TESS_LEVELS, 0);
|
||||
buf = LLVMGetParam(ctx->main_fn, ctx->param_rw_buffers);
|
||||
buf = ac_build_load_to_sgpr(&ctx->ac, buf, slot);
|
||||
offset = decl->Semantic.Name == TGSI_SEMANTIC_DEFAULT_TESSINNER_SI ? 4 : 0;
|
||||
offset = decl->Semantic.Name == TGSI_SEMANTIC_TESS_DEFAULT_INNER_LEVEL ? 4 : 0;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
val[i] = buffer_load_const(ctx, buf,
|
||||
|
@@ -256,13 +256,6 @@ enum {
|
||||
#define S_VS_STATE_LS_OUT_VERTEX_SIZE(x) (((unsigned)(x) & 0xFF) << 24)
|
||||
#define C_VS_STATE_LS_OUT_VERTEX_SIZE 0x00FFFFFF
|
||||
|
||||
/* Driver-specific system values. */
|
||||
enum {
|
||||
/* Values from set_tess_state. */
|
||||
TGSI_SEMANTIC_DEFAULT_TESSOUTER_SI = TGSI_SEMANTIC_COUNT,
|
||||
TGSI_SEMANTIC_DEFAULT_TESSINNER_SI,
|
||||
};
|
||||
|
||||
enum {
|
||||
/* Use a property enum that CS wouldn't use. */
|
||||
TGSI_PROPERTY_CS_LOCAL_SIZE = TGSI_PROPERTY_FS_COORD_ORIGIN,
|
||||
|
@@ -105,9 +105,9 @@ void *si_create_fixed_func_tcs(struct si_context *sctx)
|
||||
return NULL;
|
||||
|
||||
outer = ureg_DECL_system_value(ureg,
|
||||
TGSI_SEMANTIC_DEFAULT_TESSOUTER_SI, 0);
|
||||
TGSI_SEMANTIC_TESS_DEFAULT_OUTER_LEVEL, 0);
|
||||
inner = ureg_DECL_system_value(ureg,
|
||||
TGSI_SEMANTIC_DEFAULT_TESSINNER_SI, 0);
|
||||
TGSI_SEMANTIC_TESS_DEFAULT_INNER_LEVEL, 0);
|
||||
|
||||
tessouter = ureg_DECL_output(ureg, TGSI_SEMANTIC_TESSOUTER, 0);
|
||||
tessinner = ureg_DECL_output(ureg, TGSI_SEMANTIC_TESSINNER, 0);
|
||||
|
@@ -209,6 +209,8 @@ enum tgsi_semantic {
|
||||
TGSI_SEMANTIC_SUBGROUP_LE_MASK,
|
||||
TGSI_SEMANTIC_SUBGROUP_LT_MASK,
|
||||
TGSI_SEMANTIC_CS_USER_DATA_AMD,
|
||||
TGSI_SEMANTIC_TESS_DEFAULT_OUTER_LEVEL, /**< from set_tess_state */
|
||||
TGSI_SEMANTIC_TESS_DEFAULT_INNER_LEVEL, /**< from set_tess_state */
|
||||
TGSI_SEMANTIC_COUNT, /**< number of semantic values */
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user