glsl/st/mesa: use common system values read field

And set system values read directly in shader_info.

st/mesa changes where:
Reviewed-by: Marek Olšák <marek.olsak@amd.com>

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Timothy Arceri
2016-10-20 16:30:56 +11:00
parent 2f59f3eee5
commit 4016f08854
8 changed files with 8 additions and 11 deletions

View File

@@ -124,7 +124,7 @@ mark(struct gl_program *prog, ir_variable *var, int offset, int len,
prog->info.fs.uses_sample_qualifier |= var->data.sample; prog->info.fs.uses_sample_qualifier |= var->data.sample;
} }
} else if (var->data.mode == ir_var_system_value) { } else if (var->data.mode == ir_var_system_value) {
prog->SystemValuesRead |= bitfield; prog->info.system_values_read |= bitfield;
} else { } else {
assert(var->data.mode == ir_var_shader_out); assert(var->data.mode == ir_var_shader_out);
if (is_patch_generic) { if (is_patch_generic) {
@@ -432,7 +432,7 @@ do_set_program_inouts(exec_list *instructions, struct gl_program *prog,
prog->info.outputs_read = 0; prog->info.outputs_read = 0;
prog->info.patch_inputs_read = 0; prog->info.patch_inputs_read = 0;
prog->info.patch_outputs_written = 0; prog->info.patch_outputs_written = 0;
prog->SystemValuesRead = 0; prog->info.system_values_read = 0;
if (shader_stage == MESA_SHADER_FRAGMENT) { if (shader_stage == MESA_SHADER_FRAGMENT) {
prog->info.fs.uses_sample_qualifier = false; prog->info.fs.uses_sample_qualifier = false;
prog->info.fs.uses_discard = false; prog->info.fs.uses_discard = false;

View File

@@ -30,6 +30,5 @@ copy_shader_info(const struct gl_shader_program *shader_prog,
{ {
shader_info *info = &sh->Program->info; shader_info *info = &sh->Program->info;
info->system_values_read = sh->Program->SystemValuesRead;
info->uses_texture_gather = sh->Program->UsesGather; info->uses_texture_gather = sh->Program->UsesGather;
} }

View File

@@ -1923,7 +1923,6 @@ struct gl_program
struct shader_info info; struct shader_info info;
GLbitfield64 SecondaryOutputsWritten; /**< Subset of OutputsWritten outputs written with non-zero index. */ GLbitfield64 SecondaryOutputsWritten; /**< Subset of OutputsWritten outputs written with non-zero index. */
GLbitfield SystemValuesRead; /**< Bitmask of SYSTEM_VALUE_x inputs used */
GLbitfield TexturesUsed[MAX_COMBINED_TEXTURE_IMAGE_UNITS]; /**< TEXTURE_x_BIT bitmask */ GLbitfield TexturesUsed[MAX_COMBINED_TEXTURE_IMAGE_UNITS]; /**< TEXTURE_x_BIT bitmask */
GLbitfield SamplersUsed; /**< Bitfield of which samplers are used */ GLbitfield SamplersUsed; /**< Bitfield of which samplers are used */
GLbitfield ShadowSamplers; /**< Texture units used for shadow sampling. */ GLbitfield ShadowSamplers; /**< Texture units used for shadow sampling. */

View File

@@ -1051,7 +1051,6 @@ prog_to_nir(const struct gl_program *prog,
s->info->num_abos = 0; s->info->num_abos = 0;
s->info->num_ssbos = 0; s->info->num_ssbos = 0;
s->info->num_images = 0; s->info->num_images = 0;
s->info->system_values_read = prog->SystemValuesRead;
s->info->uses_texture_gather = false; s->info->uses_texture_gather = false;
s->info->uses_clip_distance_out = false; s->info->uses_clip_distance_out = false;
s->info->separate_shader = false; s->info->separate_shader = false;

View File

@@ -521,7 +521,7 @@ _mesa_get_min_invocations_per_fragment(struct gl_context *ctx,
if (prog->info.fs.uses_sample_qualifier && !ignore_sample_qualifier) if (prog->info.fs.uses_sample_qualifier && !ignore_sample_qualifier)
return MAX2(_mesa_geometric_samples(ctx->DrawBuffer), 1); return MAX2(_mesa_geometric_samples(ctx->DrawBuffer), 1);
if (prog->SystemValuesRead & (SYSTEM_BIT_SAMPLE_ID | if (prog->info.system_values_read & (SYSTEM_BIT_SAMPLE_ID |
SYSTEM_BIT_SAMPLE_POS)) SYSTEM_BIT_SAMPLE_POS))
return MAX2(_mesa_geometric_samples(ctx->DrawBuffer), 1); return MAX2(_mesa_geometric_samples(ctx->DrawBuffer), 1);
else if (ctx->Multisample.SampleShading) else if (ctx->Multisample.SampleShading)

View File

@@ -596,7 +596,7 @@ _mesa_program_fragment_position_to_sysval(struct gl_program *prog)
return; return;
prog->info.inputs_read &= ~BITFIELD64_BIT(VARYING_SLOT_POS); prog->info.inputs_read &= ~BITFIELD64_BIT(VARYING_SLOT_POS);
prog->SystemValuesRead |= 1 << SYSTEM_VALUE_FRAG_COORD; prog->info.system_values_read |= 1 << SYSTEM_VALUE_FRAG_COORD;
for (i = 0; i < prog->NumInstructions; i++) { for (i = 0; i < prog->NumInstructions; i++) {
struct prog_instruction *inst = prog->Instructions + i; struct prog_instruction *inst = prog->Instructions + i;

View File

@@ -6170,7 +6170,7 @@ st_translate_program(
/* Declare misc input registers /* Declare misc input registers
*/ */
{ {
GLbitfield sysInputs = proginfo->SystemValuesRead; GLbitfield sysInputs = proginfo->info.system_values_read;
for (i = 0; sysInputs; i++) { for (i = 0; sysInputs; i++) {
if (sysInputs & (1 << i)) { if (sysInputs & (1 << i)) {
@@ -6520,7 +6520,7 @@ get_mesa_program_tgsi(struct gl_context *ctx,
/* This must be done before the uniform storage is associated. */ /* This must be done before the uniform storage is associated. */
if (shader->Stage == MESA_SHADER_FRAGMENT && if (shader->Stage == MESA_SHADER_FRAGMENT &&
(prog->info.inputs_read & VARYING_BIT_POS || (prog->info.inputs_read & VARYING_BIT_POS ||
prog->SystemValuesRead & (1 << SYSTEM_VALUE_FRAG_COORD))) { prog->info.system_values_read & (1 << SYSTEM_VALUE_FRAG_COORD))) {
static const gl_state_index wposTransformState[STATE_LENGTH] = { static const gl_state_index wposTransformState[STATE_LENGTH] = {
STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM
}; };

View File

@@ -914,7 +914,7 @@ st_translate_mesa_program(
/* Declare misc input registers /* Declare misc input registers
*/ */
{ {
GLbitfield sysInputs = program->SystemValuesRead; GLbitfield sysInputs = program->info.system_values_read;
for (i = 0; sysInputs; i++) { for (i = 0; sysInputs; i++) {
if (sysInputs & (1 << i)) { if (sysInputs & (1 << i)) {