From 87610f6def3e3dceac0082c1b60abbe2aee09014 Mon Sep 17 00:00:00 2001 From: Robert Stepinski Date: Wed, 6 Mar 2019 17:44:02 -0500 Subject: Add GLSL intrinsics for f32tof16() and f16tof32() (#883) --- source/slang/hlsl.meta.slang | 12 ++++++++++-- source/slang/hlsl.meta.slang.h | 14 +++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) (limited to 'source') diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index a8fd37243..4135a9051 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -717,12 +717,20 @@ __generic vector exp2(vector matrix exp2(matrix x); // Convert 16-bit float stored in low bits of integer +__target_intrinsic(glsl, "unpackHalf2x16($0).x") float f16tof32(uint value); -__generic vector f16tof32(vector value); + +__generic +__target_intrinsic(glsl, "unpackHalf2x16($0).x") +vector f16tof32(vector value); // Convert to 16-bit float stored in low bits of integer +__target_intrinsic(glsl, "packHalf2x16(vec2($0,0.0))") uint f32tof16(float value); -__generic vector f32tof16(vector value); + +__generic +__target_intrinsic(glsl, "packHalf2x16(vec2($0,0.0))") +vector f32tof16(vector value); // Flip surface normal to face forward, if needed __generic vector faceforward(vector n, vector i, vector ng); diff --git a/source/slang/hlsl.meta.slang.h b/source/slang/hlsl.meta.slang.h index 375c8aab0..67d8d3cc0 100644 --- a/source/slang/hlsl.meta.slang.h +++ b/source/slang/hlsl.meta.slang.h @@ -793,12 +793,20 @@ SLANG_RAW("__generic vector ex SLANG_RAW("__generic matrix exp2(matrix x);\n") SLANG_RAW("\n") SLANG_RAW("// Convert 16-bit float stored in low bits of integer\n") +SLANG_RAW("__target_intrinsic(glsl, \"unpackHalf2x16($0).x\")\n") SLANG_RAW("float f16tof32(uint value);\n") -SLANG_RAW("__generic vector f16tof32(vector value);\n") +SLANG_RAW("\n") +SLANG_RAW("__generic\n") +SLANG_RAW("__target_intrinsic(glsl, \"unpackHalf2x16($0).x\")\n") +SLANG_RAW("vector f16tof32(vector value);\n") SLANG_RAW("\n") SLANG_RAW("// Convert to 16-bit float stored in low bits of integer\n") +SLANG_RAW("__target_intrinsic(glsl, \"packHalf2x16(vec2($0,0.0))\")\n") SLANG_RAW("uint f32tof16(float value);\n") -SLANG_RAW("__generic vector f32tof16(vector value);\n") +SLANG_RAW("\n") +SLANG_RAW("__generic\n") +SLANG_RAW("__target_intrinsic(glsl, \"packHalf2x16(vec2($0,0.0))\")\n") +SLANG_RAW("vector f32tof16(vector value);\n") SLANG_RAW("\n") SLANG_RAW("// Flip surface normal to face forward, if needed\n") SLANG_RAW("__generic vector faceforward(vector n, vector i, vector ng);\n") @@ -1513,7 +1521,7 @@ for (int aa = 0; aa < kBaseBufferAccessLevelCount; ++aa) sb << "};\n"; } -SLANG_RAW("#line 1440 \"hlsl.meta.slang\"") +SLANG_RAW("#line 1448 \"hlsl.meta.slang\"") SLANG_RAW("\n") SLANG_RAW("\n") SLANG_RAW("\n") -- cgit v1.2.3