glsl: remove Lower{TCS,TES}PatchVerticesIn

Intel was the only user and now NIR can do the lowering.

v2: do not try to handle it as a system value directly for the SPIR-V
    path. In GL we rather handle it as a uniform like we do for the
    GLSL path (Jason).

v3: drop LowerTESPatchVerticesIn as well (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Iago Toral Quiroga
2018-01-08 09:45:15 +01:00
parent dae856eced
commit 7e5c81235f
4 changed files with 4 additions and 31 deletions

View File

@@ -38,11 +38,6 @@ static const struct gl_builtin_uniform_element gl_NumSamples_elements[] = {
{NULL, {STATE_NUM_SAMPLES, 0, 0}, SWIZZLE_XXXX} {NULL, {STATE_NUM_SAMPLES, 0, 0}, SWIZZLE_XXXX}
}; };
/* only for TCS */
static const struct gl_builtin_uniform_element gl_PatchVerticesIn_elements[] = {
{NULL, {STATE_INTERNAL, STATE_TCS_PATCH_VERTICES_IN}, SWIZZLE_XXXX}
};
static const struct gl_builtin_uniform_element gl_DepthRange_elements[] = { static const struct gl_builtin_uniform_element gl_DepthRange_elements[] = {
{"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX}, {"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX},
{"far", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_YYYY}, {"far", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_YYYY},
@@ -240,7 +235,6 @@ static const struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = {
#define STATEVAR(name) {#name, name ## _elements, ARRAY_SIZE(name ## _elements)} #define STATEVAR(name) {#name, name ## _elements, ARRAY_SIZE(name ## _elements)}
static const struct gl_builtin_uniform_desc _mesa_builtin_uniform_desc[] = { static const struct gl_builtin_uniform_desc _mesa_builtin_uniform_desc[] = {
STATEVAR(gl_PatchVerticesIn),
STATEVAR(gl_NumSamples), STATEVAR(gl_NumSamples),
STATEVAR(gl_DepthRange), STATEVAR(gl_DepthRange),
STATEVAR(gl_ClipPlane), STATEVAR(gl_ClipPlane),
@@ -1067,12 +1061,7 @@ builtin_variable_generator::generate_tcs_special_vars()
{ {
add_system_value(SYSTEM_VALUE_PRIMITIVE_ID, int_t, "gl_PrimitiveID"); add_system_value(SYSTEM_VALUE_PRIMITIVE_ID, int_t, "gl_PrimitiveID");
add_system_value(SYSTEM_VALUE_INVOCATION_ID, int_t, "gl_InvocationID"); add_system_value(SYSTEM_VALUE_INVOCATION_ID, int_t, "gl_InvocationID");
add_system_value(SYSTEM_VALUE_VERTICES_IN, int_t, "gl_PatchVerticesIn");
if (state->ctx->Const.LowerTCSPatchVerticesIn) {
add_uniform(int_t, "gl_PatchVerticesIn");
} else {
add_system_value(SYSTEM_VALUE_VERTICES_IN, int_t, "gl_PatchVerticesIn");
}
add_output(VARYING_SLOT_TESS_LEVEL_OUTER, array(float_t, 4), add_output(VARYING_SLOT_TESS_LEVEL_OUTER, array(float_t, 4),
"gl_TessLevelOuter")->data.patch = 1; "gl_TessLevelOuter")->data.patch = 1;

View File

@@ -2502,7 +2502,7 @@ resize_tes_inputs(struct gl_context *ctx,
ir->accept(&input_resize_visitor); ir->accept(&input_resize_visitor);
} }
if (tcs || ctx->Const.LowerTESPatchVerticesIn) { if (tcs) {
/* Convert the gl_PatchVerticesIn system value into a constant, since /* Convert the gl_PatchVerticesIn system value into a constant, since
* the value is known at this point. * the value is known at this point.
*/ */
@@ -2513,20 +2513,8 @@ resize_tes_inputs(struct gl_context *ctx,
void *mem_ctx = ralloc_parent(var); void *mem_ctx = ralloc_parent(var);
var->data.location = 0; var->data.location = 0;
var->data.explicit_location = false; var->data.explicit_location = false;
if (tcs) { var->data.mode = ir_var_auto;
var->data.mode = ir_var_auto; var->constant_value = new(mem_ctx) ir_constant(num_vertices);
var->constant_value = new(mem_ctx) ir_constant(num_vertices);
} else {
var->data.mode = ir_var_uniform;
var->data.how_declared = ir_var_hidden;
var->allocate_state_slots(1);
ir_state_slot *slot0 = &var->get_state_slots()[0];
slot0->swizzle = SWIZZLE_XXXX;
slot0->tokens[0] = STATE_INTERNAL;
slot0->tokens[1] = STATE_TES_PATCH_VERTICES_IN;
for (int i = 2; i < STATE_LENGTH; i++)
slot0->tokens[i] = 0;
}
} }
} }
} }

View File

@@ -537,8 +537,6 @@ brw_initialize_context_constants(struct brw_context *brw)
ctx->Const.MaxClipPlanes = 8; ctx->Const.MaxClipPlanes = 8;
ctx->Const.GLSLTessLevelsAsInputs = true; ctx->Const.GLSLTessLevelsAsInputs = true;
ctx->Const.LowerTCSPatchVerticesIn = devinfo->gen >= 8;
ctx->Const.LowerTESPatchVerticesIn = true;
ctx->Const.PrimitiveRestartForPatches = true; ctx->Const.PrimitiveRestartForPatches = true;
ctx->Const.Program[MESA_SHADER_VERTEX].MaxNativeInstructions = 16 * 1024; ctx->Const.Program[MESA_SHADER_VERTEX].MaxNativeInstructions = 16 * 1024;

View File

@@ -4020,8 +4020,6 @@ struct gl_constants
GLuint MaxTessPatchComponents; GLuint MaxTessPatchComponents;
GLuint MaxTessControlTotalOutputComponents; GLuint MaxTessControlTotalOutputComponents;
bool LowerTessLevel; /**< Lower gl_TessLevel* from float[n] to vecn? */ bool LowerTessLevel; /**< Lower gl_TessLevel* from float[n] to vecn? */
bool LowerTCSPatchVerticesIn; /**< Lower gl_PatchVerticesIn to a uniform */
bool LowerTESPatchVerticesIn; /**< Lower gl_PatchVerticesIn to a uniform */
bool PrimitiveRestartForPatches; bool PrimitiveRestartForPatches;
bool LowerCsDerivedVariables; /**< Lower gl_GlobalInvocationID and bool LowerCsDerivedVariables; /**< Lower gl_GlobalInvocationID and
* gl_LocalInvocationIndex based on * gl_LocalInvocationIndex based on