diff options
Diffstat (limited to 'src/mesa/shader/slang/library/slang_core.gc')
-rw-r--r-- | src/mesa/shader/slang/library/slang_core.gc | 160 |
1 files changed, 126 insertions, 34 deletions
diff --git a/src/mesa/shader/slang/library/slang_core.gc b/src/mesa/shader/slang/library/slang_core.gc index 11393cd7b6..80c9a0be4e 100644 --- a/src/mesa/shader/slang/library/slang_core.gc +++ b/src/mesa/shader/slang/library/slang_core.gc @@ -105,7 +105,7 @@ //// Basic, scalar constructors/casts -int __constructor (const float f) +int __constructor(const float f) { __asm float_to_int __retVal, f; } @@ -127,12 +127,12 @@ int __constructor(const bool b) __retVal.x = b.x; } -float __constructor (const bool b) +float __constructor(const bool b) { __retVal.x = b.x; } -float __constructor (const int i) +float __constructor(const int i) { __asm int_to_float __retVal, i; } @@ -166,14 +166,14 @@ vec2 __constructor(const float f) __retVal.xy = f.xx; } -vec2 __constructor (const int i) { - float x; - __asm int_to_float x, i; - return vec2 (x); +vec2 __constructor(const int i) +{ + __retVal.xy = i.xx; } -vec2 __constructor (const bool b) { - return vec2 (b ? 1.0 : 0.0); +vec2 __constructor(const bool b) +{ + __retVal.xy = b.xx; } vec2 __constructor(const vec3 v) @@ -383,55 +383,147 @@ bvec4 __constructor(const int i) //// mat2 constructors -mat2 __constructor (const float f) { - return mat2 (f, 0.0, 0.0, f); +mat2 __constructor(const float m00, const float m10, + const float m01, const float m11) +{ + // xxx verify: + __retVal[0].x = m00; + __retVal[0].y = m10; + __retVal[1].x = m01; + __retVal[1].y = m11; } -mat2 __constructor (const int i) { - float x; - __asm int_to_float x, i; - return mat2 (x); +mat2 __constructor(const float f) +{ + __retVal[0].x = f; + __retVal[0].y = 0.0; + __retVal[1].x = 0.0; + __retVal[1].y = f; } -mat2 __constructor (const bool b) { - return mat2 (b ? 1.0 : 0.0); +mat2 __constructor(const int i) +{ + return mat2(float(i)); +} + +mat2 __constructor(const bool b) +{ + return mat2(float(b)); +} + +mat2 __constructor(const vec2 r0, const vec2 r1) +{ + __retVal[0] = r0; + __retVal[1] = r1; } //// mat3 constructors -mat3 __constructor (const float f) { - return mat3 (f, 0.0, 0.0, 0.0, f, 0.0, 0.0, 0.0, f); +mat3 __constructor(const float m00, const float m10, const float m20, + const float m01, const float m11, const float m21, + const float m02, const float m12, const float m22) +{ + // xxx verify: + __retVal[0].x = m00; + __retVal[0].y = m10; + __retVal[0].z = m20; + __retVal[1].x = m01; + __retVal[1].y = m11; + __retVal[1].z = m21; + __retVal[2].x = m02; + __retVal[2].y = m12; + __retVal[2].z = m22; +} + +mat3 __constructor(const float f) +{ + __retVal[0].x = f; + __retVal[0].y = 0.0; + __retVal[0].z = 0.0; + __retVal[1].x = 0.0; + __retVal[1].y = f; + __retVal[1].z = 0.0; + __retVal[2].x = 0.0; + __retVal[2].y = 0.0; + __retVal[2].z = f; } -mat3 __constructor (const int i) { - float x; - __asm int_to_float x, i; - return mat3 (x); +mat3 __constructor(const int i) +{ + return mat3(float(i)); } -mat3 __constructor (const bool b) { - return mat3 (b ? 1.0 : 0.0); +mat3 __constructor(const bool b) +{ + return mat3(float(b)); +} + +mat3 __constructor(const vec3 r0, const vec3 r1, const vec3 r2) +{ + __retVal[0] = r0; + __retVal[1] = r1; + __retVal[2] = r2; } //// mat4 constructors -mat4 __constructor (const float f) { - return mat4 (f, 0.0, 0.0, 0.0, 0.0, f, 0.0, 0.0, 0.0, 0.0, f, 0.0, 0.0, 0.0, 0.0, f); +mat4 __constructor(const float m00, const float m10, const float m20, const float m30, + const float m01, const float m11, const float m21, const float m31, + const float m02, const float m12, const float m22, const float m32, + const float m03, const float m13, const float m23, const float m33) +{ + __retVal[0].x = m00; + __retVal[0].y = m10; + __retVal[0].z = m20; + __retVal[0].w = m30; + __retVal[1].x = m01; + __retVal[1].y = m11; + __retVal[1].z = m21; + __retVal[1].w = m31; + __retVal[2].x = m02; + __retVal[2].y = m12; + __retVal[2].z = m22; + __retVal[2].w = m32; + __retVal[3].x = m03; + __retVal[3].y = m13; + __retVal[3].z = m23; + __retVal[3].w = m33; +} + + +mat4 __constructor(const float f) +{ + __retVal[0].x = f; + __retVal[0].y = 0.0; + __retVal[0].z = 0.0; + __retVal[0].w = 0.0; + __retVal[1].x = 0.0; + __retVal[1].y = f; + __retVal[1].z = 0.0; + __retVal[1].w = 0.0; + __retVal[2].x = 0.0; + __retVal[2].y = 0.0; + __retVal[2].z = f; + __retVal[2].w = 0.0; + __retVal[3].x = 0.0; + __retVal[3].y = 0.0; + __retVal[3].z = 0.0; + __retVal[3].w = f; } -mat4 __constructor (const int i) { - float x; - __asm int_to_float x, i; - return mat4 (x); +mat4 __constructor(const int i) +{ + return mat4(float(i)); } -mat4 __constructor (const bool b) { - return mat4 (b ? 1.0 : 0.0); +mat4 __constructor(const bool b) +{ + return mat4(float(b)); } -mat4 __constructor (const vec4 r0, const vec4 r1, const vec4 r2, const vec4 r3) +mat4 __constructor(const vec4 r0, const vec4 r1, const vec4 r2, const vec4 r3) { __retVal[0] = r0; __retVal[1] = r1; |