glsl: introduce data section to ir_variable
Data section helps serialization and cloning of a ir_variable. This patch includes the helper bits used for read only ir_variables. Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
@@ -93,39 +93,39 @@ cross_validate_types_and_qualifiers(struct gl_shader_program *prog,
|
||||
|
||||
/* Check that all of the qualifiers match between stages.
|
||||
*/
|
||||
if (input->centroid != output->centroid) {
|
||||
if (input->data.centroid != output->data.centroid) {
|
||||
linker_error(prog,
|
||||
"%s shader output `%s' %s centroid qualifier, "
|
||||
"but %s shader input %s centroid qualifier\n",
|
||||
_mesa_glsl_shader_target_name(producer_type),
|
||||
output->name,
|
||||
(output->centroid) ? "has" : "lacks",
|
||||
(output->data.centroid) ? "has" : "lacks",
|
||||
_mesa_glsl_shader_target_name(consumer_type),
|
||||
(input->centroid) ? "has" : "lacks");
|
||||
(input->data.centroid) ? "has" : "lacks");
|
||||
return;
|
||||
}
|
||||
|
||||
if (input->sample != output->sample) {
|
||||
if (input->data.sample != output->data.sample) {
|
||||
linker_error(prog,
|
||||
"%s shader output `%s' %s sample qualifier, "
|
||||
"but %s shader input %s sample qualifier\n",
|
||||
_mesa_glsl_shader_target_name(producer_type),
|
||||
output->name,
|
||||
(output->sample) ? "has" : "lacks",
|
||||
(output->data.sample) ? "has" : "lacks",
|
||||
_mesa_glsl_shader_target_name(consumer_type),
|
||||
(input->sample) ? "has" : "lacks");
|
||||
(input->data.sample) ? "has" : "lacks");
|
||||
return;
|
||||
}
|
||||
|
||||
if (input->invariant != output->invariant) {
|
||||
if (input->data.invariant != output->data.invariant) {
|
||||
linker_error(prog,
|
||||
"%s shader output `%s' %s invariant qualifier, "
|
||||
"but %s shader input %s invariant qualifier\n",
|
||||
_mesa_glsl_shader_target_name(producer_type),
|
||||
output->name,
|
||||
(output->invariant) ? "has" : "lacks",
|
||||
(output->data.invariant) ? "has" : "lacks",
|
||||
_mesa_glsl_shader_target_name(consumer_type),
|
||||
(input->invariant) ? "has" : "lacks");
|
||||
(input->data.invariant) ? "has" : "lacks");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -764,13 +764,13 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var)
|
||||
* regardless of where they appear. We can trivially satisfy that
|
||||
* requirement by changing the interpolation type to flat here.
|
||||
*/
|
||||
producer_var->centroid = false;
|
||||
producer_var->sample = false;
|
||||
producer_var->data.centroid = false;
|
||||
producer_var->data.sample = false;
|
||||
producer_var->interpolation = INTERP_QUALIFIER_FLAT;
|
||||
|
||||
if (consumer_var) {
|
||||
consumer_var->centroid = false;
|
||||
consumer_var->sample = false;
|
||||
consumer_var->data.centroid = false;
|
||||
consumer_var->data.sample = false;
|
||||
consumer_var->interpolation = INTERP_QUALIFIER_FLAT;
|
||||
}
|
||||
}
|
||||
@@ -887,7 +887,7 @@ varying_matches::compute_packing_class(ir_variable *var)
|
||||
*
|
||||
* Therefore, the packing class depends only on the interpolation type.
|
||||
*/
|
||||
unsigned packing_class = var->centroid | (var->sample << 1);
|
||||
unsigned packing_class = var->data.centroid | (var->data.sample << 1);
|
||||
packing_class *= 4;
|
||||
packing_class += var->interpolation;
|
||||
return packing_class;
|
||||
|
Reference in New Issue
Block a user