glsl: fix xfb_offset unsized array validation
This partially fixes CTS test: GL44-CTS.enhanced_layouts.xfb_get_program_resource_api The test now fails at a tes evaluation shader with unsized output arrays. The ARB_enhanced_layouts spec says: "It is a compile-time error to apply xfb_offset to the declaration of an unsized array." So this seems like a bug in the CTS. Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -40,29 +40,6 @@
|
||||
#include "program.h"
|
||||
|
||||
|
||||
/**
|
||||
* Get the varying type stripped of the outermost array if we're processing
|
||||
* a stage whose varyings are arrays indexed by a vertex number (such as
|
||||
* geometry shader inputs).
|
||||
*/
|
||||
static const glsl_type *
|
||||
get_varying_type(const ir_variable *var, gl_shader_stage stage)
|
||||
{
|
||||
const glsl_type *type = var->type;
|
||||
|
||||
if (!var->data.patch &&
|
||||
((var->data.mode == ir_var_shader_out &&
|
||||
stage == MESA_SHADER_TESS_CTRL) ||
|
||||
(var->data.mode == ir_var_shader_in &&
|
||||
(stage == MESA_SHADER_TESS_CTRL || stage == MESA_SHADER_TESS_EVAL ||
|
||||
stage == MESA_SHADER_GEOMETRY)))) {
|
||||
assert(type->is_array());
|
||||
type = type->fields.array;
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
static void
|
||||
create_xfb_varying_names(void *mem_ctx, const glsl_type *t, char **name,
|
||||
size_t name_length, unsigned *count,
|
||||
|
Reference in New Issue
Block a user