Merge pull request #2859 from ZhiqianXia/floatBitsToInt
Support the floatBitsToint function at GL_ARB_gpu_shader5 Extension.
This commit is contained in:
		
						commit
						c0a322f5f0
					
				@ -8,7 +8,9 @@ ERROR: 0:53: 'double' : Reserved word.
 | 
				
			|||||||
ERROR: 0:53: 'double' : not supported for this version or the enabled extensions 
 | 
					ERROR: 0:53: 'double' : not supported for this version or the enabled extensions 
 | 
				
			||||||
ERROR: 0:53: 'double' : must be qualified as flat in
 | 
					ERROR: 0:53: 'double' : must be qualified as flat in
 | 
				
			||||||
ERROR: 0:57: '=' :  cannot convert from ' global double' to ' global int'
 | 
					ERROR: 0:57: '=' :  cannot convert from ' global double' to ' global int'
 | 
				
			||||||
ERROR: 0:80: 'floatBitsToInt' : required extension not requested: GL_ARB_shader_bit_encoding
 | 
					ERROR: 0:80: 'floatBitsToInt' : required extension not requested: Possible extensions include:
 | 
				
			||||||
 | 
					GL_ARB_shader_bit_encoding
 | 
				
			||||||
 | 
					GL_ARB_gpu_shader5
 | 
				
			||||||
ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing
 | 
					ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing
 | 
				
			||||||
ERROR: 0:114: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod
 | 
					ERROR: 0:114: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod
 | 
				
			||||||
ERROR: 0:115: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod
 | 
					ERROR: 0:115: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										217
									
								
								Test/baseResults/floatBitsToInt.vert.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								Test/baseResults/floatBitsToInt.vert.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,217 @@
 | 
				
			|||||||
 | 
					floatBitsToInt.vert
 | 
				
			||||||
 | 
					WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Shader version: 150
 | 
				
			||||||
 | 
					Requested GL_ARB_gpu_shader5
 | 
				
			||||||
 | 
					0:? Sequence
 | 
				
			||||||
 | 
					0:6  Function Definition: main( ( global void)
 | 
				
			||||||
 | 
					0:6    Function Parameters: 
 | 
				
			||||||
 | 
					0:8    Sequence
 | 
				
			||||||
 | 
					0:8      move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:8        'result' ( smooth out 4-component vector of float)
 | 
				
			||||||
 | 
					0:8        Constant:
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:9      Sequence
 | 
				
			||||||
 | 
					0:9        move second child to first child ( temp int)
 | 
				
			||||||
 | 
					0:9          'ret_val' ( temp int)
 | 
				
			||||||
 | 
					0:9          floatBitsToInt ( global int)
 | 
				
			||||||
 | 
					0:9            'value' ( uniform float)
 | 
				
			||||||
 | 
					0:10      Test condition and select ( temp void)
 | 
				
			||||||
 | 
					0:10        Condition
 | 
				
			||||||
 | 
					0:10        Compare Not Equal ( temp bool)
 | 
				
			||||||
 | 
					0:10          'expected_value' ( uniform int)
 | 
				
			||||||
 | 
					0:10          'ret_val' ( temp int)
 | 
				
			||||||
 | 
					0:10        true case
 | 
				
			||||||
 | 
					0:10        Sequence
 | 
				
			||||||
 | 
					0:10          move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:10            'result' ( smooth out 4-component vector of float)
 | 
				
			||||||
 | 
					0:10            Constant:
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:12      switch
 | 
				
			||||||
 | 
					0:12      condition
 | 
				
			||||||
 | 
					0:12        'gl_VertexID' ( gl_VertexId int VertexId)
 | 
				
			||||||
 | 
					0:12      body
 | 
				
			||||||
 | 
					0:12        Sequence
 | 
				
			||||||
 | 
					0:13          case:  with expression
 | 
				
			||||||
 | 
					0:13            Constant:
 | 
				
			||||||
 | 
					0:13              0 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:13            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:13              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:13                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:13                Constant:
 | 
				
			||||||
 | 
					0:13                  0 (const uint)
 | 
				
			||||||
 | 
					0:13              Constant:
 | 
				
			||||||
 | 
					0:13                -1.000000
 | 
				
			||||||
 | 
					0:13                1.000000
 | 
				
			||||||
 | 
					0:13                0.000000
 | 
				
			||||||
 | 
					0:13                1.000000
 | 
				
			||||||
 | 
					0:13            Branch: Break
 | 
				
			||||||
 | 
					0:14          case:  with expression
 | 
				
			||||||
 | 
					0:14            Constant:
 | 
				
			||||||
 | 
					0:14              1 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:14            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:14              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:14                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:14                Constant:
 | 
				
			||||||
 | 
					0:14                  0 (const uint)
 | 
				
			||||||
 | 
					0:14              Constant:
 | 
				
			||||||
 | 
					0:14                1.000000
 | 
				
			||||||
 | 
					0:14                1.000000
 | 
				
			||||||
 | 
					0:14                0.000000
 | 
				
			||||||
 | 
					0:14                1.000000
 | 
				
			||||||
 | 
					0:14            Branch: Break
 | 
				
			||||||
 | 
					0:15          case:  with expression
 | 
				
			||||||
 | 
					0:15            Constant:
 | 
				
			||||||
 | 
					0:15              2 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:15            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:15              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:15                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:15                Constant:
 | 
				
			||||||
 | 
					0:15                  0 (const uint)
 | 
				
			||||||
 | 
					0:15              Constant:
 | 
				
			||||||
 | 
					0:15                -1.000000
 | 
				
			||||||
 | 
					0:15                -1.000000
 | 
				
			||||||
 | 
					0:15                0.000000
 | 
				
			||||||
 | 
					0:15                1.000000
 | 
				
			||||||
 | 
					0:15            Branch: Break
 | 
				
			||||||
 | 
					0:16          case:  with expression
 | 
				
			||||||
 | 
					0:16            Constant:
 | 
				
			||||||
 | 
					0:16              3 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:16            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:16              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:16                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:16                Constant:
 | 
				
			||||||
 | 
					0:16                  0 (const uint)
 | 
				
			||||||
 | 
					0:16              Constant:
 | 
				
			||||||
 | 
					0:16                1.000000
 | 
				
			||||||
 | 
					0:16                -1.000000
 | 
				
			||||||
 | 
					0:16                0.000000
 | 
				
			||||||
 | 
					0:16                1.000000
 | 
				
			||||||
 | 
					0:16            Branch: Break
 | 
				
			||||||
 | 
					0:?   Linker Objects
 | 
				
			||||||
 | 
					0:?     'expected_value' ( uniform int)
 | 
				
			||||||
 | 
					0:?     'value' ( uniform float)
 | 
				
			||||||
 | 
					0:?     'result' ( smooth out 4-component vector of float)
 | 
				
			||||||
 | 
					0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 | 
				
			||||||
 | 
					0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Linked vertex stage:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Shader version: 150
 | 
				
			||||||
 | 
					Requested GL_ARB_gpu_shader5
 | 
				
			||||||
 | 
					0:? Sequence
 | 
				
			||||||
 | 
					0:6  Function Definition: main( ( global void)
 | 
				
			||||||
 | 
					0:6    Function Parameters: 
 | 
				
			||||||
 | 
					0:8    Sequence
 | 
				
			||||||
 | 
					0:8      move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:8        'result' ( smooth out 4-component vector of float)
 | 
				
			||||||
 | 
					0:8        Constant:
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:8          1.000000
 | 
				
			||||||
 | 
					0:9      Sequence
 | 
				
			||||||
 | 
					0:9        move second child to first child ( temp int)
 | 
				
			||||||
 | 
					0:9          'ret_val' ( temp int)
 | 
				
			||||||
 | 
					0:9          floatBitsToInt ( global int)
 | 
				
			||||||
 | 
					0:9            'value' ( uniform float)
 | 
				
			||||||
 | 
					0:10      Test condition and select ( temp void)
 | 
				
			||||||
 | 
					0:10        Condition
 | 
				
			||||||
 | 
					0:10        Compare Not Equal ( temp bool)
 | 
				
			||||||
 | 
					0:10          'expected_value' ( uniform int)
 | 
				
			||||||
 | 
					0:10          'ret_val' ( temp int)
 | 
				
			||||||
 | 
					0:10        true case
 | 
				
			||||||
 | 
					0:10        Sequence
 | 
				
			||||||
 | 
					0:10          move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:10            'result' ( smooth out 4-component vector of float)
 | 
				
			||||||
 | 
					0:10            Constant:
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:10              0.000000
 | 
				
			||||||
 | 
					0:12      switch
 | 
				
			||||||
 | 
					0:12      condition
 | 
				
			||||||
 | 
					0:12        'gl_VertexID' ( gl_VertexId int VertexId)
 | 
				
			||||||
 | 
					0:12      body
 | 
				
			||||||
 | 
					0:12        Sequence
 | 
				
			||||||
 | 
					0:13          case:  with expression
 | 
				
			||||||
 | 
					0:13            Constant:
 | 
				
			||||||
 | 
					0:13              0 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:13            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:13              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:13                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:13                Constant:
 | 
				
			||||||
 | 
					0:13                  0 (const uint)
 | 
				
			||||||
 | 
					0:13              Constant:
 | 
				
			||||||
 | 
					0:13                -1.000000
 | 
				
			||||||
 | 
					0:13                1.000000
 | 
				
			||||||
 | 
					0:13                0.000000
 | 
				
			||||||
 | 
					0:13                1.000000
 | 
				
			||||||
 | 
					0:13            Branch: Break
 | 
				
			||||||
 | 
					0:14          case:  with expression
 | 
				
			||||||
 | 
					0:14            Constant:
 | 
				
			||||||
 | 
					0:14              1 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:14            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:14              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:14                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:14                Constant:
 | 
				
			||||||
 | 
					0:14                  0 (const uint)
 | 
				
			||||||
 | 
					0:14              Constant:
 | 
				
			||||||
 | 
					0:14                1.000000
 | 
				
			||||||
 | 
					0:14                1.000000
 | 
				
			||||||
 | 
					0:14                0.000000
 | 
				
			||||||
 | 
					0:14                1.000000
 | 
				
			||||||
 | 
					0:14            Branch: Break
 | 
				
			||||||
 | 
					0:15          case:  with expression
 | 
				
			||||||
 | 
					0:15            Constant:
 | 
				
			||||||
 | 
					0:15              2 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:15            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:15              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:15                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:15                Constant:
 | 
				
			||||||
 | 
					0:15                  0 (const uint)
 | 
				
			||||||
 | 
					0:15              Constant:
 | 
				
			||||||
 | 
					0:15                -1.000000
 | 
				
			||||||
 | 
					0:15                -1.000000
 | 
				
			||||||
 | 
					0:15                0.000000
 | 
				
			||||||
 | 
					0:15                1.000000
 | 
				
			||||||
 | 
					0:15            Branch: Break
 | 
				
			||||||
 | 
					0:16          case:  with expression
 | 
				
			||||||
 | 
					0:16            Constant:
 | 
				
			||||||
 | 
					0:16              3 (const int)
 | 
				
			||||||
 | 
					0:?           Sequence
 | 
				
			||||||
 | 
					0:16            move second child to first child ( temp 4-component vector of float)
 | 
				
			||||||
 | 
					0:16              gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
 | 
				
			||||||
 | 
					0:16                'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:16                Constant:
 | 
				
			||||||
 | 
					0:16                  0 (const uint)
 | 
				
			||||||
 | 
					0:16              Constant:
 | 
				
			||||||
 | 
					0:16                1.000000
 | 
				
			||||||
 | 
					0:16                -1.000000
 | 
				
			||||||
 | 
					0:16                0.000000
 | 
				
			||||||
 | 
					0:16                1.000000
 | 
				
			||||||
 | 
					0:16            Branch: Break
 | 
				
			||||||
 | 
					0:?   Linker Objects
 | 
				
			||||||
 | 
					0:?     'expected_value' ( uniform int)
 | 
				
			||||||
 | 
					0:?     'value' ( uniform float)
 | 
				
			||||||
 | 
					0:?     'result' ( smooth out 4-component vector of float)
 | 
				
			||||||
 | 
					0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance})
 | 
				
			||||||
 | 
					0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 | 
				
			||||||
 | 
					0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								Test/floatBitsToInt.vert
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Test/floatBitsToInt.vert
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#version 150
 | 
				
			||||||
 | 
					#extension GL_ARB_gpu_shader5 : require
 | 
				
			||||||
 | 
					uniform int expected_value;
 | 
				
			||||||
 | 
					uniform float value;
 | 
				
			||||||
 | 
					out     vec4 result;
 | 
				
			||||||
 | 
					void main()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    result = vec4(1.0, 1.0, 1.0, 1.0);
 | 
				
			||||||
 | 
					    int ret_val = floatBitsToInt(value);
 | 
				
			||||||
 | 
					    if (expected_value != ret_val){  result = vec4(0.0, 0.0, 0.0, 0.0); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch (gl_VertexID)  {
 | 
				
			||||||
 | 
					      case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break;
 | 
				
			||||||
 | 
					      case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break;
 | 
				
			||||||
 | 
					      case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break;
 | 
				
			||||||
 | 
					      case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -8353,10 +8353,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (profile != EEsProfile && version < 330 ) {
 | 
					        if (profile != EEsProfile && version < 330 ) {
 | 
				
			||||||
            symbolTable.setFunctionExtensions("floatBitsToInt", 1, &E_GL_ARB_shader_bit_encoding);
 | 
					            const char* bitsConvertExt[2] = {E_GL_ARB_shader_bit_encoding, E_GL_ARB_gpu_shader5};
 | 
				
			||||||
            symbolTable.setFunctionExtensions("floatBitsToUint", 1, &E_GL_ARB_shader_bit_encoding);
 | 
					            symbolTable.setFunctionExtensions("floatBitsToInt", 2, bitsConvertExt);
 | 
				
			||||||
            symbolTable.setFunctionExtensions("intBitsToFloat", 1, &E_GL_ARB_shader_bit_encoding);
 | 
					            symbolTable.setFunctionExtensions("floatBitsToUint", 2, bitsConvertExt);
 | 
				
			||||||
            symbolTable.setFunctionExtensions("uintBitsToFloat", 1, &E_GL_ARB_shader_bit_encoding);
 | 
					            symbolTable.setFunctionExtensions("intBitsToFloat", 2, bitsConvertExt);
 | 
				
			||||||
 | 
					            symbolTable.setFunctionExtensions("uintBitsToFloat", 2, bitsConvertExt);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (profile != EEsProfile && version < 430 ) {
 | 
					        if (profile != EEsProfile && version < 430 ) {
 | 
				
			||||||
 | 
				
			|||||||
@ -292,6 +292,7 @@ INSTANTIATE_TEST_SUITE_P(
 | 
				
			|||||||
        "GL_ARB_draw_instanced.vert",
 | 
					        "GL_ARB_draw_instanced.vert",
 | 
				
			||||||
        "GL_ARB_fragment_coord_conventions.vert",
 | 
					        "GL_ARB_fragment_coord_conventions.vert",
 | 
				
			||||||
        "BestMatchFunction.vert",
 | 
					        "BestMatchFunction.vert",
 | 
				
			||||||
 | 
					        "floatBitsToInt.vert",
 | 
				
			||||||
    })),
 | 
					    })),
 | 
				
			||||||
    FileNameAsCustomTestSuffix
 | 
					    FileNameAsCustomTestSuffix
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user