mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 02:50:16 +01:00
glsl: New unary opcodes for ARB_shader_bit_encoding support.
The opcodes are bitcast_f2u, bitcast_f2i, bitcast_i2f and bitcast_u2f. Signed-off-by: Olivier Galibert <galibert@pobox.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
199771bc32
commit
500dcbb1aa
7 changed files with 125 additions and 11 deletions
21
src/glsl/builtins/ir/floatBitsToInt.ir
Normal file
21
src/glsl/builtins/ir/floatBitsToInt.ir
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
((function floatBitsToInt
|
||||
(signature int
|
||||
(parameters
|
||||
(declare (in) float arg))
|
||||
((return (expression int bitcast_f2i (var_ref arg)))))
|
||||
|
||||
(signature ivec2
|
||||
(parameters
|
||||
(declare (in) vec2 arg))
|
||||
((return (expression ivec2 bitcast_f2i (var_ref arg)))))
|
||||
|
||||
(signature ivec3
|
||||
(parameters
|
||||
(declare (in) vec3 arg))
|
||||
((return (expression ivec3 bitcast_f2i (var_ref arg)))))
|
||||
|
||||
(signature ivec4
|
||||
(parameters
|
||||
(declare (in) vec4 arg))
|
||||
((return (expression ivec4 bitcast_f2i (var_ref arg)))))
|
||||
))
|
||||
21
src/glsl/builtins/ir/floatBitsToUint.ir
Normal file
21
src/glsl/builtins/ir/floatBitsToUint.ir
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
((function floatBitsToUint
|
||||
(signature uint
|
||||
(parameters
|
||||
(declare (in) float arg))
|
||||
((return (expression uint bitcast_f2u (var_ref arg)))))
|
||||
|
||||
(signature uvec2
|
||||
(parameters
|
||||
(declare (in) vec2 arg))
|
||||
((return (expression uvec2 bitcast_f2u (var_ref arg)))))
|
||||
|
||||
(signature uvec3
|
||||
(parameters
|
||||
(declare (in) vec3 arg))
|
||||
((return (expression uvec3 bitcast_f2u (var_ref arg)))))
|
||||
|
||||
(signature uvec4
|
||||
(parameters
|
||||
(declare (in) vec4 arg))
|
||||
((return (expression uvec4 bitcast_f2u (var_ref arg)))))
|
||||
))
|
||||
21
src/glsl/builtins/ir/intBitsToFloat.ir
Normal file
21
src/glsl/builtins/ir/intBitsToFloat.ir
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
((function intBitsToFloat
|
||||
(signature float
|
||||
(parameters
|
||||
(declare (in) int arg))
|
||||
((return (expression float bitcast_i2f (var_ref arg)))))
|
||||
|
||||
(signature vec2
|
||||
(parameters
|
||||
(declare (in) ivec2 arg))
|
||||
((return (expression vec2 bitcast_i2f (var_ref arg)))))
|
||||
|
||||
(signature vec3
|
||||
(parameters
|
||||
(declare (in) ivec3 arg))
|
||||
((return (expression vec3 bitcast_i2f (var_ref arg)))))
|
||||
|
||||
(signature vec4
|
||||
(parameters
|
||||
(declare (in) ivec4 arg))
|
||||
((return (expression vec4 bitcast_i2f (var_ref arg)))))
|
||||
))
|
||||
21
src/glsl/builtins/ir/uintBitsToFloat.ir
Normal file
21
src/glsl/builtins/ir/uintBitsToFloat.ir
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
((function uintBitsToFloat
|
||||
(signature float
|
||||
(parameters
|
||||
(declare (in) uint arg))
|
||||
((return (expression float bitcast_u2f (var_ref arg)))))
|
||||
|
||||
(signature vec2
|
||||
(parameters
|
||||
(declare (in) uvec2 arg))
|
||||
((return (expression vec2 bitcast_u2f (var_ref arg)))))
|
||||
|
||||
(signature vec3
|
||||
(parameters
|
||||
(declare (in) uvec3 arg))
|
||||
((return (expression vec3 bitcast_u2f (var_ref arg)))))
|
||||
|
||||
(signature vec4
|
||||
(parameters
|
||||
(declare (in) uvec4 arg))
|
||||
((return (expression vec4 bitcast_u2f (var_ref arg)))))
|
||||
))
|
||||
22
src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl
Normal file
22
src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#version 130
|
||||
#extension GL_ARB_shader_bit_encoding : enable
|
||||
|
||||
int floatBitsToInt(float value);
|
||||
ivec2 floatBitsToInt(vec2 value);
|
||||
ivec3 floatBitsToInt(vec3 value);
|
||||
ivec4 floatBitsToInt(vec4 value);
|
||||
|
||||
uint floatBitsToUint(float value);
|
||||
uvec2 floatBitsToUint(vec2 value);
|
||||
uvec3 floatBitsToUint(vec3 value);
|
||||
uvec4 floatBitsToUint(vec4 value);
|
||||
|
||||
float intBitsToFloat(int value);
|
||||
vec2 intBitsToFloat(ivec2 value);
|
||||
vec3 intBitsToFloat(ivec3 value);
|
||||
vec4 intBitsToFloat(ivec4 value);
|
||||
|
||||
float uintBitsToFloat(uint value);
|
||||
vec2 uintBitsToFloat(uvec2 value);
|
||||
vec3 uintBitsToFloat(uvec3 value);
|
||||
vec4 uintBitsToFloat(uvec4 value);
|
||||
|
|
@ -427,6 +427,10 @@ static const char *const operator_strs[] = {
|
|||
"u2f",
|
||||
"i2u",
|
||||
"u2i",
|
||||
"bitcast_i2f",
|
||||
"bitcast_f2i",
|
||||
"bitcast_u2f",
|
||||
"bitcast_f2u",
|
||||
"any",
|
||||
"trunc",
|
||||
"ceil",
|
||||
|
|
|
|||
|
|
@ -864,19 +864,23 @@ enum ir_expression_operation {
|
|||
ir_unop_rcp,
|
||||
ir_unop_rsq,
|
||||
ir_unop_sqrt,
|
||||
ir_unop_exp, /**< Log base e on gentype */
|
||||
ir_unop_log, /**< Natural log on gentype */
|
||||
ir_unop_exp, /**< Log base e on gentype */
|
||||
ir_unop_log, /**< Natural log on gentype */
|
||||
ir_unop_exp2,
|
||||
ir_unop_log2,
|
||||
ir_unop_f2i, /**< Float-to-integer conversion. */
|
||||
ir_unop_i2f, /**< Integer-to-float conversion. */
|
||||
ir_unop_f2b, /**< Float-to-boolean conversion */
|
||||
ir_unop_b2f, /**< Boolean-to-float conversion */
|
||||
ir_unop_i2b, /**< int-to-boolean conversion */
|
||||
ir_unop_b2i, /**< Boolean-to-int conversion */
|
||||
ir_unop_u2f, /**< Unsigned-to-float conversion. */
|
||||
ir_unop_i2u, /**< Integer-to-unsigned conversion. */
|
||||
ir_unop_u2i, /**< Unsigned-to-integer conversion. */
|
||||
ir_unop_f2i, /**< Float-to-integer conversion. */
|
||||
ir_unop_i2f, /**< Integer-to-float conversion. */
|
||||
ir_unop_f2b, /**< Float-to-boolean conversion */
|
||||
ir_unop_b2f, /**< Boolean-to-float conversion */
|
||||
ir_unop_i2b, /**< int-to-boolean conversion */
|
||||
ir_unop_b2i, /**< Boolean-to-int conversion */
|
||||
ir_unop_u2f, /**< Unsigned-to-float conversion. */
|
||||
ir_unop_i2u, /**< Integer-to-unsigned conversion. */
|
||||
ir_unop_u2i, /**< Unsigned-to-integer conversion. */
|
||||
ir_unop_bitcast_i2f, /**< Bit-identical int-to-float "conversion" */
|
||||
ir_unop_bitcast_f2i, /**< Bit-identical float-to-int "conversion" */
|
||||
ir_unop_bitcast_u2f, /**< Bit-identical uint-to-float "conversion" */
|
||||
ir_unop_bitcast_f2u, /**< Bit-identical float-to-uint "conversion" */
|
||||
ir_unop_any,
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue