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:
@@ -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;
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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. */
|
||||||
|
@@ -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;
|
||||||
|
@@ -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)
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
};
|
};
|
||||||
|
@@ -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)) {
|
||||||
|
Reference in New Issue
Block a user