mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-25 05:01:24 +00:00
[qfcc] Clean up the errors for some layout qualifiers
Nothing's actually implemented, but once I fix a couple more errors I'll be able to work on that.
This commit is contained in:
parent
c16a8411bc
commit
fb497cd0b2
1 changed files with 72 additions and 44 deletions
|
@ -123,6 +123,21 @@ glsl_layout_set_property (specifier_t spec, const expr_t *qual_name,
|
||||||
expr_string (qual_name), get_value_string (val->value));
|
expr_string (qual_name), get_value_string (val->value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
glsl_layout_format (specifier_t spec, const expr_t *qual_name)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
glsl_layout_push_constant (specifier_t spec, const expr_t *qual_name)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
glsl_layout_execution_mode (specifier_t spec, const expr_t *qual_name)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
decl_var = 1 << 0,
|
decl_var = 1 << 0,
|
||||||
decl_qual = 1 << 1,
|
decl_qual = 1 << 1,
|
||||||
|
@ -218,7 +233,7 @@ static layout_qual_t layout_qualifiers[] = {
|
||||||
.if_mask = I(uniform)|I(buffer),
|
.if_mask = I(uniform)|I(buffer),
|
||||||
},
|
},
|
||||||
{ .name = "push_constant",
|
{ .name = "push_constant",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_push_constant),
|
||||||
.obj_mask = D(block),
|
.obj_mask = D(block),
|
||||||
.var_type = V(any),
|
.var_type = V(any),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
|
@ -365,7 +380,7 @@ static layout_qual_t layout_qualifiers[] = {
|
||||||
.stage_filter = C { "fragment", nullptr },
|
.stage_filter = C { "fragment", nullptr },
|
||||||
},
|
},
|
||||||
{ .name = "early_fragment_tests",
|
{ .name = "early_fragment_tests",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_execution_mode),
|
||||||
.obj_mask = D(qual),
|
.obj_mask = D(qual),
|
||||||
.if_mask = I(in),
|
.if_mask = I(in),
|
||||||
.stage_filter = C { "fragment", nullptr },
|
.stage_filter = C { "fragment", nullptr },
|
||||||
|
@ -518,235 +533,235 @@ static layout_qual_t layout_qualifiers[] = {
|
||||||
},
|
},
|
||||||
|
|
||||||
{ .name = "rgba32f",
|
{ .name = "rgba32f",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba16f",
|
{ .name = "rgba16f",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg32f",
|
{ .name = "rg32f",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg16f",
|
{ .name = "rg16f",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r11f_g11f_b10f",
|
{ .name = "r11f_g11f_b10f",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r32f",
|
{ .name = "r32f",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r16f",
|
{ .name = "r16f",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba16",
|
{ .name = "rgba16",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgb10_a2",
|
{ .name = "rgb10_a2",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba8",
|
{ .name = "rgba8",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg16",
|
{ .name = "rg16",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg8",
|
{ .name = "rg8",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r16",
|
{ .name = "r16",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r8",
|
{ .name = "r8",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba16_snorm",
|
{ .name = "rgba16_snorm",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba8_snorm",
|
{ .name = "rgba8_snorm",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg16_snorm",
|
{ .name = "rg16_snorm",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg8_snorm",
|
{ .name = "rg8_snorm",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r16_snorm",
|
{ .name = "r16_snorm",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r8_snorm",
|
{ .name = "r8_snorm",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba32i",
|
{ .name = "rgba32i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba16i",
|
{ .name = "rgba16i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba8i",
|
{ .name = "rgba8i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg32i",
|
{ .name = "rg32i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg16i",
|
{ .name = "rg16i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg8i",
|
{ .name = "rg8i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r32i",
|
{ .name = "r32i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r16i",
|
{ .name = "r16i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r8i",
|
{ .name = "r8i",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba32ui",
|
{ .name = "rgba32ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba16ui",
|
{ .name = "rgba16ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgb10_a2ui",
|
{ .name = "rgb10_a2ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rgba8ui",
|
{ .name = "rgba8ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg32ui",
|
{ .name = "rg32ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg16ui",
|
{ .name = "rg16ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "rg8ui",
|
{ .name = "rg8ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r32ui",
|
{ .name = "r32ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r16ui",
|
{ .name = "r16ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
},
|
},
|
||||||
{ .name = "r8ui",
|
{ .name = "r8ui",
|
||||||
.apply = A(nullptr),
|
.apply = A(glsl_layout_format),
|
||||||
.obj_mask = D(var),
|
.obj_mask = D(var),
|
||||||
.var_type = V(image),
|
.var_type = V(image),
|
||||||
.if_mask = I(uniform),
|
.if_mask = I(uniform),
|
||||||
|
@ -784,9 +799,22 @@ layout_check_qualifier (const layout_qual_t *qual, specifier_t spec)
|
||||||
if (spec.sym) {
|
if (spec.sym) {
|
||||||
auto sym = spec.sym;
|
auto sym = spec.sym;
|
||||||
if (sym->type) {
|
if (sym->type) {
|
||||||
if (is_handle (sym->type)) {
|
auto type = sym->type;
|
||||||
|
if (is_reference (type)) {
|
||||||
|
type = dereference_type (type);
|
||||||
|
}
|
||||||
|
//FIXME is_handle works only for glsl as there are no user handles
|
||||||
|
if (is_handle (type)) {
|
||||||
var_type = var_opaque;
|
var_type = var_opaque;
|
||||||
} else if (spec.is_const && is_scalar (sym->type)) {
|
// images are opaque types, but certain qualifiers support
|
||||||
|
// only images and not other opaque types, but qualifiers that
|
||||||
|
// support opaque types in general also support images
|
||||||
|
if (qual->var_type == var_image
|
||||||
|
//FIXME shouldn't rely on name
|
||||||
|
&& strstr (type->name, "image")) {
|
||||||
|
var_type = var_image;
|
||||||
|
}
|
||||||
|
} else if (spec.is_const && is_scalar (type)) {
|
||||||
var_type = var_scalar;
|
var_type = var_scalar;
|
||||||
} else if (strcmp (sym->name, "gl_FragCoord") == 0) {
|
} else if (strcmp (sym->name, "gl_FragCoord") == 0) {
|
||||||
var_type = var_gl_FragCoord;
|
var_type = var_gl_FragCoord;
|
||||||
|
@ -868,7 +896,7 @@ layout_apply_qualifier (const expr_t *qualifier, specifier_t spec)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else if (qual->apply) {
|
} else if (qual->apply) {
|
||||||
if (!val) {
|
if (val) {
|
||||||
error (qualifier, "%s does not take a value", key.name);
|
error (qualifier, "%s does not take a value", key.name);
|
||||||
} else {
|
} else {
|
||||||
qual->apply (spec, qualifier->expr.e1);
|
qual->apply (spec, qualifier->expr.e1);
|
||||||
|
|
Loading…
Reference in a new issue