Commit 42077bb1 by Arun Patole Committed by Jamie Madill

Implement missing variants of min, max and clamp

BUG=angle:914 TEST=dEQP tests Tests passing 100% because of this change: dEQP-GLES3.functional.shaders.operator.common_functions.min.* dEQP-GLES3.functional.shaders.operator.common_functions.max.* dEQP-GLES3.functional.shaders.operator.common_functions.clamp.* Reduced number of errors in tests: EQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common.* These tests are not yet passing because of constant expressions bug (angle bug:913) Change-Id: Ibccee47ed78e994e40a0effe9afa9cf9692492b0 Reviewed-on: https://chromium-review.googlesource.com/250330Reviewed-by: 's avatarOlli Etuaho <oetuaho@nvidia.com> Reviewed-by: 's avatarNicolas Capens <capn@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent f7b10164
......@@ -187,6 +187,27 @@ void InsertBuiltInFunctions(sh::GLenum type, ShShaderSpec spec, const ShBuiltInR
symbolTable.insertBuiltIn(COMMON_BUILTINS, float3, "min", float3, float3);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float4, "min", float4, float4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int1, "min", int1, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "min", int2, int2);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "min", int3, int3);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "min", int4, int4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "min", int2, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "min", int3, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "min", int4, int1);
TType *uint1 = new TType(EbtUInt);
TType *uint2 = new TType(EbtUInt, 2);
TType *uint3 = new TType(EbtUInt, 3);
TType *uint4 = new TType(EbtUInt, 4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint1, "min", uint1, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint2, "min", uint2, uint2);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint3, "min", uint3, uint3);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "min", uint4, uint4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint2, "min", uint2, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint3, "min", uint3, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "min", uint4, uint1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float1, "max", float1, float1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float2, "max", float2, float1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float3, "max", float3, float1);
......@@ -195,6 +216,22 @@ void InsertBuiltInFunctions(sh::GLenum type, ShShaderSpec spec, const ShBuiltInR
symbolTable.insertBuiltIn(COMMON_BUILTINS, float3, "max", float3, float3);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float4, "max", float4, float4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int1, "max", int1, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "max", int2, int2);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "max", int3, int3);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "max", int4, int4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "max", int2, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "max", int3, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "max", int4, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint1, "max", uint1, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint2, "max", uint2, uint2);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint3, "max", uint3, uint3);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "max", uint4, uint4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint2, "max", uint2, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint3, "max", uint3, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "max", uint4, uint1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float1, "clamp", float1, float1, float1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float2, "clamp", float2, float1, float1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float3, "clamp", float3, float1, float1);
......@@ -203,6 +240,22 @@ void InsertBuiltInFunctions(sh::GLenum type, ShShaderSpec spec, const ShBuiltInR
symbolTable.insertBuiltIn(COMMON_BUILTINS, float3, "clamp", float3, float3, float3);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float4, "clamp", float4, float4, float4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int1, "clamp", int1, int1, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "clamp", int2, int1, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "clamp", int3, int1, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "clamp", int4, int1, int1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "clamp", int2, int2, int2);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "clamp", int3, int3, int3);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "clamp", int4, int4, int4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint1, "clamp", uint1, uint1, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint2, "clamp", uint2, uint1, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint3, "clamp", uint3, uint1, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "clamp", uint4, uint1, uint1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint2, "clamp", uint2, uint2, uint2);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint3, "clamp", uint3, uint3, uint3);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "clamp", uint4, uint4, uint4);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float1, "mix", float1, float1, float1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float2, "mix", float2, float2, float1);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float3, "mix", float3, float3, float1);
......@@ -227,11 +280,6 @@ void InsertBuiltInFunctions(sh::GLenum type, ShShaderSpec spec, const ShBuiltInR
symbolTable.insertBuiltIn(COMMON_BUILTINS, float3, "smoothstep", float1, float1, float3);
symbolTable.insertBuiltIn(COMMON_BUILTINS, float4, "smoothstep", float1, float1, float4);
TType *uint1 = new TType(EbtUInt);
TType *uint2 = new TType(EbtUInt, 2);
TType *uint3 = new TType(EbtUInt, 3);
TType *uint4 = new TType(EbtUInt, 4);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int1, "floatBitsToInt", float1);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int2, "floatBitsToInt", float2);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, int3, "floatBitsToInt", float3);
......@@ -804,6 +852,10 @@ void IdentifyBuiltIns(sh::GLenum type, ShShaderSpec spec,
symbolTable.relateToOperator(COMMON_BUILTINS, "step", EOpStep);
symbolTable.relateToOperator(COMMON_BUILTINS, "smoothstep", EOpSmoothStep);
symbolTable.relateToOperator(ESSL3_BUILTINS, "min", EOpMin);
symbolTable.relateToOperator(ESSL3_BUILTINS, "max", EOpMax);
symbolTable.relateToOperator(ESSL3_BUILTINS, "clamp", EOpClamp);
symbolTable.relateToOperator(ESSL3_BUILTINS, "floatBitsToInt", EOpFloatBitsToInt);
symbolTable.relateToOperator(ESSL3_BUILTINS, "floatBitsToUint", EOpFloatBitsToUint);
symbolTable.relateToOperator(ESSL3_BUILTINS, "intBitsToFloat", EOpIntBitsToFloat);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment