Next version, with changes for src/glsl/cl/sl_cl_parse.c
diff --git a/src/glsl/cl/sl_cl_parse.c b/src/glsl/cl/sl_cl_parse.c index 09456f5..8bd448b 100644 --- a/src/glsl/cl/sl_cl_parse.c +++ b/src/glsl/cl/sl_cl_parse.c @@ -154,18 +154,21 @@ #define TYPE_SPECIFIER_TYPENAME 25 /* OpenGL 2.1 */ -#define TYPE_SPECIFIER_MAT23 26 -#define TYPE_SPECIFIER_MAT32 27 -#define TYPE_SPECIFIER_MAT24 28 -#define TYPE_SPECIFIER_MAT42 29 -#define TYPE_SPECIFIER_MAT34 30 -#define TYPE_SPECIFIER_MAT43 31 +#define TYPE_SPECIFIER_MAT22 26 +#define TYPE_SPECIFIER_MAT23 27 +#define TYPE_SPECIFIER_MAT32 28 +#define TYPE_SPECIFIER_MAT33 29 +#define TYPE_SPECIFIER_MAT24 30 +#define TYPE_SPECIFIER_MAT42 31 +#define TYPE_SPECIFIER_MAT34 32 +#define TYPE_SPECIFIER_MAT43 33 +#define TYPE_SPECIFIER_MAT44 34 /* GL_EXT_texture_array */ -#define TYPE_SPECIFIER_SAMPLER_1D_ARRAY 32 -#define TYPE_SPECIFIER_SAMPLER_2D_ARRAY 33 -#define TYPE_SPECIFIER_SAMPLER_1D_ARRAY_SHADOW 34 -#define TYPE_SPECIFIER_SAMPLER_2D_ARRAY_SHADOW 35 +#define TYPE_SPECIFIER_SAMPLER_1D_ARRAY 35 +#define TYPE_SPECIFIER_SAMPLER_2D_ARRAY 36 +#define TYPE_SPECIFIER_SAMPLER_1D_ARRAY_SHADOW 37 +#define TYPE_SPECIFIER_SAMPLER_2D_ARRAY_SHADOW 38 /* type specifier array */ #define TYPE_SPECIFIER_NONARRAY 0 @@ -274,12 +277,15 @@ struct parse_dict { int mat2; int mat3; int mat4; + int mat2x2; int mat2x3; int mat3x2; int mat2x4; int mat4x2; + int mat3x3; int mat3x4; int mat4x3; + int mat4x4; int sampler1D; int sampler2D; int sampler3D; @@ -1012,10 +1018,14 @@ _parse_type_specifier_nonarray(struct parse_context *ctx, _update(ctx, e, TYPE_SPECIFIER_MAT3); } else if (id == ctx->dict.mat4) { _update(ctx, e, TYPE_SPECIFIER_MAT4); + } else if (id == ctx->dict.mat2x2) { + _update(ctx, e, TYPE_SPECIFIER_MAT22); } else if (id == ctx->dict.mat2x3) { _update(ctx, e, TYPE_SPECIFIER_MAT23); } else if (id == ctx->dict.mat3x2) { _update(ctx, e, TYPE_SPECIFIER_MAT32); + } else if (id == ctx->dict.mat3x3) { + _update(ctx, e, TYPE_SPECIFIER_MAT33); } else if (id == ctx->dict.mat2x4) { _update(ctx, e, TYPE_SPECIFIER_MAT24); } else if (id == ctx->dict.mat4x2) { @@ -1024,6 +1034,8 @@ _parse_type_specifier_nonarray(struct parse_context *ctx, _update(ctx, e, TYPE_SPECIFIER_MAT34); } else if (id == ctx->dict.mat4x3) { _update(ctx, e, TYPE_SPECIFIER_MAT43); + } else if (id == ctx->dict.mat4x4) { + _update(ctx, e, TYPE_SPECIFIER_MAT44); } else if (id == ctx->dict.sampler1D) { _update(ctx, e, TYPE_SPECIFIER_SAMPLER1D); } else if (id == ctx->dict.sampler2D) { @@ -2922,12 +2934,15 @@ sl_cl_compile(struct sl_pp_context *context, ADD_NAME(ctx, mat2); ADD_NAME(ctx, mat3); ADD_NAME(ctx, mat4); + ADD_NAME(ctx, mat2x2); ADD_NAME(ctx, mat2x3); ADD_NAME(ctx, mat3x2); + ADD_NAME(ctx, mat3x3); ADD_NAME(ctx, mat2x4); ADD_NAME(ctx, mat4x2); ADD_NAME(ctx, mat3x4); ADD_NAME(ctx, mat4x3); + ADD_NAME(ctx, mat4x4); ADD_NAME(ctx, sampler1D); ADD_NAME(ctx, sampler2D); ADD_NAME(ctx, sampler3D); diff --git a/src/mesa/slang/slang_typeinfo.c b/src/mesa/slang/slang_typeinfo.c index d039a12..eccd29f 100644 --- a/src/mesa/slang/slang_typeinfo.c +++ b/src/mesa/slang/slang_typeinfo.c @@ -187,8 +187,11 @@ static const type_specifier_type_name type_specifier_type_names[] = { {"vec3", SLANG_SPEC_VEC3}, {"vec4", SLANG_SPEC_VEC4}, {"mat2", SLANG_SPEC_MAT2}, + {"mat2x2", SLANG_SPEC_MAT22}, {"mat3", SLANG_SPEC_MAT3}, + {"mat3x3", SLANG_SPEC_MAT33}, {"mat4", SLANG_SPEC_MAT4}, + {"mat4x4", SLANG_SPEC_MAT44}, {"mat2x3", SLANG_SPEC_MAT23}, {"mat3x2", SLANG_SPEC_MAT32}, {"mat2x4", SLANG_SPEC_MAT24}, @@ -934,12 +937,15 @@ _slang_type_is_matrix(slang_type_specifier_type ty) case SLANG_SPEC_MAT2: case SLANG_SPEC_MAT3: case SLANG_SPEC_MAT4: + case SLANG_SPEC_MAT22: case SLANG_SPEC_MAT23: case SLANG_SPEC_MAT32: + case SLANG_SPEC_MAT33: case SLANG_SPEC_MAT24: case SLANG_SPEC_MAT42: case SLANG_SPEC_MAT34: case SLANG_SPEC_MAT43: + case SLANG_SPEC_MAT44: return GL_TRUE; default: return GL_FALSE; @@ -986,12 +992,15 @@ _slang_type_is_float_vec_mat(slang_type_specifier_type ty) case SLANG_SPEC_MAT2: case SLANG_SPEC_MAT3: case SLANG_SPEC_MAT4: + case SLANG_SPEC_MAT22: case SLANG_SPEC_MAT23: case SLANG_SPEC_MAT32: + case SLANG_SPEC_MAT33: case SLANG_SPEC_MAT24: case SLANG_SPEC_MAT42: case SLANG_SPEC_MAT34: case SLANG_SPEC_MAT43: + case SLANG_SPEC_MAT44: return GL_TRUE; default: return GL_FALSE; @@ -1023,10 +1032,13 @@ _slang_type_base(slang_type_specifier_type ty) case SLANG_SPEC_BVEC4: return SLANG_SPEC_BOOL; case SLANG_SPEC_MAT2: + case SLANG_SPEC_MAT22: return SLANG_SPEC_VEC2; case SLANG_SPEC_MAT3: + case SLANG_SPEC_MAT33: return SLANG_SPEC_VEC3; case SLANG_SPEC_MAT4: + case SLANG_SPEC_MAT44: return SLANG_SPEC_VEC4; case SLANG_SPEC_MAT23: return SLANG_SPEC_VEC3; @@ -1062,16 +1074,19 @@ _slang_type_dim(slang_type_specifier_type ty) case SLANG_SPEC_IVEC2: case SLANG_SPEC_BVEC2: case SLANG_SPEC_MAT2: + case SLANG_SPEC_MAT22: return 2; case SLANG_SPEC_VEC3: case SLANG_SPEC_IVEC3: case SLANG_SPEC_BVEC3: case SLANG_SPEC_MAT3: + case SLANG_SPEC_MAT33: return 3; case SLANG_SPEC_VEC4: case SLANG_SPEC_IVEC4: case SLANG_SPEC_BVEC4: case SLANG_SPEC_MAT4: + case SLANG_SPEC_MAT44: return 4; case SLANG_SPEC_MAT23: @@ -1125,10 +1140,13 @@ _slang_gltype_from_specifier(const slang_type_specifier *type) case SLANG_SPEC_VEC4: return GL_FLOAT_VEC4; case SLANG_SPEC_MAT2: + case SLANG_SPEC_MAT22: return GL_FLOAT_MAT2; case SLANG_SPEC_MAT3: + case SLANG_SPEC_MAT33: return GL_FLOAT_MAT3; case SLANG_SPEC_MAT4: + case SLANG_SPEC_MAT44: return GL_FLOAT_MAT4; case SLANG_SPEC_MAT23: return GL_FLOAT_MAT2x3; diff --git a/src/mesa/slang/slang_typeinfo.h b/src/mesa/slang/slang_typeinfo.h index 2251b06..a156bbd 100644 --- a/src/mesa/slang/slang_typeinfo.h +++ b/src/mesa/slang/slang_typeinfo.h @@ -130,11 +130,14 @@ typedef enum slang_type_specifier_type_ SLANG_SPEC_MAT3, SLANG_SPEC_MAT4, SLANG_SPEC_MAT23, + SLANG_SPEC_MAT22, SLANG_SPEC_MAT32, + SLANG_SPEC_MAT33, SLANG_SPEC_MAT24, SLANG_SPEC_MAT42, SLANG_SPEC_MAT34, SLANG_SPEC_MAT43, + SLANG_SPEC_MAT44, SLANG_SPEC_SAMPLER_1D, SLANG_SPEC_SAMPLER_2D, SLANG_SPEC_SAMPLER_3D,
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev