mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-28 09:40:21 +01:00
mesa: glsl: finish up support for precision qualifiers
This commit is contained in:
parent
1ffd6908d4
commit
a78f295f7c
2 changed files with 27 additions and 4 deletions
|
|
@ -707,20 +707,33 @@ parse_fully_specified_type(slang_parse_ctx * C, slang_output_ctx * O,
|
|||
precision = *C->I++;
|
||||
if (!parse_type_specifier(C, O, &type->specifier))
|
||||
return 0;
|
||||
|
||||
switch (precision) {
|
||||
case PRECISION_DEFAULT:
|
||||
/* TODO: Grab the default precision for the given type specifier.
|
||||
*/
|
||||
assert(type->specifier.type < TYPE_SPECIFIER_COUNT);
|
||||
if (type->specifier.type < TYPE_SPECIFIER_COUNT)
|
||||
type->precision = O->default_precision[type->specifier.type];
|
||||
break;
|
||||
case PRECISION_LOW:
|
||||
type->precision = SLANG_PREC_LOW;
|
||||
break;
|
||||
case PRECISION_MEDIUM:
|
||||
type->precision = SLANG_PREC_MEDIUM;
|
||||
break;
|
||||
case PRECISION_HIGH:
|
||||
/* TODO: Translate to mesa representation.
|
||||
*/
|
||||
type->precision = SLANG_PREC_HIGH;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if !FEATURE_es2_glsl
|
||||
if (precision != PRECISION_DEFAULT) {
|
||||
slang_info_log_error(C->L, "precision qualifiers not allowed");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,10 +51,20 @@ slang_type_specifier_type_to_string(slang_type_specifier_type);
|
|||
|
||||
|
||||
|
||||
typedef enum slang_type_precision_
|
||||
{
|
||||
SLANG_PREC_DEFAULT,
|
||||
SLANG_PREC_LOW,
|
||||
SLANG_PREC_MEDIUM,
|
||||
SLANG_PREC_HIGH
|
||||
} slang_type_precision;
|
||||
|
||||
|
||||
typedef struct slang_fully_specified_type_
|
||||
{
|
||||
slang_type_qualifier qualifier;
|
||||
slang_type_specifier specifier;
|
||||
slang_type_precision precision;
|
||||
} slang_fully_specified_type;
|
||||
|
||||
extern int
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue