KHR-GL40.draw_elements_base_vertex_tests.invalid_start_end_arguments
KHR-GL40.draw_elements_base_vertex_tests.invalid_type_argument
KHR-GL40.draw_elements_base_vertex_tests.invalid_mapped_bos
-KHR-GL40.gpu_shader_fp64.errors
-KHR-GL40.gpu_shader_fp64.max_uniform_components
-KHR-GL40.gpu_shader_fp64.named_uniform_blocks
-KHR-GL40.gpu_shader_fp64.state_query
-KHR-GL40.gpu_shader_fp64.conversions
-KHR-GL40.gpu_shader_fp64.illegal_conversions
-KHR-GL40.gpu_shader_fp64.varyings
-KHR-GL40.gpu_shader_fp64.valid_constructors
-KHR-GL40.gpu_shader_fp64.operators
-KHR-GL40.gpu_shader_fp64.built_in_functions
+KHR-GL40.gpu_shader_fp64.fp64.errors
+KHR-GL40.gpu_shader_fp64.fp64.max_uniform_components
+KHR-GL40.gpu_shader_fp64.fp64.named_uniform_blocks
+KHR-GL40.gpu_shader_fp64.fp64.state_query
+KHR-GL40.gpu_shader_fp64.fp64.conversions
+KHR-GL40.gpu_shader_fp64.fp64.illegal_conversions
+KHR-GL40.gpu_shader_fp64.fp64.varyings
+KHR-GL40.gpu_shader_fp64.fp64.valid_constructors
+KHR-GL40.gpu_shader_fp64.fp64.operators
+KHR-GL40.gpu_shader_fp64.builtin.abs_double
+KHR-GL40.gpu_shader_fp64.builtin.abs_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.abs_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.abs_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.abs_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.ceil_double
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.ceil_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_double
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_double
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.cross_double
+KHR-GL40.gpu_shader_fp64.builtin.cross_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.cross_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.cross_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.cross_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.determinant_double
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.determinant_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.distance_double
+KHR-GL40.gpu_shader_fp64.builtin.distance_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.distance_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.distance_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.distance_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.dot_double
+KHR-GL40.gpu_shader_fp64.builtin.dot_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.dot_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.dot_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.dot_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.equal_double
+KHR-GL40.gpu_shader_fp64.builtin.equal_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.equal_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.equal_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.equal_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_double
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.faceforward_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.floor_double
+KHR-GL40.gpu_shader_fp64.builtin.floor_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.floor_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.floor_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.floor_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.fma_double
+KHR-GL40.gpu_shader_fp64.builtin.fma_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.fma_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.fma_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.fma_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.fract_double
+KHR-GL40.gpu_shader_fp64.builtin.fract_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.fract_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.fract_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.fract_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.frexp_double
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.frexp_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_double
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthan_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_double
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.greaterthanequal_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.inverse_double
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.inverse_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_double
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.inversesqrt_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_double
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.ldexp_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_double
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.lessthan_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_double
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.lessthanequal_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.length_double
+KHR-GL40.gpu_shader_fp64.builtin.length_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.length_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.length_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.length_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_double
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.matrixcompmult_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.max_double
+KHR-GL40.gpu_shader_fp64.builtin.max_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.max_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.max_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.max_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_double
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.max_against_scalar_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.min_double
+KHR-GL40.gpu_shader_fp64.builtin.min_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.min_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.min_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.min_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_double
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.min_against_scalar_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.mix_double
+KHR-GL40.gpu_shader_fp64.builtin.mix_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.mix_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.mix_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.mix_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.mod_double
+KHR-GL40.gpu_shader_fp64.builtin.mod_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.mod_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.mod_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.mod_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_double
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.mod_against_scalar_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.modf_double
+KHR-GL40.gpu_shader_fp64.builtin.modf_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.modf_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.modf_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.modf_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.normalize_double
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.normalize_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.notequal_double
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.notequal_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_double
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.outerproduct_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_double
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.packdouble2x32_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.reflect_double
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.reflect_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.refract_double
+KHR-GL40.gpu_shader_fp64.builtin.refract_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.refract_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.refract_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.refract_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.round_double
+KHR-GL40.gpu_shader_fp64.builtin.round_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.round_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.round_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.round_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_double
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.roundeven_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.sign_double
+KHR-GL40.gpu_shader_fp64.builtin.sign_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.sign_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.sign_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.sign_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_double
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_double
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_double
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.sqrt_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.step_double
+KHR-GL40.gpu_shader_fp64.builtin.step_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.step_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.step_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.step_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_double
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.step_against_scalar_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.transpose_double
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.transpose_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.trunc_double
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.trunc_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_double
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.isnan_double
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.isnan_dmat4
+KHR-GL40.gpu_shader_fp64.builtin.isinf_double
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dvec2
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dvec3
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dvec4
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat2
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat2x3
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat2x4
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat3x2
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat3
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat3x4
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat4x2
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat4x3
+KHR-GL40.gpu_shader_fp64.builtin.isinf_dmat4
KHR-GL40.texture_gather.api-enums
KHR-GL40.texture_gather.gather-glsl-compile
KHR-GL40.texture_gather.plain-gather-float-2d-rgba
KHR-GL41.draw_elements_base_vertex_tests.invalid_start_end_arguments
KHR-GL41.draw_elements_base_vertex_tests.invalid_type_argument
KHR-GL41.draw_elements_base_vertex_tests.invalid_mapped_bos
-KHR-GL41.gpu_shader_fp64.errors
-KHR-GL41.gpu_shader_fp64.max_uniform_components
-KHR-GL41.gpu_shader_fp64.named_uniform_blocks
-KHR-GL41.gpu_shader_fp64.state_query
-KHR-GL41.gpu_shader_fp64.conversions
-KHR-GL41.gpu_shader_fp64.illegal_conversions
-KHR-GL41.gpu_shader_fp64.varyings
-KHR-GL41.gpu_shader_fp64.valid_constructors
-KHR-GL41.gpu_shader_fp64.operators
-KHR-GL41.gpu_shader_fp64.built_in_functions
+KHR-GL41.gpu_shader_fp64.fp64.errors
+KHR-GL41.gpu_shader_fp64.fp64.max_uniform_components
+KHR-GL41.gpu_shader_fp64.fp64.named_uniform_blocks
+KHR-GL41.gpu_shader_fp64.fp64.state_query
+KHR-GL41.gpu_shader_fp64.fp64.conversions
+KHR-GL41.gpu_shader_fp64.fp64.illegal_conversions
+KHR-GL41.gpu_shader_fp64.fp64.varyings
+KHR-GL41.gpu_shader_fp64.fp64.valid_constructors
+KHR-GL41.gpu_shader_fp64.fp64.operators
+KHR-GL41.gpu_shader_fp64.builtin.abs_double
+KHR-GL41.gpu_shader_fp64.builtin.abs_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.abs_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.abs_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.abs_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.ceil_double
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.ceil_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_double
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_double
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.cross_double
+KHR-GL41.gpu_shader_fp64.builtin.cross_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.cross_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.cross_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.cross_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.determinant_double
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.determinant_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.distance_double
+KHR-GL41.gpu_shader_fp64.builtin.distance_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.distance_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.distance_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.distance_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.dot_double
+KHR-GL41.gpu_shader_fp64.builtin.dot_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.dot_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.dot_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.dot_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.equal_double
+KHR-GL41.gpu_shader_fp64.builtin.equal_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.equal_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.equal_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.equal_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_double
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.faceforward_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.floor_double
+KHR-GL41.gpu_shader_fp64.builtin.floor_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.floor_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.floor_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.floor_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.fma_double
+KHR-GL41.gpu_shader_fp64.builtin.fma_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.fma_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.fma_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.fma_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.fract_double
+KHR-GL41.gpu_shader_fp64.builtin.fract_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.fract_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.fract_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.fract_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.frexp_double
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.frexp_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_double
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthan_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_double
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.greaterthanequal_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.inverse_double
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.inverse_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_double
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.inversesqrt_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_double
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.ldexp_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_double
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.lessthan_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_double
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.lessthanequal_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.length_double
+KHR-GL41.gpu_shader_fp64.builtin.length_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.length_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.length_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.length_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_double
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.matrixcompmult_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.max_double
+KHR-GL41.gpu_shader_fp64.builtin.max_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.max_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.max_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.max_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_double
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.max_against_scalar_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.min_double
+KHR-GL41.gpu_shader_fp64.builtin.min_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.min_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.min_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.min_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_double
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.min_against_scalar_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.mix_double
+KHR-GL41.gpu_shader_fp64.builtin.mix_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.mix_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.mix_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.mix_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.mod_double
+KHR-GL41.gpu_shader_fp64.builtin.mod_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.mod_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.mod_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.mod_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_double
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.mod_against_scalar_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.modf_double
+KHR-GL41.gpu_shader_fp64.builtin.modf_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.modf_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.modf_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.modf_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.normalize_double
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.normalize_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.notequal_double
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.notequal_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_double
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.outerproduct_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_double
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.packdouble2x32_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.reflect_double
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.reflect_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.refract_double
+KHR-GL41.gpu_shader_fp64.builtin.refract_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.refract_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.refract_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.refract_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.round_double
+KHR-GL41.gpu_shader_fp64.builtin.round_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.round_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.round_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.round_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_double
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.roundeven_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.sign_double
+KHR-GL41.gpu_shader_fp64.builtin.sign_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.sign_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.sign_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.sign_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_double
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_double
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_double
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.sqrt_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.step_double
+KHR-GL41.gpu_shader_fp64.builtin.step_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.step_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.step_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.step_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_double
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.step_against_scalar_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.transpose_double
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.transpose_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.trunc_double
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.trunc_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_double
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.isnan_double
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.isnan_dmat4
+KHR-GL41.gpu_shader_fp64.builtin.isinf_double
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dvec2
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dvec3
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dvec4
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat2
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat2x3
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat2x4
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat3x2
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat3
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat3x4
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat4x2
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat4x3
+KHR-GL41.gpu_shader_fp64.builtin.isinf_dmat4
KHR-GL41.texture_gather.api-enums
KHR-GL41.texture_gather.gather-glsl-compile
KHR-GL41.texture_gather.plain-gather-float-2d-rgba
KHR-GL42.draw_elements_base_vertex_tests.invalid_start_end_arguments
KHR-GL42.draw_elements_base_vertex_tests.invalid_type_argument
KHR-GL42.draw_elements_base_vertex_tests.invalid_mapped_bos
-KHR-GL42.gpu_shader_fp64.errors
-KHR-GL42.gpu_shader_fp64.max_uniform_components
-KHR-GL42.gpu_shader_fp64.named_uniform_blocks
-KHR-GL42.gpu_shader_fp64.state_query
-KHR-GL42.gpu_shader_fp64.conversions
-KHR-GL42.gpu_shader_fp64.illegal_conversions
-KHR-GL42.gpu_shader_fp64.varyings
-KHR-GL42.gpu_shader_fp64.valid_constructors
-KHR-GL42.gpu_shader_fp64.operators
-KHR-GL42.gpu_shader_fp64.built_in_functions
+KHR-GL42.gpu_shader_fp64.fp64.errors
+KHR-GL42.gpu_shader_fp64.fp64.max_uniform_components
+KHR-GL42.gpu_shader_fp64.fp64.named_uniform_blocks
+KHR-GL42.gpu_shader_fp64.fp64.state_query
+KHR-GL42.gpu_shader_fp64.fp64.conversions
+KHR-GL42.gpu_shader_fp64.fp64.illegal_conversions
+KHR-GL42.gpu_shader_fp64.fp64.varyings
+KHR-GL42.gpu_shader_fp64.fp64.valid_constructors
+KHR-GL42.gpu_shader_fp64.fp64.operators
+KHR-GL42.gpu_shader_fp64.builtin.abs_double
+KHR-GL42.gpu_shader_fp64.builtin.abs_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.abs_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.abs_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.abs_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.ceil_double
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.ceil_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_double
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_double
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.cross_double
+KHR-GL42.gpu_shader_fp64.builtin.cross_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.cross_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.cross_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.cross_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.determinant_double
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.determinant_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.distance_double
+KHR-GL42.gpu_shader_fp64.builtin.distance_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.distance_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.distance_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.distance_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.dot_double
+KHR-GL42.gpu_shader_fp64.builtin.dot_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.dot_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.dot_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.dot_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.equal_double
+KHR-GL42.gpu_shader_fp64.builtin.equal_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.equal_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.equal_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.equal_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_double
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.faceforward_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.floor_double
+KHR-GL42.gpu_shader_fp64.builtin.floor_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.floor_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.floor_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.floor_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.fma_double
+KHR-GL42.gpu_shader_fp64.builtin.fma_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.fma_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.fma_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.fma_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.fract_double
+KHR-GL42.gpu_shader_fp64.builtin.fract_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.fract_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.fract_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.fract_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.frexp_double
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.frexp_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_double
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthan_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_double
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.greaterthanequal_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.inverse_double
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.inverse_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_double
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.inversesqrt_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_double
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.ldexp_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_double
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.lessthan_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_double
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.lessthanequal_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.length_double
+KHR-GL42.gpu_shader_fp64.builtin.length_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.length_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.length_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.length_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_double
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.matrixcompmult_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.max_double
+KHR-GL42.gpu_shader_fp64.builtin.max_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.max_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.max_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.max_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_double
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.max_against_scalar_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.min_double
+KHR-GL42.gpu_shader_fp64.builtin.min_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.min_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.min_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.min_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_double
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.min_against_scalar_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.mix_double
+KHR-GL42.gpu_shader_fp64.builtin.mix_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.mix_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.mix_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.mix_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.mod_double
+KHR-GL42.gpu_shader_fp64.builtin.mod_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.mod_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.mod_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.mod_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_double
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.mod_against_scalar_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.modf_double
+KHR-GL42.gpu_shader_fp64.builtin.modf_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.modf_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.modf_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.modf_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.normalize_double
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.normalize_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.notequal_double
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.notequal_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_double
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.outerproduct_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_double
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.packdouble2x32_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.reflect_double
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.reflect_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.refract_double
+KHR-GL42.gpu_shader_fp64.builtin.refract_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.refract_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.refract_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.refract_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.round_double
+KHR-GL42.gpu_shader_fp64.builtin.round_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.round_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.round_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.round_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_double
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.roundeven_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.sign_double
+KHR-GL42.gpu_shader_fp64.builtin.sign_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.sign_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.sign_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.sign_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_double
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_double
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_double
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.sqrt_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.step_double
+KHR-GL42.gpu_shader_fp64.builtin.step_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.step_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.step_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.step_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_double
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.step_against_scalar_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.transpose_double
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.transpose_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.trunc_double
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.trunc_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_double
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.isnan_double
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.isnan_dmat4
+KHR-GL42.gpu_shader_fp64.builtin.isinf_double
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dvec2
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dvec3
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dvec4
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat2
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat2x3
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat2x4
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat3x2
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat3
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat3x4
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat4x2
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat4x3
+KHR-GL42.gpu_shader_fp64.builtin.isinf_dmat4
KHR-GL42.texture_gather.api-enums
KHR-GL42.texture_gather.gather-glsl-compile
KHR-GL42.texture_gather.plain-gather-float-2d-rgba
KHR-GL43.draw_elements_base_vertex_tests.invalid_start_end_arguments
KHR-GL43.draw_elements_base_vertex_tests.invalid_type_argument
KHR-GL43.draw_elements_base_vertex_tests.invalid_mapped_bos
-KHR-GL43.gpu_shader_fp64.errors
-KHR-GL43.gpu_shader_fp64.max_uniform_components
-KHR-GL43.gpu_shader_fp64.named_uniform_blocks
-KHR-GL43.gpu_shader_fp64.state_query
-KHR-GL43.gpu_shader_fp64.conversions
-KHR-GL43.gpu_shader_fp64.illegal_conversions
-KHR-GL43.gpu_shader_fp64.varyings
-KHR-GL43.gpu_shader_fp64.valid_constructors
-KHR-GL43.gpu_shader_fp64.operators
-KHR-GL43.gpu_shader_fp64.built_in_functions
+KHR-GL43.gpu_shader_fp64.fp64.errors
+KHR-GL43.gpu_shader_fp64.fp64.max_uniform_components
+KHR-GL43.gpu_shader_fp64.fp64.named_uniform_blocks
+KHR-GL43.gpu_shader_fp64.fp64.state_query
+KHR-GL43.gpu_shader_fp64.fp64.conversions
+KHR-GL43.gpu_shader_fp64.fp64.illegal_conversions
+KHR-GL43.gpu_shader_fp64.fp64.varyings
+KHR-GL43.gpu_shader_fp64.fp64.valid_constructors
+KHR-GL43.gpu_shader_fp64.fp64.operators
+KHR-GL43.gpu_shader_fp64.builtin.abs_double
+KHR-GL43.gpu_shader_fp64.builtin.abs_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.abs_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.abs_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.abs_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.ceil_double
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.ceil_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_double
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_double
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.cross_double
+KHR-GL43.gpu_shader_fp64.builtin.cross_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.cross_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.cross_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.cross_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.determinant_double
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.determinant_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.distance_double
+KHR-GL43.gpu_shader_fp64.builtin.distance_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.distance_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.distance_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.distance_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.dot_double
+KHR-GL43.gpu_shader_fp64.builtin.dot_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.dot_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.dot_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.dot_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.equal_double
+KHR-GL43.gpu_shader_fp64.builtin.equal_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.equal_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.equal_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.equal_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_double
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.faceforward_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.floor_double
+KHR-GL43.gpu_shader_fp64.builtin.floor_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.floor_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.floor_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.floor_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.fma_double
+KHR-GL43.gpu_shader_fp64.builtin.fma_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.fma_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.fma_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.fma_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.fract_double
+KHR-GL43.gpu_shader_fp64.builtin.fract_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.fract_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.fract_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.fract_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.frexp_double
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.frexp_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_double
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthan_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_double
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.greaterthanequal_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.inverse_double
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.inverse_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_double
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.inversesqrt_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_double
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.ldexp_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_double
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.lessthan_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_double
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.lessthanequal_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.length_double
+KHR-GL43.gpu_shader_fp64.builtin.length_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.length_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.length_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.length_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_double
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.matrixcompmult_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.max_double
+KHR-GL43.gpu_shader_fp64.builtin.max_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.max_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.max_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.max_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_double
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.max_against_scalar_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.min_double
+KHR-GL43.gpu_shader_fp64.builtin.min_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.min_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.min_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.min_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_double
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.min_against_scalar_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.mix_double
+KHR-GL43.gpu_shader_fp64.builtin.mix_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.mix_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.mix_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.mix_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.mod_double
+KHR-GL43.gpu_shader_fp64.builtin.mod_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.mod_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.mod_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.mod_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_double
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.mod_against_scalar_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.modf_double
+KHR-GL43.gpu_shader_fp64.builtin.modf_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.modf_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.modf_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.modf_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.normalize_double
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.normalize_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.notequal_double
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.notequal_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_double
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.outerproduct_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_double
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.packdouble2x32_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.reflect_double
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.reflect_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.refract_double
+KHR-GL43.gpu_shader_fp64.builtin.refract_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.refract_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.refract_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.refract_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.round_double
+KHR-GL43.gpu_shader_fp64.builtin.round_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.round_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.round_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.round_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_double
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.roundeven_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.sign_double
+KHR-GL43.gpu_shader_fp64.builtin.sign_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.sign_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.sign_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.sign_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_double
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_double
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_double
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.sqrt_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.step_double
+KHR-GL43.gpu_shader_fp64.builtin.step_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.step_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.step_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.step_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_double
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.step_against_scalar_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.transpose_double
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.transpose_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.trunc_double
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.trunc_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_double
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.isnan_double
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.isnan_dmat4
+KHR-GL43.gpu_shader_fp64.builtin.isinf_double
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dvec2
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dvec3
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dvec4
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat2
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat2x3
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat2x4
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat3x2
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat3
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat3x4
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat4x2
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat4x3
+KHR-GL43.gpu_shader_fp64.builtin.isinf_dmat4
KHR-GL43.texture_gather.api-enums
KHR-GL43.texture_gather.gather-glsl-compile
KHR-GL43.texture_gather.plain-gather-float-2d-rgba
KHR-GL44.draw_elements_base_vertex_tests.invalid_start_end_arguments
KHR-GL44.draw_elements_base_vertex_tests.invalid_type_argument
KHR-GL44.draw_elements_base_vertex_tests.invalid_mapped_bos
-KHR-GL44.gpu_shader_fp64.errors
-KHR-GL44.gpu_shader_fp64.max_uniform_components
-KHR-GL44.gpu_shader_fp64.named_uniform_blocks
-KHR-GL44.gpu_shader_fp64.state_query
-KHR-GL44.gpu_shader_fp64.conversions
-KHR-GL44.gpu_shader_fp64.illegal_conversions
-KHR-GL44.gpu_shader_fp64.varyings
-KHR-GL44.gpu_shader_fp64.valid_constructors
-KHR-GL44.gpu_shader_fp64.operators
-KHR-GL44.gpu_shader_fp64.built_in_functions
+KHR-GL44.gpu_shader_fp64.fp64.errors
+KHR-GL44.gpu_shader_fp64.fp64.max_uniform_components
+KHR-GL44.gpu_shader_fp64.fp64.named_uniform_blocks
+KHR-GL44.gpu_shader_fp64.fp64.state_query
+KHR-GL44.gpu_shader_fp64.fp64.conversions
+KHR-GL44.gpu_shader_fp64.fp64.illegal_conversions
+KHR-GL44.gpu_shader_fp64.fp64.varyings
+KHR-GL44.gpu_shader_fp64.fp64.valid_constructors
+KHR-GL44.gpu_shader_fp64.fp64.operators
+KHR-GL44.gpu_shader_fp64.builtin.abs_double
+KHR-GL44.gpu_shader_fp64.builtin.abs_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.abs_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.abs_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.abs_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.ceil_double
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.ceil_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_double
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_double
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.cross_double
+KHR-GL44.gpu_shader_fp64.builtin.cross_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.cross_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.cross_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.cross_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.determinant_double
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.determinant_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.distance_double
+KHR-GL44.gpu_shader_fp64.builtin.distance_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.distance_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.distance_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.distance_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.dot_double
+KHR-GL44.gpu_shader_fp64.builtin.dot_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.dot_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.dot_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.dot_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.equal_double
+KHR-GL44.gpu_shader_fp64.builtin.equal_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.equal_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.equal_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.equal_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_double
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.faceforward_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.floor_double
+KHR-GL44.gpu_shader_fp64.builtin.floor_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.floor_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.floor_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.floor_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.fma_double
+KHR-GL44.gpu_shader_fp64.builtin.fma_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.fma_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.fma_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.fma_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.fract_double
+KHR-GL44.gpu_shader_fp64.builtin.fract_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.fract_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.fract_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.fract_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.frexp_double
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.frexp_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_double
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthan_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_double
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.greaterthanequal_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.inverse_double
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.inverse_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_double
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.inversesqrt_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_double
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.ldexp_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_double
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.lessthan_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_double
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.lessthanequal_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.length_double
+KHR-GL44.gpu_shader_fp64.builtin.length_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.length_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.length_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.length_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_double
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.matrixcompmult_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.max_double
+KHR-GL44.gpu_shader_fp64.builtin.max_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.max_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.max_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.max_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_double
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.max_against_scalar_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.min_double
+KHR-GL44.gpu_shader_fp64.builtin.min_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.min_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.min_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.min_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_double
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.min_against_scalar_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.mix_double
+KHR-GL44.gpu_shader_fp64.builtin.mix_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.mix_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.mix_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.mix_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.mod_double
+KHR-GL44.gpu_shader_fp64.builtin.mod_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.mod_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.mod_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.mod_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_double
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.mod_against_scalar_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.modf_double
+KHR-GL44.gpu_shader_fp64.builtin.modf_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.modf_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.modf_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.modf_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.normalize_double
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.normalize_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.notequal_double
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.notequal_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_double
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.outerproduct_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_double
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.packdouble2x32_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.reflect_double
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.reflect_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.refract_double
+KHR-GL44.gpu_shader_fp64.builtin.refract_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.refract_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.refract_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.refract_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.round_double
+KHR-GL44.gpu_shader_fp64.builtin.round_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.round_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.round_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.round_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_double
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.roundeven_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.sign_double
+KHR-GL44.gpu_shader_fp64.builtin.sign_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.sign_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.sign_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.sign_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_double
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_double
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_double
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.sqrt_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.step_double
+KHR-GL44.gpu_shader_fp64.builtin.step_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.step_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.step_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.step_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_double
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.step_against_scalar_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.transpose_double
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.transpose_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.trunc_double
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.trunc_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_double
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.isnan_double
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.isnan_dmat4
+KHR-GL44.gpu_shader_fp64.builtin.isinf_double
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dvec2
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dvec3
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dvec4
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat2
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat2x3
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat2x4
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat3x2
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat3
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat3x4
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat4x2
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat4x3
+KHR-GL44.gpu_shader_fp64.builtin.isinf_dmat4
KHR-GL44.texture_gather.api-enums
KHR-GL44.texture_gather.gather-glsl-compile
KHR-GL44.texture_gather.plain-gather-float-2d-rgba
KHR-GL45.draw_elements_base_vertex_tests.invalid_start_end_arguments
KHR-GL45.draw_elements_base_vertex_tests.invalid_type_argument
KHR-GL45.draw_elements_base_vertex_tests.invalid_mapped_bos
-KHR-GL45.gpu_shader_fp64.errors
-KHR-GL45.gpu_shader_fp64.max_uniform_components
-KHR-GL45.gpu_shader_fp64.named_uniform_blocks
-KHR-GL45.gpu_shader_fp64.state_query
-KHR-GL45.gpu_shader_fp64.conversions
-KHR-GL45.gpu_shader_fp64.illegal_conversions
-KHR-GL45.gpu_shader_fp64.varyings
-KHR-GL45.gpu_shader_fp64.valid_constructors
-KHR-GL45.gpu_shader_fp64.operators
-KHR-GL45.gpu_shader_fp64.built_in_functions
+KHR-GL45.gpu_shader_fp64.fp64.errors
+KHR-GL45.gpu_shader_fp64.fp64.max_uniform_components
+KHR-GL45.gpu_shader_fp64.fp64.named_uniform_blocks
+KHR-GL45.gpu_shader_fp64.fp64.state_query
+KHR-GL45.gpu_shader_fp64.fp64.conversions
+KHR-GL45.gpu_shader_fp64.fp64.illegal_conversions
+KHR-GL45.gpu_shader_fp64.fp64.varyings
+KHR-GL45.gpu_shader_fp64.fp64.valid_constructors
+KHR-GL45.gpu_shader_fp64.fp64.operators
+KHR-GL45.gpu_shader_fp64.builtin.abs_double
+KHR-GL45.gpu_shader_fp64.builtin.abs_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.abs_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.abs_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.abs_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.ceil_double
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.ceil_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_double
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_double
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.cross_double
+KHR-GL45.gpu_shader_fp64.builtin.cross_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.cross_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.cross_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.cross_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.determinant_double
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.determinant_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.distance_double
+KHR-GL45.gpu_shader_fp64.builtin.distance_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.distance_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.distance_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.distance_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.dot_double
+KHR-GL45.gpu_shader_fp64.builtin.dot_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.dot_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.dot_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.dot_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.equal_double
+KHR-GL45.gpu_shader_fp64.builtin.equal_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.equal_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.equal_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.equal_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_double
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.faceforward_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.floor_double
+KHR-GL45.gpu_shader_fp64.builtin.floor_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.floor_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.floor_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.floor_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.fma_double
+KHR-GL45.gpu_shader_fp64.builtin.fma_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.fma_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.fma_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.fma_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.fract_double
+KHR-GL45.gpu_shader_fp64.builtin.fract_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.fract_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.fract_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.fract_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.frexp_double
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.frexp_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_double
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthan_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_double
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.greaterthanequal_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.inverse_double
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.inverse_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_double
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.inversesqrt_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_double
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.ldexp_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_double
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.lessthan_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_double
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.lessthanequal_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.length_double
+KHR-GL45.gpu_shader_fp64.builtin.length_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.length_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.length_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.length_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_double
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.matrixcompmult_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.max_double
+KHR-GL45.gpu_shader_fp64.builtin.max_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.max_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.max_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.max_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_double
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.max_against_scalar_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.min_double
+KHR-GL45.gpu_shader_fp64.builtin.min_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.min_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.min_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.min_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_double
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.min_against_scalar_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.mix_double
+KHR-GL45.gpu_shader_fp64.builtin.mix_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.mix_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.mix_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.mix_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.mod_double
+KHR-GL45.gpu_shader_fp64.builtin.mod_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.mod_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.mod_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.mod_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_double
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.mod_against_scalar_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.modf_double
+KHR-GL45.gpu_shader_fp64.builtin.modf_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.modf_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.modf_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.modf_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.normalize_double
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.normalize_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.notequal_double
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.notequal_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_double
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.outerproduct_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_double
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.packdouble2x32_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.reflect_double
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.reflect_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.refract_double
+KHR-GL45.gpu_shader_fp64.builtin.refract_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.refract_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.refract_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.refract_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.round_double
+KHR-GL45.gpu_shader_fp64.builtin.round_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.round_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.round_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.round_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_double
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.roundeven_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.sign_double
+KHR-GL45.gpu_shader_fp64.builtin.sign_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.sign_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.sign_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.sign_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_double
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_double
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_double
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.sqrt_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.step_double
+KHR-GL45.gpu_shader_fp64.builtin.step_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.step_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.step_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.step_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_double
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.step_against_scalar_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.transpose_double
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.transpose_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.trunc_double
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.trunc_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_double
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.isnan_double
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.isnan_dmat4
+KHR-GL45.gpu_shader_fp64.builtin.isinf_double
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dvec2
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dvec3
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dvec4
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat2
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat2x3
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat2x4
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat3x2
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat3
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat3x4
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat4x2
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat4x3
+KHR-GL45.gpu_shader_fp64.builtin.isinf_dmat4
KHR-GL45.texture_gather.api-enums
KHR-GL45.texture_gather.gather-glsl-compile
KHR-GL45.texture_gather.plain-gather-float-2d-rgba
KHR-GL46.draw_elements_base_vertex_tests.invalid_start_end_arguments
KHR-GL46.draw_elements_base_vertex_tests.invalid_type_argument
KHR-GL46.draw_elements_base_vertex_tests.invalid_mapped_bos
-KHR-GL46.gpu_shader_fp64.errors
-KHR-GL46.gpu_shader_fp64.max_uniform_components
-KHR-GL46.gpu_shader_fp64.named_uniform_blocks
-KHR-GL46.gpu_shader_fp64.state_query
-KHR-GL46.gpu_shader_fp64.conversions
-KHR-GL46.gpu_shader_fp64.illegal_conversions
-KHR-GL46.gpu_shader_fp64.varyings
-KHR-GL46.gpu_shader_fp64.valid_constructors
-KHR-GL46.gpu_shader_fp64.operators
-KHR-GL46.gpu_shader_fp64.built_in_functions
+KHR-GL46.gpu_shader_fp64.fp64.errors
+KHR-GL46.gpu_shader_fp64.fp64.max_uniform_components
+KHR-GL46.gpu_shader_fp64.fp64.named_uniform_blocks
+KHR-GL46.gpu_shader_fp64.fp64.state_query
+KHR-GL46.gpu_shader_fp64.fp64.conversions
+KHR-GL46.gpu_shader_fp64.fp64.illegal_conversions
+KHR-GL46.gpu_shader_fp64.fp64.varyings
+KHR-GL46.gpu_shader_fp64.fp64.valid_constructors
+KHR-GL46.gpu_shader_fp64.fp64.operators
+KHR-GL46.gpu_shader_fp64.builtin.abs_double
+KHR-GL46.gpu_shader_fp64.builtin.abs_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.abs_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.abs_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.abs_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.ceil_double
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.ceil_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_double
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_double
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.clamp_against_scalar_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.cross_double
+KHR-GL46.gpu_shader_fp64.builtin.cross_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.cross_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.cross_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.cross_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.determinant_double
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.determinant_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.distance_double
+KHR-GL46.gpu_shader_fp64.builtin.distance_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.distance_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.distance_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.distance_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.dot_double
+KHR-GL46.gpu_shader_fp64.builtin.dot_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.dot_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.dot_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.dot_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.equal_double
+KHR-GL46.gpu_shader_fp64.builtin.equal_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.equal_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.equal_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.equal_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_double
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.faceforward_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.floor_double
+KHR-GL46.gpu_shader_fp64.builtin.floor_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.floor_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.floor_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.floor_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.fma_double
+KHR-GL46.gpu_shader_fp64.builtin.fma_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.fma_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.fma_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.fma_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.fract_double
+KHR-GL46.gpu_shader_fp64.builtin.fract_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.fract_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.fract_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.fract_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.frexp_double
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.frexp_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_double
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthan_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_double
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.greaterthanequal_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.inverse_double
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.inverse_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_double
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.inversesqrt_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_double
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.ldexp_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_double
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.lessthan_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_double
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.lessthanequal_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.length_double
+KHR-GL46.gpu_shader_fp64.builtin.length_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.length_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.length_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.length_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_double
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.matrixcompmult_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.max_double
+KHR-GL46.gpu_shader_fp64.builtin.max_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.max_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.max_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.max_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_double
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.max_against_scalar_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.min_double
+KHR-GL46.gpu_shader_fp64.builtin.min_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.min_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.min_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.min_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_double
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.min_against_scalar_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.mix_double
+KHR-GL46.gpu_shader_fp64.builtin.mix_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.mix_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.mix_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.mix_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.mod_double
+KHR-GL46.gpu_shader_fp64.builtin.mod_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.mod_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.mod_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.mod_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_double
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.mod_against_scalar_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.modf_double
+KHR-GL46.gpu_shader_fp64.builtin.modf_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.modf_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.modf_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.modf_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.normalize_double
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.normalize_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.notequal_double
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.notequal_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_double
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.outerproduct_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_double
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.packdouble2x32_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.reflect_double
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.reflect_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.refract_double
+KHR-GL46.gpu_shader_fp64.builtin.refract_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.refract_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.refract_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.refract_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.round_double
+KHR-GL46.gpu_shader_fp64.builtin.round_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.round_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.round_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.round_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_double
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.roundeven_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.sign_double
+KHR-GL46.gpu_shader_fp64.builtin.sign_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.sign_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.sign_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.sign_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_double
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_double
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.smoothstep_against_scalar_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_double
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.sqrt_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.step_double
+KHR-GL46.gpu_shader_fp64.builtin.step_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.step_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.step_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.step_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_double
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.step_against_scalar_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.transpose_double
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.transpose_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.trunc_double
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.trunc_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_double
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.unpackdouble2x32_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.isnan_double
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.isnan_dmat4
+KHR-GL46.gpu_shader_fp64.builtin.isinf_double
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dvec2
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dvec3
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dvec4
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat2
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat2x3
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat2x4
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat3x2
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat3
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat3x4
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat4x2
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat4x3
+KHR-GL46.gpu_shader_fp64.builtin.isinf_dmat4
KHR-GL46.texture_gather.api-enums
KHR-GL46.texture_gather.gather-glsl-compile
KHR-GL46.texture_gather.plain-gather-float-2d-rgba
};
} /* TypeHelpers */
-/** Implementations of function objects required by "GPUShaderFP64Test10"
+/** Implementations of "math" functions required by "GPUShaderFP64Test10"
*
**/
-namespace FunctionObject
+namespace Math
{
-/** Maps variable type with enumeration Utils::_variable_type
- *
- * @tparam T type
- **/
template <typename T>
-class typeInfo
-{
-public:
- static const Utils::_variable_type variable_type =
- TypeHelpers::typeInfo<typename TypeHelpers::referenceToType<T>::result>::variable_type;
-};
+static T clamp(T x, T minVal, T maxVal);
-/** Place data from <in> into <buffer>
- *
- * @param buffer Buffer
- * @param in Input data
- **/
-template <typename T>
-class pack
-{
-public:
- static void set(glw::GLvoid* buffer, const T& in)
- {
- *(T*)buffer = in;
- }
-};
+template <int Size>
+static tcu::Matrix<glw::GLdouble, Size, Size> cofactors(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix);
-/** Place tcu::Matrix data from <in> into <buffer>
- *
- * @param buffer Buffer
- * @param in Input data
- **/
-template <int Cols, int Rows>
-class pack<tcu::Matrix<glw::GLdouble, Rows, Cols> >
-{
-public:
- static void set(glw::GLvoid* buffer, const tcu::Matrix<glw::GLdouble, Rows, Cols>& in)
- {
- glw::GLdouble* data = (glw::GLdouble*)buffer;
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> convertBvecToUvec(const tcu::Vector<bool, Size>& src);
- for (glw::GLint column = 0; column < Cols; ++column)
- {
- for (glw::GLint row = 0; row < Rows; ++row)
- {
- glw::GLint index = column * Rows + row;
+template <typename T>
+static T determinant(T val);
- data[index] = in(row, column);
- }
- }
- }
-};
+template <typename T>
+static T determinant(const tcu::Matrix<T, 2, 2>& mat);
-/** Get data of <out> from <buffer>
- *
- * @param buffer Buffer
- * @param out Output data
- **/
template <typename T>
-class unpack
-{
-public:
- static void get(const glw::GLvoid* buffer, T& out)
- {
- out = *(T*)buffer;
- }
-};
+static T determinant(const tcu::Matrix<T, 3, 3>& mat);
-/** Get tcu::Matrix data from <buffer>
- *
- * @param buffer Buffer
- * @param out Output data
- **/
-template <int Cols, int Rows>
-class unpack<tcu::Matrix<glw::GLdouble, Rows, Cols> >
-{
-public:
- static void get(const glw::GLvoid* buffer, tcu::Matrix<glw::GLdouble, Rows, Cols>& out)
- {
- const glw::GLdouble* data = (glw::GLdouble*)buffer;
+template <typename T>
+static T determinant(const tcu::Matrix<T, 4, 4>& mat);
- for (glw::GLint column = 0; column < Cols; ++column)
- {
- for (glw::GLint row = 0; row < Rows; ++row)
- {
- glw::GLint index = column * Rows + row;
+template <int Size>
+static tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> eliminate(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix,
+ glw::GLuint column, glw::GLuint row);
- out(row, column) = data[index];
- }
- }
- }
-};
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> equal(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right);
-/** Base of unary function classes
- *
- **/
-class unaryBase : public GPUShaderFP64Test10::functionObject
-{
-public:
- unaryBase(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- glw::GLvoid* function_pointer, const Utils::_variable_type res_type, const Utils::_variable_type arg_type)
- : functionObject(function_enum, function_name, function_pointer, res_type), m_arg_type(arg_type)
- {
- }
+static glw::GLdouble fma(glw::GLdouble a, glw::GLdouble b, glw::GLdouble c);
- virtual glw::GLuint getArgumentCount() const
- {
- return 1;
- }
+static glw::GLdouble fract(glw::GLdouble val);
- virtual Utils::_variable_type getArgumentType(glw::GLuint /* argument */) const
- {
- return m_arg_type;
- }
+template <typename T>
+static T frexp(T val, glw::GLint& exp);
-protected:
- const Utils::_variable_type m_arg_type;
-};
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> greaterThan(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right);
-/** Unary function class. It treats input argument as one variable.
- *
- * @tparam ResT Type of result
- * @tparam ArgT Type of argument
- **/
-template <typename ResT, typename ArgT>
-class unary : public unaryBase
-{
-public:
- typedef ResT (*functionPointer)(const ArgT&);
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> greaterThanEqual(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right);
- unary(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- functionPointer function_pointer)
- : unaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, typeInfo<ResT>::variable_type,
- typeInfo<ArgT>::variable_type)
- {
- }
+template <int Size>
+static tcu::Matrix<glw::GLdouble, Size, Size> inverse(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix);
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
- {
- ResT result;
- ArgT arg;
+static glw::GLdouble inverseSqrt(glw::GLdouble val);
- unpack<ArgT>::get(argument_src, arg);
+static glw::GLuint isinf_impl(glw::GLdouble val);
- functionPointer p_function = (functionPointer)m_p_function;
+static glw::GLuint isnan_impl(glw::GLdouble val);
- result = p_function(arg);
+template <typename T>
+static T ldexp(T val, glw::GLint exp);
- pack<ResT>::set(result_dst, result);
- }
-};
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> lessThan(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right);
-/** Unary function class. It treats input argument as separate components.
- *
- * @tparam ResT Type of result
- **/
-template <typename ResT>
-class unaryByComponent : public unaryBase
-{
-public:
- typedef ResT (*functionPointer)(glw::GLdouble);
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> lessThanEqual(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right);
- unaryByComponent(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- functionPointer function_pointer, const Utils::_variable_type res_type,
- const Utils::_variable_type arg_type)
- : unaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_type)
- {
- }
+template <typename T>
+static T max(T left, T right);
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
- {
- glw::GLuint n_components = Utils::getNumberOfComponentsForVariableType(m_arg_type);
- ResT* p_result = (ResT*)result_dst;
- glw::GLdouble* p_arg = (glw::GLdouble*)argument_src;
+template <typename T>
+static T min(T left, T right);
- functionPointer p_function = (functionPointer)m_p_function;
+template <int Size>
+static glw::GLdouble minor_impl(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix, glw::GLuint column,
+ glw::GLuint row);
- for (glw::GLuint component = 0; component < n_components; ++component)
- {
- p_result[component] = p_function(p_arg[component]);
- }
- }
-};
+template <typename T>
+static T mix(T left, T right, T weight);
-/** Class of functions with one input and one output parameter. It treats arguments as separate components.
- *
- * @tparam ResT Type of result
- * @tparam ArgT Type of argument
- * @tparam OutT Type of output parameter
- **/
-template <typename ResT, typename ArgT, typename OutT>
-class unaryWithOutputByComponent : public unaryBase
-{
-public:
- typedef ResT (*functionPointer)(ArgT, OutT&);
+template <typename T>
+static T mod(T left, T right);
- unaryWithOutputByComponent(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- functionPointer function_pointer, const Utils::_variable_type res_type,
- const Utils::_variable_type arg_type, const Utils::_variable_type out_type)
- : unaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_type)
- , m_out_type(out_type)
- {
- }
+template <typename T>
+static T modf(T val, T& integer);
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
- {
- ResT* p_result = (ResT*)result_dst;
- OutT* p_out = (OutT*)((glw::GLubyte*)result_dst + getResultOffset(1));
- ArgT* p_arg = (ArgT*)argument_src;
+template <typename T>
+static T multiply(T left, T right);
- const glw::GLuint n_components_0 = getArgumentComponents(0);
- const glw::GLuint n_components_1 = getResultComponents(1);
- const glw::GLuint n_components = de::max(n_components_0, n_components_1);
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> notEqual(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right);
- const glw::GLuint component_step_0 = (1 == n_components_0) ? 0 : 1;
- const glw::GLuint component_step_1 = (1 == n_components_1) ? 0 : 1;
+template <int Cols, int Rows>
+static tcu::Matrix<glw::GLdouble, Rows, Cols> outerProduct(const tcu::Vector<glw::GLdouble, Rows>& left,
+ const tcu::Vector<glw::GLdouble, Cols>& right);
- functionPointer p_function = (functionPointer)m_p_function;
+static glw::GLdouble packDouble2x32(const tcu::UVec2& in);
- for (glw::GLuint component = 0; component < n_components; ++component)
- {
- const ArgT first_arg = p_arg[component * component_step_0];
- OutT& second_arg = p_out[component * component_step_1];
+template <typename T>
+static T round(T t);
- p_result[component] = p_function(first_arg, second_arg);
- }
- }
+template <typename T>
+static T roundEven(T t);
- glw::GLuint getResultCount() const
- {
- return 2;
- }
+template <typename T>
+static T sign(T t);
- Utils::_variable_type getResultType(glw::GLuint result) const
- {
- Utils::_variable_type type = Utils::VARIABLE_TYPE_UNKNOWN;
+template <typename T>
+static T smoothStep(T e0, T e1, T val);
- switch (result)
- {
- case 0:
- type = m_res_type;
- break;
- case 1:
- type = m_out_type;
- break;
- default:
- TCU_FAIL("Not implemented");
- break;
- }
+template <typename T>
+static T step(T edge, T val);
- return type;
- }
+template <typename T, int Rows, int Cols>
+static tcu::Matrix<T, Cols, Rows> transpose(const tcu::Matrix<T, Rows, Cols>& matrix);
-protected:
- const Utils::_variable_type m_out_type;
-};
+template <typename T>
+static T trunc(T t);
-/** Base of binary function classes.
- *
- **/
-class binaryBase : public GPUShaderFP64Test10::functionObject
+static tcu::UVec2 unpackDouble2x32(const glw::GLdouble& val);
+
+template <typename T>
+static T clamp(T x, T minVal, T maxVal)
{
-public:
- binaryBase(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- glw::GLvoid* function_pointer, const Utils::_variable_type res_type,
- const Utils::_variable_type arg_1_type, const Utils::_variable_type arg_2_type)
- : functionObject(function_enum, function_name, function_pointer, res_type)
- , m_arg_1_type(arg_1_type)
- , m_arg_2_type(arg_2_type)
- {
- }
+ return min(max(x, minVal), maxVal);
+}
- virtual glw::GLuint getArgumentCount() const
- {
- return 2;
- }
+template <int Size>
+static tcu::Matrix<glw::GLdouble, Size, Size> cofactors(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix)
+{
+ tcu::Matrix<glw::GLdouble, Size, Size> result;
- virtual Utils::_variable_type getArgumentType(glw::GLuint argument) const
+ for (glw::GLuint c = 0; c < Size; ++c)
{
- switch (argument)
+ for (glw::GLuint r = 0; r < Size; ++r)
{
- case 0:
- return m_arg_1_type;
- break;
- case 1:
- return m_arg_2_type;
- break;
- default:
- return Utils::VARIABLE_TYPE_UNKNOWN;
- break;
+ const glw::GLdouble minor_value = minor_impl(matrix, c, r);
+
+ result(r, c) = (1 == (c + r) % 2) ? -minor_value : minor_value;
}
}
-protected:
- const Utils::_variable_type m_arg_1_type;
- const Utils::_variable_type m_arg_2_type;
-};
+ return result;
+}
-/** Binary function class. It treats input arguments as two variables.
- *
- * @param ResT Type of result
- * @param Arg1T Type of first argument
- * @param Arg2T Type of second argument
- **/
-template <typename ResT, typename Arg1T, typename Arg2T>
-class binary : public binaryBase
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> convertBvecToUvec(const tcu::Vector<bool, Size>& src)
{
-public:
- typedef ResT (*functionPointer)(const Arg1T&, const Arg2T&);
+ tcu::Vector<glw::GLuint, Size> result;
- binary(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- functionPointer function_pointer)
- : binaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, typeInfo<ResT>::variable_type,
- typeInfo<Arg1T>::variable_type, typeInfo<Arg2T>::variable_type)
+ for (glw::GLint i = 0; i < Size; ++i)
{
+ if (GL_FALSE != src[i])
+ {
+ result[i] = 1;
+ }
+ else
+ {
+ result[i] = 0;
+ }
}
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
- {
- const glw::GLuint argument_1_stride = getArgumentStride(0);
-
- functionPointer p_function = (functionPointer)m_p_function;
-
- Arg1T arg_1;
- Arg2T arg_2;
- ResT result;
+ return result;
+}
- unpack<Arg1T>::get(argument_src, arg_1);
- unpack<Arg2T>::get((glw::GLubyte*)argument_src + argument_1_stride, arg_2);
+template <typename T>
+static T det2(T _00, T _10, T _01, T _11)
+{
+ return _00 * _11 - _01 * _10;
+}
- result = p_function(arg_1, arg_2);
+template <typename T>
+static T det3(T _00, T _10, T _20, T _01, T _11, T _21, T _02, T _12, T _22)
+{
+ return _00 * det2(_11, _21, _12, _22) - _10 * det2(_01, _21, _02, _22) + _20 * det2(_01, _11, _02, _12);
+}
- pack<ResT>::set(result_dst, result);
- }
-};
+template <typename T>
+static T det4(T _00, T _10, T _20, T _30, T _01, T _11, T _21, T _31, T _02, T _12, T _22, T _32, T _03, T _13, T _23,
+ T _33)
+{
+ return _00 * det3(_11, _21, _31, _12, _22, _32, _13, _23, _33) -
+ _10 * det3(_01, _21, _31, _02, _22, _32, _03, _23, _33) +
+ _20 * det3(_01, _11, _31, _02, _12, _32, _03, _13, _33) -
+ _30 * det3(_01, _11, _21, _02, _12, _22, _03, _13, _23);
+}
-/** Binary function class. It treats input arguments as separate components.
- *
- * @param ResT Type of result
- * @param Arg1T Type of first argument
- * @param Arg2T Type of second argument
- **/
-template <typename ResT, typename Arg1T, typename Arg2T>
-class binaryByComponent : public binaryBase
+template <typename T>
+static T determinant(T val)
{
-public:
- typedef ResT (*functionPointer)(Arg1T, Arg2T);
+ return val;
+}
- binaryByComponent(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- functionPointer function_pointer, const Utils::_variable_type res_type,
- const Utils::_variable_type arg_1_type, const Utils::_variable_type arg_2_type)
- : binaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_1_type, arg_2_type)
- {
- }
+template <typename T>
+static T determinant(const tcu::Matrix<T, 2, 2>& mat)
+{
+ return det2(mat(0, 0), mat(0, 1), mat(1, 0), mat(1, 1));
+}
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
- {
- ResT* p_result = (ResT*)result_dst;
- Arg1T* p_arg_1 = (Arg1T*)argument_src;
- Arg2T* p_arg_2 = (Arg2T*)((glw::GLubyte*)argument_src + getArgumentOffset(1));
+template <typename T>
+static T determinant(const tcu::Matrix<T, 3, 3>& mat)
+{
+ return det3(mat(0, 0), mat(0, 1), mat(0, 2), mat(1, 0), mat(1, 1), mat(1, 2), mat(2, 0), mat(2, 1), mat(2, 2));
+}
- const glw::GLuint n_components_0 = getArgumentComponents(0);
- const glw::GLuint n_components_1 = getArgumentComponents(1);
- const glw::GLuint n_components = de::max(n_components_0, n_components_1);
+template <typename T>
+static T determinant(const tcu::Matrix<T, 4, 4>& mat)
+{
+ return det4(mat(0, 0), mat(0, 1), mat(0, 2), mat(0, 3), mat(1, 0), mat(1, 1), mat(1, 2), mat(1, 3), mat(2, 0),
+ mat(2, 1), mat(2, 2), mat(2, 3), mat(3, 0), mat(3, 1), mat(3, 2), mat(3, 3));
+}
- const glw::GLuint component_step_0 = (1 == n_components_0) ? 0 : 1;
- const glw::GLuint component_step_1 = (1 == n_components_1) ? 0 : 1;
+template <int Size>
+static tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> eliminate(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix,
+ glw::GLuint column, glw::GLuint row)
+{
+ tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> result;
- functionPointer p_function = (functionPointer)m_p_function;
+ for (glw::GLuint c = 0; c < Size; ++c)
+ {
+ /* Skip eliminated column */
+ if (column == c)
+ {
+ continue;
+ }
- for (glw::GLuint component = 0; component < n_components; ++component)
+ for (glw::GLuint r = 0; r < Size; ++r)
{
- const Arg1T first_arg = p_arg_1[component * component_step_0];
- const Arg2T second_arg = p_arg_2[component * component_step_1];
+ /* Skip eliminated row */
+ if (row == r)
+ {
+ continue;
+ }
- p_result[component] = p_function(first_arg, second_arg);
+ const glw::GLint r_offset = (r > row) ? -1 : 0;
+ const glw::GLint c_offset = (c > column) ? -1 : 0;
+
+ result(r + r_offset, c + c_offset) = matrix(r, c);
}
}
-};
-/** Base of tenary function classes.
- *
- **/
-class tenaryBase : public GPUShaderFP64Test10::functionObject
+ return result;
+}
+
+template <int Size>
+static tcu::Vector<glw::GLuint, Size> equal(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right)
{
-public:
- tenaryBase(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- glw::GLvoid* function_pointer, const Utils::_variable_type res_type,
- const Utils::_variable_type arg_1_type, const Utils::_variable_type arg_2_type,
- const Utils::_variable_type arg_3_type)
- : functionObject(function_enum, function_name, function_pointer, res_type)
- , m_arg_1_type(arg_1_type)
- , m_arg_2_type(arg_2_type)
- , m_arg_3_type(arg_3_type)
- {
- }
+ return convertBvecToUvec(tcu::equal(left, right));
+}
- virtual glw::GLuint getArgumentCount() const
- {
- return 3;
- }
+static glw::GLdouble fma(glw::GLdouble a, glw::GLdouble b, glw::GLdouble c)
+{
+ return a * b + c;
+}
- virtual Utils::_variable_type getArgumentType(glw::GLuint argument) const
- {
- switch (argument)
- {
- case 0:
- return m_arg_1_type;
- break;
- case 1:
- return m_arg_2_type;
- break;
- case 2:
- return m_arg_3_type;
- break;
- default:
- return Utils::VARIABLE_TYPE_UNKNOWN;
- break;
- }
- }
+static glw::GLdouble fract(glw::GLdouble val)
+{
+ return val - floor(val);
+}
-protected:
- const Utils::_variable_type m_arg_1_type;
- const Utils::_variable_type m_arg_2_type;
- const Utils::_variable_type m_arg_3_type;
-};
-
-/** Tenary function class. It treats input arguments as three variables.
- *
- * @param ResT Type of result
- * @param Arg1T Type of first argument
- * @param Arg2T Type of second argument
- * @param Arg3T Type of third argument
- **/
-template <typename ResT, typename Arg1T, typename Arg2T, typename Arg3T>
-class tenary : public tenaryBase
-{
-public:
- typedef ResT (*functionPointer)(Arg1T, Arg2T, Arg3T);
- typedef typename TypeHelpers::referenceToType<Arg1T>::result arg1T;
- typedef typename TypeHelpers::referenceToType<Arg2T>::result arg2T;
- typedef typename TypeHelpers::referenceToType<Arg3T>::result arg3T;
-
- tenary(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- functionPointer function_pointer)
- : tenaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, typeInfo<ResT>::variable_type,
- typeInfo<Arg1T>::variable_type, typeInfo<Arg2T>::variable_type, typeInfo<Arg3T>::variable_type)
- {
- }
-
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
- {
- const glw::GLuint argument_2_offset = getArgumentOffset(1);
- const glw::GLuint argument_3_offset = getArgumentOffset(2);
-
- functionPointer p_function = (functionPointer)m_p_function;
-
- arg1T arg_1;
- arg2T arg_2;
- arg3T arg_3;
- ResT result;
-
- unpack<arg1T>::get(argument_src, arg_1);
- unpack<arg2T>::get((glw::GLubyte*)argument_src + argument_2_offset, arg_2);
- unpack<arg3T>::get((glw::GLubyte*)argument_src + argument_3_offset, arg_3);
-
- result = p_function(arg_1, arg_2, arg_3);
-
- pack<ResT>::set(result_dst, result);
- }
-};
-
-/** Tenary function class. It treats input arguments as separate components.
- *
-
- **/
-class tenaryByComponent : public tenaryBase
-{
-public:
- typedef glw::GLdouble (*functionPointer)(glw::GLdouble, glw::GLdouble, glw::GLdouble);
-
- tenaryByComponent(GPUShaderFP64Test10::functionEnum function_enum, const glw::GLchar* function_name,
- functionPointer function_pointer, const Utils::_variable_type res_type,
- const Utils::_variable_type arg_1_type, const Utils::_variable_type arg_2_type,
- const Utils::_variable_type arg_3_type)
- : tenaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_1_type, arg_2_type,
- arg_3_type)
- {
- }
-
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
- {
- glw::GLdouble* p_result = (glw::GLdouble*)result_dst;
- const glw::GLdouble* p_arg = (const glw::GLdouble*)argument_src;
-
- const glw::GLuint n_components_0 = getArgumentComponents(0);
- const glw::GLuint n_components_1 = getArgumentComponents(1);
- const glw::GLuint n_components_2 = getArgumentComponents(2);
- const glw::GLuint n_components = de::max(de::max(n_components_0, n_components_1), n_components_2);
-
- const glw::GLuint component_step_0 = (1 == n_components_0) ? 0 : 1;
- const glw::GLuint component_step_1 = (1 == n_components_1) ? 0 : 1;
- const glw::GLuint component_step_2 = (1 == n_components_2) ? 0 : 1;
-
- functionPointer p_function = (functionPointer)m_p_function;
-
- for (glw::GLuint component = 0; component < n_components; ++component)
- {
- const glw::GLdouble first_arg = p_arg[component * component_step_0];
- const glw::GLdouble second_arg = p_arg[component * component_step_1 + n_components_0];
- const glw::GLdouble third_arg = p_arg[component * component_step_2 + n_components_0 + n_components_1];
-
- p_result[component] = p_function(first_arg, second_arg, third_arg);
- }
- }
-};
-} /* FunctionObject */
-
-/** Implementations of "math" functions required by "GPUShaderFP64Test10"
- *
- **/
-namespace Math
-{
template <typename T>
-static T clamp(T x, T minVal, T maxVal);
-
-template <int Size>
-static tcu::Matrix<glw::GLdouble, Size, Size> cofactors(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix);
+static T frexp(T val, glw::GLint& exp)
+{
+ return ::frexp(val, &exp);
+}
template <int Size>
-static tcu::Vector<glw::GLuint, Size> convertBvecToUvec(const tcu::Vector<bool, Size>& src);
-
-template <typename T>
-static T determinant(T val);
-
-template <typename T>
-static T determinant(const tcu::Matrix<T, 2, 2>& mat);
-
-template <typename T>
-static T determinant(const tcu::Matrix<T, 3, 3>& mat);
-
-template <typename T>
-static T determinant(const tcu::Matrix<T, 4, 4>& mat);
+static tcu::Vector<glw::GLuint, Size> greaterThan(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right)
+{
+ return convertBvecToUvec(tcu::greaterThan(left, right));
+}
template <int Size>
-static tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> eliminate(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix,
- glw::GLuint column, glw::GLuint row);
+static tcu::Vector<glw::GLuint, Size> greaterThanEqual(const tcu::Vector<glw::GLdouble, Size>& left,
+ const tcu::Vector<glw::GLdouble, Size>& right)
+{
+ return convertBvecToUvec(tcu::greaterThanEqual(left, right));
+}
template <int Size>
-static tcu::Vector<glw::GLuint, Size> equal(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right);
-
-static glw::GLdouble fma(glw::GLdouble a, glw::GLdouble b, glw::GLdouble c);
-
-static glw::GLdouble fract(glw::GLdouble val);
+static tcu::Matrix<glw::GLdouble, Size, Size> inverse(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix)
+{
+ const tcu::Matrix<glw::GLdouble, Size, Size> cof = cofactors(matrix);
+ const tcu::Matrix<glw::GLdouble, Size, Size> adjugate = tcu::transpose(cof);
+ const glw::GLdouble det = determinant(matrix);
+ const glw::GLdouble inv_det = 1.0 / det;
-template <typename T>
-static T frexp(T val, glw::GLint& exp);
+ tcu::Matrix<glw::GLdouble, Size, Size> result = adjugate * inv_det;
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> greaterThan(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right);
+ return result;
+}
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> greaterThanEqual(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right);
+static glw::GLdouble inverseSqrt(glw::GLdouble val)
+{
+ const glw::GLdouble root = sqrt(val);
-template <int Size>
-static tcu::Matrix<glw::GLdouble, Size, Size> inverse(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix);
+ return (1.0 / root);
+}
-static glw::GLdouble inverseSqrt(glw::GLdouble val);
+static glw::GLuint isinf_impl(glw::GLdouble val)
+{
+ const glw::GLdouble infinity = std::numeric_limits<glw::GLdouble>::infinity();
-static glw::GLuint isinf_impl(glw::GLdouble val);
+ return ((infinity == val) || (-infinity == val));
+}
-static glw::GLuint isnan_impl(glw::GLdouble val);
+static glw::GLuint isnan_impl(glw::GLdouble val)
+{
+ return val != val;
+}
template <typename T>
-static T ldexp(T val, glw::GLint exp);
+static T ldexp(T val, glw::GLint exp)
+{
+ return ::ldexp(val, exp);
+}
template <int Size>
static tcu::Vector<glw::GLuint, Size> lessThan(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right);
+ const tcu::Vector<glw::GLdouble, Size>& right)
+{
+ return convertBvecToUvec(tcu::lessThan(left, right));
+}
template <int Size>
static tcu::Vector<glw::GLuint, Size> lessThanEqual(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right);
+ const tcu::Vector<glw::GLdouble, Size>& right)
+{
+ return convertBvecToUvec(tcu::lessThanEqual(left, right));
+}
template <typename T>
-static T max(T left, T right);
+static T max(T left, T right)
+{
+ return (left >= right) ? left : right;
+}
template <typename T>
-static T min(T left, T right);
+static T min(T left, T right)
+{
+ return (left <= right) ? left : right;
+}
template <int Size>
static glw::GLdouble minor_impl(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix, glw::GLuint column,
- glw::GLuint row);
+ glw::GLuint row)
+{
+ tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> eliminated = eliminate(matrix, column, row);
+
+ return determinant(eliminated);
+}
+
+template <>
+glw::GLdouble minor_impl<2>(const tcu::Matrix<glw::GLdouble, 2, 2>& matrix, glw::GLuint column, glw::GLuint row)
+{
+ const glw::GLuint r = (0 == row) ? 1 : 0;
+ const glw::GLuint c = (0 == column) ? 1 : 0;
+
+ return matrix(r, c);
+}
template <typename T>
-static T mix(T left, T right, T weight);
+static T mix(T left, T right, T weight)
+{
+ return left * (1 - weight) + right * (weight);
+}
template <typename T>
-static T mod(T left, T right);
+static T mod(T left, T right)
+{
+ const T div_res = left / right;
+ const T floored = floor(div_res);
+
+ return left - right * floored;
+}
template <typename T>
-static T modf(T val, T& integer);
+static T modf(T val, T& integer)
+{
+ return ::modf(val, &integer);
+}
template <typename T>
-static T multiply(T left, T right);
+static T multiply(T left, T right)
+{
+ T result = left * right;
+
+ return result;
+}
template <int Size>
static tcu::Vector<glw::GLuint, Size> notEqual(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right);
+ const tcu::Vector<glw::GLdouble, Size>& right)
+{
+ return convertBvecToUvec(tcu::notEqual(left, right));
+}
template <int Cols, int Rows>
static tcu::Matrix<glw::GLdouble, Rows, Cols> outerProduct(const tcu::Vector<glw::GLdouble, Rows>& left,
- const tcu::Vector<glw::GLdouble, Cols>& right);
-
-static glw::GLdouble packDouble2x32(const tcu::UVec2& in);
+ const tcu::Vector<glw::GLdouble, Cols>& right)
+{
+ tcu::Matrix<glw::GLdouble, Rows, 1> left_mat;
+ tcu::Matrix<glw::GLdouble, 1, Cols> right_mat;
+ tcu::Matrix<glw::GLdouble, Rows, Cols> result;
-template <typename T>
-static T round(T t);
+ for (glw::GLuint i = 0; i < Rows; ++i)
+ {
+ left_mat(i, 0) = left[i];
+ }
-template <typename T>
-static T roundEven(T t);
-
-template <typename T>
-static T sign(T t);
-
-template <typename T>
-static T smoothStep(T e0, T e1, T val);
-
-template <typename T>
-static T step(T edge, T val);
-
-template <typename T, int Rows, int Cols>
-static tcu::Matrix<T, Cols, Rows> transpose(const tcu::Matrix<T, Rows, Cols>& matrix);
+ for (glw::GLuint i = 0; i < Cols; ++i)
+ {
+ right_mat(0, i) = right[i];
+ }
-template <typename T>
-static T trunc(T t);
+ result = left_mat * right_mat;
-static tcu::UVec2 unpackDouble2x32(const glw::GLdouble& val);
+ return result;
+}
-template <typename T>
-static T clamp(T x, T minVal, T maxVal)
+static glw::GLdouble packDouble2x32(const tcu::UVec2& in)
{
- return min(max(x, minVal), maxVal);
+ const glw::GLuint buffer[2] = { in[0], in[1] };
+ glw::GLdouble result;
+ memcpy(&result, buffer, sizeof(result));
+ return result;
}
-template <int Size>
-static tcu::Matrix<glw::GLdouble, Size, Size> cofactors(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix)
+template <typename T>
+static T round(T t)
{
- tcu::Matrix<glw::GLdouble, Size, Size> result;
+ T frac = fract(t);
+ T res = t - frac;
- for (glw::GLuint c = 0; c < Size; ++c)
+ if (((T)0.5) < frac)
{
- for (glw::GLuint r = 0; r < Size; ++r)
- {
- const glw::GLdouble minor_value = minor_impl(matrix, c, r);
-
- result(r, c) = (1 == (c + r) % 2) ? -minor_value : minor_value;
- }
+ res += ((T)1.0);
}
- return result;
+ return res;
}
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> convertBvecToUvec(const tcu::Vector<bool, Size>& src)
+template <typename T>
+static T roundEven(T t)
{
- tcu::Vector<glw::GLuint, Size> result;
+ T frac = fract(t);
+ T res = t - frac;
- for (glw::GLint i = 0; i < Size; ++i)
+ if (((T)0.5) < frac)
{
- if (GL_FALSE != src[i])
- {
- result[i] = 1;
- }
- else
- {
- result[i] = 0;
- }
+ res += ((T)1.0);
+ }
+ else if ((((T)0.5) == frac) && (0 != ((int)res) % 2))
+ {
+ res += ((T)1.0);
}
- return result;
+ return res;
}
template <typename T>
-static T det2(T _00, T _10, T _01, T _11)
+static T sign(T t)
{
- return _00 * _11 - _01 * _10;
+ if (0 > t)
+ {
+ return -1;
+ }
+ else if (0 == t)
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
}
template <typename T>
-static T det3(T _00, T _10, T _20, T _01, T _11, T _21, T _02, T _12, T _22)
+static T smoothStep(T e0, T e1, T val)
{
- return _00 * det2(_11, _21, _12, _22) - _10 * det2(_01, _21, _02, _22) + _20 * det2(_01, _11, _02, _12);
+ if (e0 >= val)
+ {
+ return 0;
+ }
+
+ if (e1 <= val)
+ {
+ return 1;
+ }
+
+ T temp = (val - e0) / (e1 - e0);
+
+ T result = temp * temp * (3 - 2 * temp);
+
+ return result;
}
template <typename T>
-static T det4(T _00, T _10, T _20, T _30, T _01, T _11, T _21, T _31, T _02, T _12, T _22, T _32, T _03, T _13, T _23,
- T _33)
+static T step(T edge, T val)
{
- return _00 * det3(_11, _21, _31, _12, _22, _32, _13, _23, _33) -
- _10 * det3(_01, _21, _31, _02, _22, _32, _03, _23, _33) +
- _20 * det3(_01, _11, _31, _02, _12, _32, _03, _13, _33) -
- _30 * det3(_01, _11, _21, _02, _12, _22, _03, _13, _23);
+ if (edge > val)
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
}
-template <typename T>
-static T determinant(T val)
+template <typename T, int Rows, int Cols>
+static tcu::Matrix<T, Cols, Rows> transpose(const tcu::Matrix<T, Rows, Cols>& matrix)
{
- return val;
+ tcu::Matrix<T, Cols, Rows> result = tcu::transpose(matrix);
+
+ return result;
}
template <typename T>
-static T determinant(const tcu::Matrix<T, 2, 2>& mat)
+static T trunc(T t)
{
- return det2(mat(0, 0), mat(0, 1), mat(1, 0), mat(1, 1));
+ const T abs_value = de::abs(t);
+ const T result_value = floor(abs_value);
+
+ const T result = sign(t) * result_value;
+
+ return result;
}
-template <typename T>
-static T determinant(const tcu::Matrix<T, 3, 3>& mat)
+static tcu::UVec2 unpackDouble2x32(const glw::GLdouble& val)
{
- return det3(mat(0, 0), mat(0, 1), mat(0, 2), mat(1, 0), mat(1, 1), mat(1, 2), mat(2, 0), mat(2, 1), mat(2, 2));
+ glw::GLuint* ptr = (glw::GLuint*)&val;
+ tcu::UVec2 result(ptr[0], ptr[1]);
+
+ return result;
}
+} /* Math */
-template <typename T>
-static T determinant(const tcu::Matrix<T, 4, 4>& mat)
+/** Enumeration of tested functions
+ * *_AGAINT_SCALAR enums are used to call glsl function with mixed scalar and genDType arguments.
+ * For example "max" can be called for (dvec3, double).
+ **/
+enum FunctionEnum
+{
+ FUNCTION_ABS = 0,
+ FUNCTION_CEIL,
+ FUNCTION_CLAMP,
+ FUNCTION_CLAMP_AGAINST_SCALAR,
+ FUNCTION_CROSS,
+ FUNCTION_DETERMINANT,
+ FUNCTION_DISTANCE,
+ FUNCTION_DOT,
+ FUNCTION_EQUAL,
+ FUNCTION_FACEFORWARD,
+ FUNCTION_FLOOR,
+ FUNCTION_FMA,
+ FUNCTION_FRACT,
+ FUNCTION_FREXP,
+ FUNCTION_GREATERTHAN,
+ FUNCTION_GREATERTHANEQUAL,
+ FUNCTION_INVERSE,
+ FUNCTION_INVERSESQRT,
+ FUNCTION_LDEXP,
+ FUNCTION_LESSTHAN,
+ FUNCTION_LESSTHANEQUAL,
+ FUNCTION_LENGTH,
+ FUNCTION_MATRIXCOMPMULT,
+ FUNCTION_MAX,
+ FUNCTION_MAX_AGAINST_SCALAR,
+ FUNCTION_MIN,
+ FUNCTION_MIN_AGAINST_SCALAR,
+ FUNCTION_MIX,
+ FUNCTION_MOD,
+ FUNCTION_MOD_AGAINST_SCALAR,
+ FUNCTION_MODF,
+ FUNCTION_NORMALIZE,
+ FUNCTION_NOTEQUAL,
+ FUNCTION_OUTERPRODUCT,
+ FUNCTION_PACKDOUBLE2X32,
+ FUNCTION_REFLECT,
+ FUNCTION_REFRACT,
+ FUNCTION_ROUND,
+ FUNCTION_ROUNDEVEN,
+ FUNCTION_SIGN,
+ FUNCTION_SMOOTHSTEP,
+ FUNCTION_SMOOTHSTEP_AGAINST_SCALAR,
+ FUNCTION_SQRT,
+ FUNCTION_STEP,
+ FUNCTION_STEP_AGAINST_SCALAR,
+ FUNCTION_TRANSPOSE,
+ FUNCTION_TRUNC,
+ FUNCTION_UNPACKDOUBLE2X32,
+ FUNCTION_ISNAN,
+ FUNCTION_ISINF,
+};
+
+struct TypeDefinition
{
- return det4(mat(0, 0), mat(0, 1), mat(0, 2), mat(0, 3), mat(1, 0), mat(1, 1), mat(1, 2), mat(1, 3), mat(2, 0),
- mat(2, 1), mat(2, 2), mat(2, 3), mat(3, 0), mat(3, 1), mat(3, 2), mat(3, 3));
-}
+ std::string name;
+ glw::GLuint n_columns;
+ glw::GLuint n_rows;
+};
-template <int Size>
-static tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> eliminate(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix,
- glw::GLuint column, glw::GLuint row)
+/** Implementation of BuiltinFunctionTest test, description follows:
+ *
+ * Verify double-precision support in common functions works correctly.
+ * All double-precision types that apply for particular cases should
+ * be tested for the following functions:
+ *
+ * - abs();
+ * - ceil();
+ * - clamp();
+ * - cross();
+ * - determinant();
+ * - distance();
+ * - dot();
+ * - equal();
+ * - faceforward();
+ * - floor();
+ * - fma();
+ * - fract();
+ * - frexp();
+ * - greaterThan();
+ * - greaterThanEqual();
+ * - inverse();
+ * - inversesqrt();
+ * - ldexp();
+ * - lessThan();
+ * - lessThanEqual();
+ * - length();
+ * - matrixCompMult();
+ * - max();
+ * - min();
+ * - mix();
+ * - mod();
+ * - modf();
+ * - normalize();
+ * - notEqual();
+ * - outerProduct();
+ * - packDouble2x32();
+ * - reflect();
+ * - refract();
+ * - round();
+ * - roundEven();
+ * - sign();
+ * - smoothstep();
+ * - sqrt();
+ * - step();
+ * - transpose();
+ * - trunc();
+ * - unpackDouble2x32();
+ * - isnan();
+ * - isinf();
+ *
+ * The test should work by creating a program object (for each case
+ * considered), to which a vertex shader should be attached. The
+ * shader should define input variables that should be used as
+ * arguments for the function in question. The result of the
+ * operation should then be XFBed back to the test, where the
+ * value should be verified.
+ *
+ * Reference function implementation from pre-DEQP CTS framework
+ * should be ported to C for verification purposes where available.
+ *
+ * The test should use 1024 different scalar/vector/matrix argument
+ * combinations. It should pass if all functions are determined
+ * to work correctly for all argument combinations used.
+ **/
+class BuiltinFunctionTest : public deqp::TestCase
{
- tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> result;
+public:
+ /* Public methods */
+ BuiltinFunctionTest(deqp::Context& context, std::string caseName, FunctionEnum function,
+ TypeDefinition typeDefinition);
- for (glw::GLuint c = 0; c < Size; ++c)
+ virtual void deinit();
+ virtual tcu::TestNode::IterateResult iterate();
+
+ /** Base class of functionObject. Main goal of it is to keep function details toghether and hide calling code.
+ *
+ **/
+ class functionObject
+ {
+ public:
+ functionObject(FunctionEnum function_enum, const glw::GLchar* function_name, glw::GLvoid* function_pointer,
+ Utils::_variable_type result_type);
+
+ virtual ~functionObject()
+ {
+ }
+
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const = 0;
+
+ virtual glw::GLuint getArgumentCount() const = 0;
+ virtual Utils::_variable_type getArgumentType(glw::GLuint argument) const = 0;
+ glw::GLuint getArgumentComponents(glw::GLuint argument) const;
+ glw::GLuint getArgumentComponentSize(glw::GLuint argument) const;
+ glw::GLuint getArgumentOffset(glw::GLuint argument) const;
+ glw::GLuint getArgumentStride() const;
+ glw::GLuint getArgumentStride(glw::GLuint argument) const;
+ FunctionEnum getFunctionEnum() const;
+ const glw::GLchar* getName() const;
+ glw::GLuint getResultComponents(glw::GLuint result) const;
+ virtual glw::GLuint getResultCount() const;
+ glw::GLuint getResultOffset(glw::GLuint result) const;
+ virtual Utils::_variable_type getResultType(glw::GLuint result) const;
+ glw::GLuint getResultStride(glw::GLuint result) const;
+ glw::GLuint getBaseTypeSize(glw::GLuint result) const;
+ glw::GLuint getResultStride() const;
+
+ protected:
+ const FunctionEnum m_function_enum;
+ const glw::GLchar* m_function_name;
+ const glw::GLvoid* m_p_function;
+ const Utils::_variable_type m_res_type;
+ };
+
+private:
+ /* Private types */
+ /** General type enumeration
+ *
+ **/
+ enum generalType
{
- /* Skip eliminated column */
- if (column == c)
- {
- continue;
- }
+ SCALAR = 0,
+ VECTOR,
+ MATRIX,
+ };
- for (glw::GLuint r = 0; r < Size; ++r)
- {
- /* Skip eliminated row */
- if (row == r)
- {
- continue;
- }
+ /** Details of variable type
+ *
+ **/
+ struct typeDetails
+ {
+ typeDetails(glw::GLuint n_columns, glw::GLuint n_rows);
- const glw::GLint r_offset = (r > row) ? -1 : 0;
- const glw::GLint c_offset = (c > column) ? -1 : 0;
+ generalType m_general_type;
+ glw::GLuint m_n_columns;
+ glw::GLuint m_n_rows;
+ glw::GLenum m_type;
+ std::string m_type_name;
+ };
- result(r + r_offset, c + c_offset) = matrix(r, c);
- }
- }
+ /* Typedefs for gl.uniform* function pointers */
+ typedef GLW_APICALL void(GLW_APIENTRY* uniformDMatFunctionPointer)(glw::GLint, glw::GLsizei, glw::GLboolean,
+ const glw::GLdouble*);
+ typedef GLW_APICALL void(GLW_APIENTRY* uniformDVecFunctionPointer)(glw::GLint, glw::GLsizei, const glw::GLdouble*);
+ typedef GLW_APICALL void(GLW_APIENTRY* uniformIVecFunctionPointer)(glw::GLint, glw::GLsizei, const glw::GLint*);
+ typedef GLW_APICALL void(GLW_APIENTRY* uniformUVecFunctionPointer)(glw::GLint, glw::GLsizei, const glw::GLuint*);
- return result;
-}
+ /* Private methods */
+ bool compare(Utils::_variable_type type, const glw::GLvoid* left, const glw::GLvoid* right);
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> equal(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right)
-{
- return convertBvecToUvec(tcu::equal(left, right));
-}
+ functionObject* getFunctionObject(FunctionEnum function, const typeDetails& type);
-static glw::GLdouble fma(glw::GLdouble a, glw::GLdouble b, glw::GLdouble c)
-{
- return a * b + c;
-}
+ uniformDMatFunctionPointer getUniformFunctionForDMat(glw::GLuint argument,
+ const functionObject& function_object) const;
-static glw::GLdouble fract(glw::GLdouble val)
-{
- return val - floor(val);
-}
+ uniformDVecFunctionPointer getUniformFunctionForDVec(glw::GLuint argument,
+ const functionObject& function_object) const;
-template <typename T>
-static T frexp(T val, glw::GLint& exp)
-{
- return ::frexp(val, &exp);
-}
+ uniformIVecFunctionPointer getUniformFunctionForIVec(glw::GLuint argument,
+ const functionObject& function_object) const;
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> greaterThan(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right)
-{
- return convertBvecToUvec(tcu::greaterThan(left, right));
-}
+ uniformUVecFunctionPointer getUniformFunctionForUVec(glw::GLuint argument,
+ const functionObject& function_object) const;
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> greaterThanEqual(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right)
-{
- return convertBvecToUvec(tcu::greaterThanEqual(left, right));
-}
+ const glw::GLchar* getUniformName(glw::GLuint argument) const;
+ const glw::GLchar* getVaryingName(glw::GLuint argument) const;
-template <int Size>
-static tcu::Matrix<glw::GLdouble, Size, Size> inverse(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix)
-{
- const tcu::Matrix<glw::GLdouble, Size, Size> cof = cofactors(matrix);
- const tcu::Matrix<glw::GLdouble, Size, Size> adjugate = tcu::transpose(cof);
- const glw::GLdouble det = determinant(matrix);
- const glw::GLdouble inv_det = 1.0 / det;
+ bool isFunctionImplemented(FunctionEnum function, const typeDetails& type) const;
- tcu::Matrix<glw::GLdouble, Size, Size> result = adjugate * inv_det;
+ void logVariableType(const glw::GLvoid* buffer, const glw::GLchar* name, Utils::_variable_type type) const;
- return result;
-}
+ void prepareArgument(const functionObject& function_object, glw::GLuint vertex, glw::GLubyte* buffer);
-static glw::GLdouble inverseSqrt(glw::GLdouble val)
-{
- const glw::GLdouble root = sqrt(val);
+ void prepareComponents(const functionObject& function_object, glw::GLuint vertex, glw::GLuint argument,
+ glw::GLubyte* buffer);
- return (1.0 / root);
-}
+ void prepareProgram(const functionObject& function_object, Utils::programInfo& program_info);
-static glw::GLuint isinf_impl(glw::GLdouble val)
-{
- const glw::GLdouble infinity = std::numeric_limits<glw::GLdouble>::infinity();
+ void prepareTestData(const functionObject& function_object);
+ void prepareVertexShaderCode(const functionObject& function_object);
- return ((infinity == val) || (-infinity == val));
-}
+ bool test(FunctionEnum function, const typeDetails& type);
-static glw::GLuint isnan_impl(glw::GLdouble val)
-{
- return val != val;
-}
+ void testBegin(const functionObject& function_object, glw::GLuint program_id, glw::GLuint vertex);
-template <typename T>
-static T ldexp(T val, glw::GLint exp)
-{
- return ::ldexp(val, exp);
-}
+ void testInit();
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> lessThan(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right)
-{
- return convertBvecToUvec(tcu::lessThan(left, right));
-}
+ bool verifyResults(const functionObject& function_object, glw::GLuint vertex);
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> lessThanEqual(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right)
+ /* Private constants */
+ static const glw::GLdouble m_epsilon;
+ static const glw::GLuint m_n_veritces;
+
+ /* Private fields */
+ glw::GLuint m_transform_feedback_buffer_id;
+ glw::GLuint m_vertex_array_object_id;
+
+ std::vector<glw::GLubyte> m_expected_results_data;
+ FunctionEnum m_function;
+ TypeDefinition m_typeDefinition;
+ std::vector<glw::GLubyte> m_argument_data;
+ std::string m_vertex_shader_code;
+};
+
+/* Constants used by BuiltinFunctionTest */
+/** Khronos Bug #14010
+ * Using an epsilon value for comparing floating points is error prone.
+ * Rather than writing a new floating point comparison function, I am
+ * increasing the epsilon value to allow greater orders of magnitude
+ * of floating point values.
+ **/
+const glw::GLdouble BuiltinFunctionTest::m_epsilon = 0.00002;
+const glw::GLuint BuiltinFunctionTest::m_n_veritces = 1024;
+
+/** Implementations of function objects required by "BuiltinFunctionTest"
+ *
+ **/
+namespace FunctionObject
{
- return convertBvecToUvec(tcu::lessThanEqual(left, right));
-}
+/** Maps variable type with enumeration Utils::_variable_type
+ *
+ * @tparam T type
+ **/
+template <typename T>
+class typeInfo
+{
+public:
+ static const Utils::_variable_type variable_type =
+ TypeHelpers::typeInfo<typename TypeHelpers::referenceToType<T>::result>::variable_type;
+};
+/** Place data from <in> into <buffer>
+ *
+ * @param buffer Buffer
+ * @param in Input data
+ **/
template <typename T>
-static T max(T left, T right)
+class pack
{
- return (left >= right) ? left : right;
-}
+public:
+ static void set(glw::GLvoid* buffer, const T& in)
+ {
+ *(T*)buffer = in;
+ }
+};
+/** Place tcu::Matrix data from <in> into <buffer>
+ *
+ * @param buffer Buffer
+ * @param in Input data
+ **/
+template <int Cols, int Rows>
+class pack<tcu::Matrix<glw::GLdouble, Rows, Cols> >
+{
+public:
+ static void set(glw::GLvoid* buffer, const tcu::Matrix<glw::GLdouble, Rows, Cols>& in)
+ {
+ glw::GLdouble* data = (glw::GLdouble*)buffer;
+
+ for (glw::GLint column = 0; column < Cols; ++column)
+ {
+ for (glw::GLint row = 0; row < Rows; ++row)
+ {
+ glw::GLint index = column * Rows + row;
+
+ data[index] = in(row, column);
+ }
+ }
+ }
+};
+
+/** Get data of <out> from <buffer>
+ *
+ * @param buffer Buffer
+ * @param out Output data
+ **/
template <typename T>
-static T min(T left, T right)
+class unpack
{
- return (left <= right) ? left : right;
-}
+public:
+ static void get(const glw::GLvoid* buffer, T& out)
+ {
+ out = *(T*)buffer;
+ }
+};
-template <int Size>
-static glw::GLdouble minor_impl(const tcu::Matrix<glw::GLdouble, Size, Size>& matrix, glw::GLuint column,
- glw::GLuint row)
+/** Get tcu::Matrix data from <buffer>
+ *
+ * @param buffer Buffer
+ * @param out Output data
+ **/
+template <int Cols, int Rows>
+class unpack<tcu::Matrix<glw::GLdouble, Rows, Cols> >
{
- tcu::Matrix<glw::GLdouble, Size - 1, Size - 1> eliminated = eliminate(matrix, column, row);
+public:
+ static void get(const glw::GLvoid* buffer, tcu::Matrix<glw::GLdouble, Rows, Cols>& out)
+ {
+ const glw::GLdouble* data = (glw::GLdouble*)buffer;
- return determinant(eliminated);
-}
+ for (glw::GLint column = 0; column < Cols; ++column)
+ {
+ for (glw::GLint row = 0; row < Rows; ++row)
+ {
+ glw::GLint index = column * Rows + row;
-template <>
-glw::GLdouble minor_impl<2>(const tcu::Matrix<glw::GLdouble, 2, 2>& matrix, glw::GLuint column, glw::GLuint row)
+ out(row, column) = data[index];
+ }
+ }
+ }
+};
+
+/** Base of unary function classes
+ *
+ **/
+class unaryBase : public BuiltinFunctionTest::functionObject
{
- const glw::GLuint r = (0 == row) ? 1 : 0;
- const glw::GLuint c = (0 == column) ? 1 : 0;
+public:
+ unaryBase(FunctionEnum function_enum, const glw::GLchar* function_name, glw::GLvoid* function_pointer,
+ const Utils::_variable_type res_type, const Utils::_variable_type arg_type)
+ : functionObject(function_enum, function_name, function_pointer, res_type), m_arg_type(arg_type)
+ {
+ }
- return matrix(r, c);
-}
+ virtual glw::GLuint getArgumentCount() const
+ {
+ return 1;
+ }
-template <typename T>
-static T mix(T left, T right, T weight)
+ virtual Utils::_variable_type getArgumentType(glw::GLuint /* argument */) const
+ {
+ return m_arg_type;
+ }
+
+protected:
+ const Utils::_variable_type m_arg_type;
+};
+
+/** Unary function class. It treats input argument as one variable.
+ *
+ * @tparam ResT Type of result
+ * @tparam ArgT Type of argument
+ **/
+template <typename ResT, typename ArgT>
+class unary : public unaryBase
{
- return left * (1 - weight) + right * (weight);
-}
+public:
+ typedef ResT (*functionPointer)(const ArgT&);
-template <typename T>
-static T mod(T left, T right)
+ unary(FunctionEnum function_enum, const glw::GLchar* function_name, functionPointer function_pointer)
+ : unaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, typeInfo<ResT>::variable_type,
+ typeInfo<ArgT>::variable_type)
+ {
+ }
+
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
+ {
+ ResT result;
+ ArgT arg;
+
+ unpack<ArgT>::get(argument_src, arg);
+
+ functionPointer p_function = (functionPointer)m_p_function;
+
+ result = p_function(arg);
+
+ pack<ResT>::set(result_dst, result);
+ }
+};
+
+/** Unary function class. It treats input argument as separate components.
+ *
+ * @tparam ResT Type of result
+ **/
+template <typename ResT>
+class unaryByComponent : public unaryBase
{
- const T div_res = left / right;
- const T floored = floor(div_res);
+public:
+ typedef ResT (*functionPointer)(glw::GLdouble);
- return left - right * floored;
-}
+ unaryByComponent(FunctionEnum function_enum, const glw::GLchar* function_name, functionPointer function_pointer,
+ const Utils::_variable_type res_type, const Utils::_variable_type arg_type)
+ : unaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_type)
+ {
+ }
-template <typename T>
-static T modf(T val, T& integer)
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
+ {
+ glw::GLuint n_components = Utils::getNumberOfComponentsForVariableType(m_arg_type);
+ ResT* p_result = (ResT*)result_dst;
+ glw::GLdouble* p_arg = (glw::GLdouble*)argument_src;
+
+ functionPointer p_function = (functionPointer)m_p_function;
+
+ for (glw::GLuint component = 0; component < n_components; ++component)
+ {
+ p_result[component] = p_function(p_arg[component]);
+ }
+ }
+};
+
+/** Class of functions with one input and one output parameter. It treats arguments as separate components.
+ *
+ * @tparam ResT Type of result
+ * @tparam ArgT Type of argument
+ * @tparam OutT Type of output parameter
+ **/
+template <typename ResT, typename ArgT, typename OutT>
+class unaryWithOutputByComponent : public unaryBase
{
- return ::modf(val, &integer);
-}
+public:
+ typedef ResT (*functionPointer)(ArgT, OutT&);
-template <typename T>
-static T multiply(T left, T right)
+ unaryWithOutputByComponent(FunctionEnum function_enum, const glw::GLchar* function_name,
+ functionPointer function_pointer, const Utils::_variable_type res_type,
+ const Utils::_variable_type arg_type, const Utils::_variable_type out_type)
+ : unaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_type)
+ , m_out_type(out_type)
+ {
+ }
+
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
+ {
+ ResT* p_result = (ResT*)result_dst;
+ OutT* p_out = (OutT*)((glw::GLubyte*)result_dst + getResultOffset(1));
+ ArgT* p_arg = (ArgT*)argument_src;
+
+ const glw::GLuint n_components_0 = getArgumentComponents(0);
+ const glw::GLuint n_components_1 = getResultComponents(1);
+ const glw::GLuint n_components = de::max(n_components_0, n_components_1);
+
+ const glw::GLuint component_step_0 = (1 == n_components_0) ? 0 : 1;
+ const glw::GLuint component_step_1 = (1 == n_components_1) ? 0 : 1;
+
+ functionPointer p_function = (functionPointer)m_p_function;
+
+ for (glw::GLuint component = 0; component < n_components; ++component)
+ {
+ const ArgT first_arg = p_arg[component * component_step_0];
+ OutT& second_arg = p_out[component * component_step_1];
+
+ p_result[component] = p_function(first_arg, second_arg);
+ }
+ }
+
+ glw::GLuint getResultCount() const
+ {
+ return 2;
+ }
+
+ Utils::_variable_type getResultType(glw::GLuint result) const
+ {
+ Utils::_variable_type type = Utils::VARIABLE_TYPE_UNKNOWN;
+
+ switch (result)
+ {
+ case 0:
+ type = m_res_type;
+ break;
+ case 1:
+ type = m_out_type;
+ break;
+ default:
+ TCU_FAIL("Not implemented");
+ break;
+ }
+
+ return type;
+ }
+
+protected:
+ const Utils::_variable_type m_out_type;
+};
+
+/** Base of binary function classes.
+ *
+ **/
+class binaryBase : public BuiltinFunctionTest::functionObject
{
- T result = left * right;
+public:
+ binaryBase(FunctionEnum function_enum, const glw::GLchar* function_name, glw::GLvoid* function_pointer,
+ const Utils::_variable_type res_type, const Utils::_variable_type arg_1_type,
+ const Utils::_variable_type arg_2_type)
+ : functionObject(function_enum, function_name, function_pointer, res_type)
+ , m_arg_1_type(arg_1_type)
+ , m_arg_2_type(arg_2_type)
+ {
+ }
- return result;
-}
+ virtual glw::GLuint getArgumentCount() const
+ {
+ return 2;
+ }
-template <int Size>
-static tcu::Vector<glw::GLuint, Size> notEqual(const tcu::Vector<glw::GLdouble, Size>& left,
- const tcu::Vector<glw::GLdouble, Size>& right)
+ virtual Utils::_variable_type getArgumentType(glw::GLuint argument) const
+ {
+ switch (argument)
+ {
+ case 0:
+ return m_arg_1_type;
+ break;
+ case 1:
+ return m_arg_2_type;
+ break;
+ default:
+ return Utils::VARIABLE_TYPE_UNKNOWN;
+ break;
+ }
+ }
+
+protected:
+ const Utils::_variable_type m_arg_1_type;
+ const Utils::_variable_type m_arg_2_type;
+};
+
+/** Binary function class. It treats input arguments as two variables.
+ *
+ * @param ResT Type of result
+ * @param Arg1T Type of first argument
+ * @param Arg2T Type of second argument
+ **/
+template <typename ResT, typename Arg1T, typename Arg2T>
+class binary : public binaryBase
{
- return convertBvecToUvec(tcu::notEqual(left, right));
-}
+public:
+ typedef ResT (*functionPointer)(const Arg1T&, const Arg2T&);
-template <int Cols, int Rows>
-static tcu::Matrix<glw::GLdouble, Rows, Cols> outerProduct(const tcu::Vector<glw::GLdouble, Rows>& left,
- const tcu::Vector<glw::GLdouble, Cols>& right)
+ binary(FunctionEnum function_enum, const glw::GLchar* function_name, functionPointer function_pointer)
+ : binaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, typeInfo<ResT>::variable_type,
+ typeInfo<Arg1T>::variable_type, typeInfo<Arg2T>::variable_type)
+ {
+ }
+
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
+ {
+ const glw::GLuint argument_1_stride = getArgumentStride(0);
+
+ functionPointer p_function = (functionPointer)m_p_function;
+
+ Arg1T arg_1;
+ Arg2T arg_2;
+ ResT result;
+
+ unpack<Arg1T>::get(argument_src, arg_1);
+ unpack<Arg2T>::get((glw::GLubyte*)argument_src + argument_1_stride, arg_2);
+
+ result = p_function(arg_1, arg_2);
+
+ pack<ResT>::set(result_dst, result);
+ }
+};
+
+/** Binary function class. It treats input arguments as separate components.
+ *
+ * @param ResT Type of result
+ * @param Arg1T Type of first argument
+ * @param Arg2T Type of second argument
+ **/
+template <typename ResT, typename Arg1T, typename Arg2T>
+class binaryByComponent : public binaryBase
{
- tcu::Matrix<glw::GLdouble, Rows, 1> left_mat;
- tcu::Matrix<glw::GLdouble, 1, Cols> right_mat;
- tcu::Matrix<glw::GLdouble, Rows, Cols> result;
+public:
+ typedef ResT (*functionPointer)(Arg1T, Arg2T);
- for (glw::GLuint i = 0; i < Rows; ++i)
+ binaryByComponent(FunctionEnum function_enum, const glw::GLchar* function_name, functionPointer function_pointer,
+ const Utils::_variable_type res_type, const Utils::_variable_type arg_1_type,
+ const Utils::_variable_type arg_2_type)
+ : binaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_1_type, arg_2_type)
{
- left_mat(i, 0) = left[i];
}
- for (glw::GLuint i = 0; i < Cols; ++i)
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
{
- right_mat(0, i) = right[i];
- }
+ ResT* p_result = (ResT*)result_dst;
+ Arg1T* p_arg_1 = (Arg1T*)argument_src;
+ Arg2T* p_arg_2 = (Arg2T*)((glw::GLubyte*)argument_src + getArgumentOffset(1));
- result = left_mat * right_mat;
+ const glw::GLuint n_components_0 = getArgumentComponents(0);
+ const glw::GLuint n_components_1 = getArgumentComponents(1);
+ const glw::GLuint n_components = de::max(n_components_0, n_components_1);
- return result;
-}
+ const glw::GLuint component_step_0 = (1 == n_components_0) ? 0 : 1;
+ const glw::GLuint component_step_1 = (1 == n_components_1) ? 0 : 1;
-static glw::GLdouble packDouble2x32(const tcu::UVec2& in)
-{
- const glw::GLuint buffer[2] = { in[0], in[1] };
- glw::GLdouble result;
- memcpy(&result, buffer, sizeof(result));
- return result;
-}
+ functionPointer p_function = (functionPointer)m_p_function;
-template <typename T>
-static T round(T t)
-{
- T frac = fract(t);
- T res = t - frac;
+ for (glw::GLuint component = 0; component < n_components; ++component)
+ {
+ const Arg1T first_arg = p_arg_1[component * component_step_0];
+ const Arg2T second_arg = p_arg_2[component * component_step_1];
- if (((T)0.5) < frac)
- {
- res += ((T)1.0);
+ p_result[component] = p_function(first_arg, second_arg);
+ }
}
+};
- return res;
-}
-
-template <typename T>
-static T roundEven(T t)
+/** Base of tenary function classes.
+ *
+ **/
+class tenaryBase : public BuiltinFunctionTest::functionObject
{
- T frac = fract(t);
- T res = t - frac;
-
- if (((T)0.5) < frac)
- {
- res += ((T)1.0);
- }
- else if ((((T)0.5) == frac) && (0 != ((int)res) % 2))
+public:
+ tenaryBase(FunctionEnum function_enum, const glw::GLchar* function_name, glw::GLvoid* function_pointer,
+ const Utils::_variable_type res_type, const Utils::_variable_type arg_1_type,
+ const Utils::_variable_type arg_2_type, const Utils::_variable_type arg_3_type)
+ : functionObject(function_enum, function_name, function_pointer, res_type)
+ , m_arg_1_type(arg_1_type)
+ , m_arg_2_type(arg_2_type)
+ , m_arg_3_type(arg_3_type)
{
- res += ((T)1.0);
}
- return res;
-}
-
-template <typename T>
-static T sign(T t)
-{
- if (0 > t)
- {
- return -1;
- }
- else if (0 == t)
+ virtual glw::GLuint getArgumentCount() const
{
- return 0;
+ return 3;
}
- else
+
+ virtual Utils::_variable_type getArgumentType(glw::GLuint argument) const
{
- return 1;
+ switch (argument)
+ {
+ case 0:
+ return m_arg_1_type;
+ break;
+ case 1:
+ return m_arg_2_type;
+ break;
+ case 2:
+ return m_arg_3_type;
+ break;
+ default:
+ return Utils::VARIABLE_TYPE_UNKNOWN;
+ break;
+ }
}
-}
-template <typename T>
-static T smoothStep(T e0, T e1, T val)
+protected:
+ const Utils::_variable_type m_arg_1_type;
+ const Utils::_variable_type m_arg_2_type;
+ const Utils::_variable_type m_arg_3_type;
+};
+
+/** Tenary function class. It treats input arguments as three variables.
+ *
+ * @param ResT Type of result
+ * @param Arg1T Type of first argument
+ * @param Arg2T Type of second argument
+ * @param Arg3T Type of third argument
+ **/
+template <typename ResT, typename Arg1T, typename Arg2T, typename Arg3T>
+class tenary : public tenaryBase
{
- if (e0 >= val)
+public:
+ typedef ResT (*functionPointer)(Arg1T, Arg2T, Arg3T);
+ typedef typename TypeHelpers::referenceToType<Arg1T>::result arg1T;
+ typedef typename TypeHelpers::referenceToType<Arg2T>::result arg2T;
+ typedef typename TypeHelpers::referenceToType<Arg3T>::result arg3T;
+
+ tenary(FunctionEnum function_enum, const glw::GLchar* function_name, functionPointer function_pointer)
+ : tenaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, typeInfo<ResT>::variable_type,
+ typeInfo<Arg1T>::variable_type, typeInfo<Arg2T>::variable_type, typeInfo<Arg3T>::variable_type)
{
- return 0;
}
- if (e1 <= val)
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
{
- return 1;
- }
+ const glw::GLuint argument_2_offset = getArgumentOffset(1);
+ const glw::GLuint argument_3_offset = getArgumentOffset(2);
- T temp = (val - e0) / (e1 - e0);
+ functionPointer p_function = (functionPointer)m_p_function;
- T result = temp * temp * (3 - 2 * temp);
+ arg1T arg_1;
+ arg2T arg_2;
+ arg3T arg_3;
+ ResT result;
- return result;
-}
+ unpack<arg1T>::get(argument_src, arg_1);
+ unpack<arg2T>::get((glw::GLubyte*)argument_src + argument_2_offset, arg_2);
+ unpack<arg3T>::get((glw::GLubyte*)argument_src + argument_3_offset, arg_3);
-template <typename T>
-static T step(T edge, T val)
-{
- if (edge > val)
- {
- return 0;
- }
- else
- {
- return 1;
+ result = p_function(arg_1, arg_2, arg_3);
+
+ pack<ResT>::set(result_dst, result);
}
-}
+};
-template <typename T, int Rows, int Cols>
-static tcu::Matrix<T, Cols, Rows> transpose(const tcu::Matrix<T, Rows, Cols>& matrix)
+/** Tenary function class. It treats input arguments as separate components.
+ *
+
+ **/
+class tenaryByComponent : public tenaryBase
{
- tcu::Matrix<T, Cols, Rows> result = tcu::transpose(matrix);
+public:
+ typedef glw::GLdouble (*functionPointer)(glw::GLdouble, glw::GLdouble, glw::GLdouble);
- return result;
-}
+ tenaryByComponent(FunctionEnum function_enum, const glw::GLchar* function_name, functionPointer function_pointer,
+ const Utils::_variable_type res_type, const Utils::_variable_type arg_1_type,
+ const Utils::_variable_type arg_2_type, const Utils::_variable_type arg_3_type)
+ : tenaryBase(function_enum, function_name, (glw::GLvoid*)function_pointer, res_type, arg_1_type, arg_2_type,
+ arg_3_type)
+ {
+ }
-template <typename T>
-static T trunc(T t)
-{
- const T abs_value = de::abs(t);
- const T result_value = floor(abs_value);
+ virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const
+ {
+ glw::GLdouble* p_result = (glw::GLdouble*)result_dst;
+ const glw::GLdouble* p_arg = (const glw::GLdouble*)argument_src;
- const T result = sign(t) * result_value;
+ const glw::GLuint n_components_0 = getArgumentComponents(0);
+ const glw::GLuint n_components_1 = getArgumentComponents(1);
+ const glw::GLuint n_components_2 = getArgumentComponents(2);
+ const glw::GLuint n_components = de::max(de::max(n_components_0, n_components_1), n_components_2);
- return result;
-}
+ const glw::GLuint component_step_0 = (1 == n_components_0) ? 0 : 1;
+ const glw::GLuint component_step_1 = (1 == n_components_1) ? 0 : 1;
+ const glw::GLuint component_step_2 = (1 == n_components_2) ? 0 : 1;
-static tcu::UVec2 unpackDouble2x32(const glw::GLdouble& val)
-{
- glw::GLuint* ptr = (glw::GLuint*)&val;
- tcu::UVec2 result(ptr[0], ptr[1]);
+ functionPointer p_function = (functionPointer)m_p_function;
- return result;
-}
-} /* Math */
+ for (glw::GLuint component = 0; component < n_components; ++component)
+ {
+ const glw::GLdouble first_arg = p_arg[component * component_step_0];
+ const glw::GLdouble second_arg = p_arg[component * component_step_1 + n_components_0];
+ const glw::GLdouble third_arg = p_arg[component * component_step_2 + n_components_0 + n_components_1];
-/* Constants used by GPUShaderFP64Test10 */
-/** Khronos Bug #14010
- * Using an epsilon value for comparing floating points is error prone.
- * Rather than writing a new floating point comparison function, I am
- * increasing the epsilon value to allow greater orders of magnitude
- * of floating point values.
- **/
-const glw::GLdouble GPUShaderFP64Test10::m_epsilon = 0.00002;
-const glw::GLuint GPUShaderFP64Test10::m_n_veritces = 1024;
+ p_result[component] = p_function(first_arg, second_arg, third_arg);
+ }
+ }
+};
+} /* FunctionObject */
/** Constructor.
*
* @param context Rendering context.
**/
-GPUShaderFP64Test10::GPUShaderFP64Test10(deqp::Context& context)
- : TestCase(context, "built_in_functions", "Verify that built-in functions support double-precision types")
+BuiltinFunctionTest::BuiltinFunctionTest(deqp::Context& context, std::string caseName, FunctionEnum function,
+ TypeDefinition typeDefinition)
+ : TestCase(context, caseName.c_str(), "Verify that built-in functions support double-precision types")
, m_transform_feedback_buffer_id(0)
, m_vertex_array_object_id(0)
+ , m_function(function)
+ , m_typeDefinition(typeDefinition)
{
/* Nothing to be done here */
}
/** Deinitializes all GL objects that may have been created during test execution.
*
**/
-void GPUShaderFP64Test10::deinit()
+void BuiltinFunctionTest::deinit()
{
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
*
* @return tcu::TestNode::STOP
**/
-tcu::TestNode::IterateResult GPUShaderFP64Test10::iterate()
+tcu::TestNode::IterateResult BuiltinFunctionTest::iterate()
{
- bool result = true;
-
/* Check if extension is supported */
if (false == m_context.getContextInfo().isExtensionSupported("GL_ARB_gpu_shader_fp64"))
{
testInit();
- /* For each combination of function and type */
- for (std::vector<typeDetails>::const_iterator type = m_types.begin(); m_types.end() != type; ++type)
- {
- for (std::vector<functionEnum>::const_iterator function = m_functions.begin(); m_functions.end() != function;
- ++function)
- {
- if (false == test(*function, *type))
- {
- result = false;
- }
- }
- }
-
- /* Set result */
- if (true == result)
+ /* Verify result */
+ typeDetails type(m_typeDefinition.n_columns, m_typeDefinition.n_rows);
+ if (test(m_function, type))
{
m_context.getTestContext().setTestResult(QP_TEST_RESULT_PASS, "Pass");
}
* @param function_pointer Pointer to routine that wiil be executed
* @param result_type Type of result
**/
-GPUShaderFP64Test10::functionObject::functionObject(functionEnum function_enum, const glw::GLchar* function_name,
+BuiltinFunctionTest::functionObject::functionObject(FunctionEnum function_enum, const glw::GLchar* function_name,
glw::GLvoid* function_pointer, Utils::_variable_type result_type)
: m_function_enum(function_enum)
, m_function_name(function_name)
*
* @return Number of components
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getArgumentComponents(glw::GLuint argument) const
+glw::GLuint BuiltinFunctionTest::functionObject::getArgumentComponents(glw::GLuint argument) const
{
const Utils::_variable_type type = getArgumentType(argument);
const glw::GLuint n_components = Utils::getNumberOfComponentsForVariableType(type);
*
* @return Size of component
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getArgumentComponentSize(glw::GLuint argument) const
+glw::GLuint BuiltinFunctionTest::functionObject::getArgumentComponentSize(glw::GLuint argument) const
{
const Utils::_variable_type type = getArgumentType(argument);
const Utils::_variable_type base_type = Utils::getBaseVariableType(type);
*
* @return Offset of arguemnt's data
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getArgumentOffset(glw::GLuint argument) const
+glw::GLuint BuiltinFunctionTest::functionObject::getArgumentOffset(glw::GLuint argument) const
{
glw::GLuint result = 0;
*
* @return Stride of all arguments
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getArgumentStride() const
+glw::GLuint BuiltinFunctionTest::functionObject::getArgumentStride() const
{
const glw::GLuint n_args = getArgumentCount();
glw::GLuint result = 0;
*
* @return Stride of argument
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getArgumentStride(glw::GLuint argument) const
+glw::GLuint BuiltinFunctionTest::functionObject::getArgumentStride(glw::GLuint argument) const
{
const glw::GLuint component_size = getArgumentComponentSize(argument);
const glw::GLuint n_components = getArgumentComponents(argument);
*
* @return Function enumeration
**/
-GPUShaderFP64Test10::functionEnum GPUShaderFP64Test10::functionObject::getFunctionEnum() const
+FunctionEnum BuiltinFunctionTest::functionObject::getFunctionEnum() const
{
return m_function_enum;
}
*
* @return Function name
**/
-const glw::GLchar* GPUShaderFP64Test10::functionObject::getName() const
+const glw::GLchar* BuiltinFunctionTest::functionObject::getName() const
{
return m_function_name;
}
*
* @return Number of components
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getResultComponents(glw::GLuint result) const
+glw::GLuint BuiltinFunctionTest::functionObject::getResultComponents(glw::GLuint result) const
{
const Utils::_variable_type type = getResultType(result);
const glw::GLuint n_components = Utils::getNumberOfComponentsForVariableType(type);
*
* @return Number of results
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getResultCount() const
+glw::GLuint BuiltinFunctionTest::functionObject::getResultCount() const
{
return 1;
}
*
* @return Offset
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getResultOffset(glw::GLuint result) const
+glw::GLuint BuiltinFunctionTest::functionObject::getResultOffset(glw::GLuint result) const
{
glw::GLuint offset = 0;
*
* @return Stride
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getResultStride(glw::GLuint result) const
+glw::GLuint BuiltinFunctionTest::functionObject::getResultStride(glw::GLuint result) const
{
const Utils::_variable_type type = getResultType(result);
const glw::GLuint n_components = Utils::getNumberOfComponentsForVariableType(type);
*
* @return Alignment
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getBaseTypeSize(glw::GLuint result) const
+glw::GLuint BuiltinFunctionTest::functionObject::getBaseTypeSize(glw::GLuint result) const
{
const Utils::_variable_type type = getResultType(result);
const Utils::_variable_type base_type = Utils::getBaseVariableType(type);
*
* @return Stride
**/
-glw::GLuint GPUShaderFP64Test10::functionObject::getResultStride() const
+glw::GLuint BuiltinFunctionTest::functionObject::getResultStride() const
{
const glw::GLuint n_results = getResultCount();
glw::GLuint stride = 0;
*
* @return Type
**/
-Utils::_variable_type GPUShaderFP64Test10::functionObject::getResultType(glw::GLuint /* result */) const
+Utils::_variable_type BuiltinFunctionTest::functionObject::getResultType(glw::GLuint /* result */) const
{
return m_res_type;
}
* @param n_columns Number of columns
* @param n_rows Number of rows
**/
-GPUShaderFP64Test10::typeDetails::typeDetails(glw::GLuint n_columns, glw::GLuint n_rows)
+BuiltinFunctionTest::typeDetails::typeDetails(glw::GLuint n_columns, glw::GLuint n_rows)
: m_n_columns(n_columns), m_n_rows(n_rows)
{
Utils::_variable_type type = Utils::getDoubleVariableType(n_columns, n_rows);
*
* @return true if values are equal, false otherwise
**/
-bool GPUShaderFP64Test10::compare(Utils::_variable_type type, const glw::GLvoid* left, const glw::GLvoid* right)
+bool BuiltinFunctionTest::compare(Utils::_variable_type type, const glw::GLvoid* left, const glw::GLvoid* right)
{
bool result = true;
*
* @return Create object
**/
-GPUShaderFP64Test10::functionObject* GPUShaderFP64Test10::getFunctionObject(functionEnum function,
+BuiltinFunctionTest::functionObject* BuiltinFunctionTest::getFunctionObject(FunctionEnum function,
const typeDetails& type)
{
typedef tcu::Matrix<glw::GLdouble, 2, 2> DMat2;
*
* @return Function pointer
**/
-GPUShaderFP64Test10::uniformDMatFunctionPointer GPUShaderFP64Test10::getUniformFunctionForDMat(
+BuiltinFunctionTest::uniformDMatFunctionPointer BuiltinFunctionTest::getUniformFunctionForDMat(
glw::GLuint argument, const functionObject& function_object) const
{
const Utils::_variable_type argument_type = function_object.getArgumentType(argument);
*
* @return Function pointer
**/
-GPUShaderFP64Test10::uniformDVecFunctionPointer GPUShaderFP64Test10::getUniformFunctionForDVec(
+BuiltinFunctionTest::uniformDVecFunctionPointer BuiltinFunctionTest::getUniformFunctionForDVec(
glw::GLuint argument, const functionObject& function_object) const
{
const Utils::_variable_type argument_type = function_object.getArgumentType(argument);
*
* @return Function pointer
**/
-GPUShaderFP64Test10::uniformIVecFunctionPointer GPUShaderFP64Test10::getUniformFunctionForIVec(
+BuiltinFunctionTest::uniformIVecFunctionPointer BuiltinFunctionTest::getUniformFunctionForIVec(
glw::GLuint argument, const functionObject& function_object) const
{
const Utils::_variable_type argument_type = function_object.getArgumentType(argument);
*
* @return Function pointer
**/
-GPUShaderFP64Test10::uniformUVecFunctionPointer GPUShaderFP64Test10::getUniformFunctionForUVec(
+BuiltinFunctionTest::uniformUVecFunctionPointer BuiltinFunctionTest::getUniformFunctionForUVec(
glw::GLuint argument, const functionObject& function_object) const
{
const Utils::_variable_type argument_type = function_object.getArgumentType(argument);
*
* @return Name of uniform
**/
-const glw::GLchar* GPUShaderFP64Test10::getUniformName(glw::GLuint argument) const
+const glw::GLchar* BuiltinFunctionTest::getUniformName(glw::GLuint argument) const
{
switch (argument)
{
*
* @return Name of varying
**/
-const glw::GLchar* GPUShaderFP64Test10::getVaryingName(glw::GLuint result) const
+const glw::GLchar* BuiltinFunctionTest::getVaryingName(glw::GLuint result) const
{
switch (result)
{
*
* @return true if function is available for given type, false otherwise
**/
-bool GPUShaderFP64Test10::isFunctionImplemented(functionEnum function, const typeDetails& type) const
+bool BuiltinFunctionTest::isFunctionImplemented(FunctionEnum function, const typeDetails& type) const
{
static const bool look_up_table[][3] = {
/* SCALAR, VECTOR, MATRIX */
* @param name Name of variable
* @param type Type of variable
**/
-void GPUShaderFP64Test10::logVariableType(const glw::GLvoid* buffer, const glw::GLchar* name,
+void BuiltinFunctionTest::logVariableType(const glw::GLvoid* buffer, const glw::GLchar* name,
Utils::_variable_type type) const
{
const Utils::_variable_type base_type = Utils::getBaseVariableType(type);
* @param vertex Vertex index
* @param buffer Buffer pointer
**/
-void GPUShaderFP64Test10::prepareArgument(const functionObject& function_object, glw::GLuint vertex,
+void BuiltinFunctionTest::prepareArgument(const functionObject& function_object, glw::GLuint vertex,
glw::GLubyte* buffer)
{
const glw::GLuint n_arguments = function_object.getArgumentCount();
* @param argument Argument index
* @param buffer Buffer pointer
**/
-void GPUShaderFP64Test10::prepareComponents(const functionObject& function_object, glw::GLuint vertex,
+void BuiltinFunctionTest::prepareComponents(const functionObject& function_object, glw::GLuint vertex,
glw::GLuint argument, glw::GLubyte* buffer)
{
glw::GLuint argument_index[3] = { 0 };
}
}
-/** Prepare collection of function enumerations
- *
- **/
-void GPUShaderFP64Test10::prepareFunctions()
-{
- m_functions.push_back(FUNCTION_ABS);
- m_functions.push_back(FUNCTION_CEIL);
- m_functions.push_back(FUNCTION_CLAMP);
- m_functions.push_back(FUNCTION_CLAMP_AGAINST_SCALAR);
- m_functions.push_back(FUNCTION_CROSS);
- m_functions.push_back(FUNCTION_DETERMINANT);
- m_functions.push_back(FUNCTION_DISTANCE);
- m_functions.push_back(FUNCTION_DOT);
- m_functions.push_back(FUNCTION_EQUAL);
- m_functions.push_back(FUNCTION_FACEFORWARD);
- m_functions.push_back(FUNCTION_FLOOR);
- m_functions.push_back(FUNCTION_FMA);
- m_functions.push_back(FUNCTION_FRACT);
- m_functions.push_back(FUNCTION_FREXP);
- m_functions.push_back(FUNCTION_GREATERTHAN);
- m_functions.push_back(FUNCTION_GREATERTHANEQUAL);
- m_functions.push_back(FUNCTION_INVERSE);
- m_functions.push_back(FUNCTION_INVERSESQRT);
- m_functions.push_back(FUNCTION_LDEXP);
- m_functions.push_back(FUNCTION_LESSTHAN);
- m_functions.push_back(FUNCTION_LESSTHANEQUAL);
- m_functions.push_back(FUNCTION_LENGTH);
- m_functions.push_back(FUNCTION_MATRIXCOMPMULT);
- m_functions.push_back(FUNCTION_MAX);
- m_functions.push_back(FUNCTION_MAX_AGAINST_SCALAR);
- m_functions.push_back(FUNCTION_MIN);
- m_functions.push_back(FUNCTION_MIN_AGAINST_SCALAR);
- m_functions.push_back(FUNCTION_MIX);
- m_functions.push_back(FUNCTION_MOD);
- m_functions.push_back(FUNCTION_MOD_AGAINST_SCALAR);
- m_functions.push_back(FUNCTION_MODF);
- m_functions.push_back(FUNCTION_NORMALIZE);
- m_functions.push_back(FUNCTION_NOTEQUAL);
- m_functions.push_back(FUNCTION_OUTERPRODUCT);
- m_functions.push_back(FUNCTION_PACKDOUBLE2X32);
- m_functions.push_back(FUNCTION_REFLECT);
- m_functions.push_back(FUNCTION_REFRACT);
- m_functions.push_back(FUNCTION_ROUND);
- m_functions.push_back(FUNCTION_ROUNDEVEN);
- m_functions.push_back(FUNCTION_SIGN);
- m_functions.push_back(FUNCTION_SMOOTHSTEP);
- m_functions.push_back(FUNCTION_SMOOTHSTEP_AGAINST_SCALAR);
- m_functions.push_back(FUNCTION_SQRT);
- m_functions.push_back(FUNCTION_STEP);
- m_functions.push_back(FUNCTION_STEP_AGAINST_SCALAR);
- m_functions.push_back(FUNCTION_TRANSPOSE);
- m_functions.push_back(FUNCTION_TRUNC);
- m_functions.push_back(FUNCTION_UNPACKDOUBLE2X32);
- m_functions.push_back(FUNCTION_ISNAN);
- m_functions.push_back(FUNCTION_ISINF);
-}
-
/** Prepare programInfo for given functionObject
*
* @param function_object Function object
* @param out_program_info Program info
**/
-void GPUShaderFP64Test10::prepareProgram(const functionObject& function_object, Utils::programInfo& out_program_info)
+void BuiltinFunctionTest::prepareProgram(const functionObject& function_object, Utils::programInfo& out_program_info)
{
const glw::GLuint n_varying_names = function_object.getResultCount();
static const glw::GLchar* varying_names[3] = { getVaryingName(0), getVaryingName(1), getVaryingName(2) };
*
* @param function_object Function object
**/
-void GPUShaderFP64Test10::prepareTestData(const functionObject& function_object)
+void BuiltinFunctionTest::prepareTestData(const functionObject& function_object)
{
const glw::GLuint result_stride = function_object.getResultStride();
const glw::GLuint result_buffer_size = result_stride * m_n_veritces;
}
}
-/** Prepare collection of types
- *
- **/
-void GPUShaderFP64Test10::prepareTypes()
-{
- m_types.push_back(typeDetails(1 /* n_columns */, 1 /* n_rows */));
- m_types.push_back(typeDetails(1 /* n_columns */, 2 /* n_rows */));
- m_types.push_back(typeDetails(1 /* n_columns */, 3 /* n_rows */));
- m_types.push_back(typeDetails(1 /* n_columns */, 4 /* n_rows */));
- m_types.push_back(typeDetails(2 /* n_columns */, 2 /* n_rows */));
- m_types.push_back(typeDetails(2 /* n_columns */, 3 /* n_rows */));
- m_types.push_back(typeDetails(2 /* n_columns */, 4 /* n_rows */));
- m_types.push_back(typeDetails(3 /* n_columns */, 2 /* n_rows */));
- m_types.push_back(typeDetails(3 /* n_columns */, 3 /* n_rows */));
- m_types.push_back(typeDetails(3 /* n_columns */, 4 /* n_rows */));
- m_types.push_back(typeDetails(4 /* n_columns */, 2 /* n_rows */));
- m_types.push_back(typeDetails(4 /* n_columns */, 3 /* n_rows */));
- m_types.push_back(typeDetails(4 /* n_columns */, 4 /* n_rows */));
-}
-
/** Prepare source code of vertex shader for given function object. Result is stored in m_vertex_shader_code.
*
* @param function_object Function object
**/
-void GPUShaderFP64Test10::prepareVertexShaderCode(const functionObject& function_object)
+void BuiltinFunctionTest::prepareVertexShaderCode(const functionObject& function_object)
{
static const glw::GLchar* shader_template_code = "#version 400 core\n"
"\n"
*
* @return true if test pass (or function is not available for <type>), false otherwise
**/
-bool GPUShaderFP64Test10::test(functionEnum function, const typeDetails& type)
+bool BuiltinFunctionTest::test(FunctionEnum function, const typeDetails& type)
{
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
* @param program_id Program object id
* @param vertex Vertex index
**/
-void GPUShaderFP64Test10::testBegin(const functionObject& function_object, glw::GLuint program_id, glw::GLuint vertex)
+void BuiltinFunctionTest::testBegin(const functionObject& function_object, glw::GLuint program_id, glw::GLuint vertex)
{
const glw::GLuint arguments_stride = function_object.getArgumentStride();
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
/** Init GL obejcts
*
**/
-void GPUShaderFP64Test10::testInit()
+void BuiltinFunctionTest::testInit()
{
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
- prepareFunctions();
- prepareTypes();
-
gl.genBuffers(1, &m_transform_feedback_buffer_id);
GLU_EXPECT_NO_ERROR(gl.getError(), "GenBuffers");
*
* @return true if all results are as expected, false otherwise
**/
-bool GPUShaderFP64Test10::verifyResults(const functionObject& function_object, glw::GLuint vertex)
+bool BuiltinFunctionTest::verifyResults(const functionObject& function_object, glw::GLuint vertex)
{
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
bool test_result = true;
**/
void GPUShaderFP64Tests::init(void)
{
- addChild(new GPUShaderFP64Test1(m_context));
- addChild(new GPUShaderFP64Test2(m_context));
- addChild(new GPUShaderFP64Test3(m_context));
- addChild(new GPUShaderFP64Test4(m_context));
- addChild(new GPUShaderFP64Test5(m_context));
- addChild(new GPUShaderFP64Test6(m_context));
- addChild(new GPUShaderFP64Test7(m_context));
- addChild(new GPUShaderFP64Test8(m_context));
- addChild(new GPUShaderFP64Test9(m_context));
- addChild(new GPUShaderFP64Test10(m_context));
+ TestCaseGroup* fp64 = new TestCaseGroup(m_context, "fp64", "");
+ fp64->addChild(new GPUShaderFP64Test1(m_context));
+ fp64->addChild(new GPUShaderFP64Test2(m_context));
+ fp64->addChild(new GPUShaderFP64Test3(m_context));
+ fp64->addChild(new GPUShaderFP64Test4(m_context));
+ fp64->addChild(new GPUShaderFP64Test5(m_context));
+ fp64->addChild(new GPUShaderFP64Test6(m_context));
+ fp64->addChild(new GPUShaderFP64Test7(m_context));
+ fp64->addChild(new GPUShaderFP64Test8(m_context));
+ fp64->addChild(new GPUShaderFP64Test9(m_context));
+ addChild(fp64);
+
+ TypeDefinition typeDefinition[] =
+ {
+ { "double", 1, 1 },
+ { "dvec2", 1, 2 },
+ { "dvec3", 1, 3 },
+ { "dvec4", 1, 4 },
+ { "dmat2", 2, 2 },
+ { "dmat2x3", 2, 3 },
+ { "dmat2x4", 2, 4 },
+ { "dmat3x2", 3, 2 },
+ { "dmat3", 3, 3 },
+ { "dmat3x4", 3, 4 },
+ { "dmat4x2", 4, 2 },
+ { "dmat4x3", 4, 3 },
+ { "dmat4", 4, 4 }
+ };
+
+ struct BuiltinFunctions
+ {
+ std::string name;
+ FunctionEnum function;
+ } builtinFunctions[] = {
+ { "abs", FUNCTION_ABS },
+ { "ceil", FUNCTION_CEIL },
+ { "clamp", FUNCTION_CLAMP },
+ { "clamp_against_scalar", FUNCTION_CLAMP_AGAINST_SCALAR },
+ { "cross", FUNCTION_CROSS },
+ { "determinant", FUNCTION_DETERMINANT },
+ { "distance", FUNCTION_DISTANCE },
+ { "dot", FUNCTION_DOT },
+ { "equal", FUNCTION_EQUAL },
+ { "faceforward", FUNCTION_FACEFORWARD },
+ { "floor", FUNCTION_FLOOR },
+ { "fma", FUNCTION_FMA },
+ { "fract", FUNCTION_FRACT },
+ { "frexp", FUNCTION_FREXP },
+ { "greaterthan", FUNCTION_GREATERTHAN },
+ { "greaterthanequal", FUNCTION_GREATERTHANEQUAL },
+ { "inverse", FUNCTION_INVERSE },
+ { "inversesqrt", FUNCTION_INVERSESQRT },
+ { "ldexp", FUNCTION_LDEXP },
+ { "lessthan", FUNCTION_LESSTHAN },
+ { "lessthanequal", FUNCTION_LESSTHANEQUAL },
+ { "length", FUNCTION_LENGTH },
+ { "matrixcompmult", FUNCTION_MATRIXCOMPMULT },
+ { "max", FUNCTION_MAX },
+ { "max_against_scalar", FUNCTION_MAX_AGAINST_SCALAR },
+ { "min", FUNCTION_MIN },
+ { "min_against_scalar", FUNCTION_MIN_AGAINST_SCALAR },
+ { "mix", FUNCTION_MIX },
+ { "mod", FUNCTION_MOD },
+ { "mod_against_scalar", FUNCTION_MOD_AGAINST_SCALAR },
+ { "modf", FUNCTION_MODF },
+ { "normalize", FUNCTION_NORMALIZE },
+ { "notequal", FUNCTION_NOTEQUAL },
+ { "outerproduct", FUNCTION_OUTERPRODUCT },
+ { "packdouble2x32", FUNCTION_PACKDOUBLE2X32 },
+ { "reflect", FUNCTION_REFLECT },
+ { "refract", FUNCTION_REFRACT },
+ { "round", FUNCTION_ROUND },
+ { "roundeven", FUNCTION_ROUNDEVEN },
+ { "sign", FUNCTION_SIGN },
+ { "smoothstep", FUNCTION_SMOOTHSTEP },
+ { "smoothstep_against_scalar", FUNCTION_SMOOTHSTEP_AGAINST_SCALAR },
+ { "sqrt", FUNCTION_SQRT },
+ { "step", FUNCTION_STEP },
+ { "step_against_scalar", FUNCTION_STEP_AGAINST_SCALAR },
+ { "transpose", FUNCTION_TRANSPOSE },
+ { "trunc", FUNCTION_TRUNC },
+ { "unpackdouble2x32", FUNCTION_UNPACKDOUBLE2X32 },
+ { "isnan", FUNCTION_ISNAN },
+ { "isinf", FUNCTION_ISINF }
+ };
+
+ TestCaseGroup* builin = new TestCaseGroup(m_context, "builtin", "");
+ for (int i = 0; i < DE_LENGTH_OF_ARRAY(builtinFunctions); ++i)
+ {
+ const BuiltinFunctions& bf = builtinFunctions[i];
+ for (int j = 0; j < DE_LENGTH_OF_ARRAY(typeDefinition); ++j)
+ {
+ std::string caseName = bf.name + "_" + typeDefinition[j].name;
+ builin->addChild(new BuiltinFunctionTest(m_context, caseName, bf.function, typeDefinition[j]));
+ }
+ }
+ addChild(builin);
}
} /* glcts namespace */
glw::GLuint m_vs_id;
};
-/** Implementation of test 10, description follows:
- *
- * Verify double-precision support in common functions works correctly.
- * All double-precision types that apply for particular cases should
- * be tested for the following functions:
- *
- * - abs();
- * - ceil();
- * - clamp();
- * - cross();
- * - determinant();
- * - distance();
- * - dot();
- * - equal();
- * - faceforward();
- * - floor();
- * - fma();
- * - fract();
- * - frexp();
- * - greaterThan();
- * - greaterThanEqual();
- * - inverse();
- * - inversesqrt();
- * - ldexp();
- * - lessThan();
- * - lessThanEqual();
- * - length();
- * - matrixCompMult();
- * - max();
- * - min();
- * - mix();
- * - mod();
- * - modf();
- * - normalize();
- * - notEqual();
- * - outerProduct();
- * - packDouble2x32();
- * - reflect();
- * - refract();
- * - round();
- * - roundEven();
- * - sign();
- * - smoothstep();
- * - sqrt();
- * - step();
- * - transpose();
- * - trunc();
- * - unpackDouble2x32();
- * - isnan();
- * - isinf();
- *
- * The test should work by creating a program object (for each case
- * considered), to which a vertex shader should be attached. The
- * shader should define input variables that should be used as
- * arguments for the function in question. The result of the
- * operation should then be XFBed back to the test, where the
- * value should be verified.
- *
- * Reference function implementation from pre-DEQP CTS framework
- * should be ported to C for verification purposes where available.
- *
- * The test should use 1024 different scalar/vector/matrix argument
- * combinations. It should pass if all functions are determined
- * to work correctly for all argument combinations used.
- **/
-class GPUShaderFP64Test10 : public deqp::TestCase
-{
-public:
- /* Public methods */
- GPUShaderFP64Test10(deqp::Context& context);
-
- virtual void deinit();
- virtual tcu::TestNode::IterateResult iterate();
-
- /* Public types */
- /** Enumeration of tested functions
- * *_AGAINT_SCALAR enums are used to call glsl function with mixed scalar and genDType arguments.
- * For example "max" can called for (dvec3, double).
- **/
- enum functionEnum
- {
- FUNCTION_ABS = 0,
- FUNCTION_CEIL,
- FUNCTION_CLAMP,
- FUNCTION_CLAMP_AGAINST_SCALAR,
- FUNCTION_CROSS,
- FUNCTION_DETERMINANT,
- FUNCTION_DISTANCE,
- FUNCTION_DOT,
- FUNCTION_EQUAL,
- FUNCTION_FACEFORWARD,
- FUNCTION_FLOOR,
- FUNCTION_FMA,
- FUNCTION_FRACT,
- FUNCTION_FREXP,
- FUNCTION_GREATERTHAN,
- FUNCTION_GREATERTHANEQUAL,
- FUNCTION_INVERSE,
- FUNCTION_INVERSESQRT,
- FUNCTION_LDEXP,
- FUNCTION_LESSTHAN,
- FUNCTION_LESSTHANEQUAL,
- FUNCTION_LENGTH,
- FUNCTION_MATRIXCOMPMULT,
- FUNCTION_MAX,
- FUNCTION_MAX_AGAINST_SCALAR,
- FUNCTION_MIN,
- FUNCTION_MIN_AGAINST_SCALAR,
- FUNCTION_MIX,
- FUNCTION_MOD,
- FUNCTION_MOD_AGAINST_SCALAR,
- FUNCTION_MODF,
- FUNCTION_NORMALIZE,
- FUNCTION_NOTEQUAL,
- FUNCTION_OUTERPRODUCT,
- FUNCTION_PACKDOUBLE2X32,
- FUNCTION_REFLECT,
- FUNCTION_REFRACT,
- FUNCTION_ROUND,
- FUNCTION_ROUNDEVEN,
- FUNCTION_SIGN,
- FUNCTION_SMOOTHSTEP,
- FUNCTION_SMOOTHSTEP_AGAINST_SCALAR,
- FUNCTION_SQRT,
- FUNCTION_STEP,
- FUNCTION_STEP_AGAINST_SCALAR,
- FUNCTION_TRANSPOSE,
- FUNCTION_TRUNC,
- FUNCTION_UNPACKDOUBLE2X32,
- FUNCTION_ISNAN,
- FUNCTION_ISINF,
- };
-
- /** Base class of functionObject. Main goal of it is to keep function details toghether and hide calling code.
- *
- **/
- class functionObject
- {
- public:
- functionObject(functionEnum function_enum, const glw::GLchar* function_name, glw::GLvoid* function_pointer,
- Utils::_variable_type result_type);
-
- virtual ~functionObject()
- {
- }
-
- virtual void call(glw::GLvoid* result_dst, const glw::GLvoid* argument_src) const = 0;
-
- virtual glw::GLuint getArgumentCount() const = 0;
- virtual Utils::_variable_type getArgumentType(glw::GLuint argument) const = 0;
- glw::GLuint getArgumentComponents(glw::GLuint argument) const;
- glw::GLuint getArgumentComponentSize(glw::GLuint argument) const;
- glw::GLuint getArgumentOffset(glw::GLuint argument) const;
- glw::GLuint getArgumentStride() const;
- glw::GLuint getArgumentStride(glw::GLuint argument) const;
- functionEnum getFunctionEnum() const;
- const glw::GLchar* getName() const;
- glw::GLuint getResultComponents(glw::GLuint result) const;
- virtual glw::GLuint getResultCount() const;
- glw::GLuint getResultOffset(glw::GLuint result) const;
- virtual Utils::_variable_type getResultType(glw::GLuint result) const;
- glw::GLuint getResultStride(glw::GLuint result) const;
- glw::GLuint getBaseTypeSize(glw::GLuint result) const;
- glw::GLuint getResultStride() const;
-
- protected:
- const functionEnum m_function_enum;
- const glw::GLchar* m_function_name;
- const glw::GLvoid* m_p_function;
- const Utils::_variable_type m_res_type;
- };
-
-private:
- /* Private types */
- /** General type enumeration
- *
- **/
- enum generalType
- {
- SCALAR = 0,
- VECTOR,
- MATRIX,
- };
-
- /** Details of variable type
- *
- **/
- struct typeDetails
- {
- typeDetails(glw::GLuint n_columns, glw::GLuint n_rows);
-
- generalType m_general_type;
- glw::GLuint m_n_columns;
- glw::GLuint m_n_rows;
- glw::GLenum m_type;
- std::string m_type_name;
- };
-
- /* Typedefs for gl.uniform* function pointers */
- typedef GLW_APICALL void(GLW_APIENTRY* uniformDMatFunctionPointer)(glw::GLint, glw::GLsizei, glw::GLboolean,
- const glw::GLdouble*);
- typedef GLW_APICALL void(GLW_APIENTRY* uniformDVecFunctionPointer)(glw::GLint, glw::GLsizei, const glw::GLdouble*);
- typedef GLW_APICALL void(GLW_APIENTRY* uniformIVecFunctionPointer)(glw::GLint, glw::GLsizei, const glw::GLint*);
- typedef GLW_APICALL void(GLW_APIENTRY* uniformUVecFunctionPointer)(glw::GLint, glw::GLsizei, const glw::GLuint*);
-
- /* Private methods */
- bool compare(Utils::_variable_type type, const glw::GLvoid* left, const glw::GLvoid* right);
-
- functionObject* getFunctionObject(functionEnum function, const typeDetails& type);
-
- uniformDMatFunctionPointer getUniformFunctionForDMat(glw::GLuint argument,
- const functionObject& function_object) const;
-
- uniformDVecFunctionPointer getUniformFunctionForDVec(glw::GLuint argument,
- const functionObject& function_object) const;
-
- uniformIVecFunctionPointer getUniformFunctionForIVec(glw::GLuint argument,
- const functionObject& function_object) const;
-
- uniformUVecFunctionPointer getUniformFunctionForUVec(glw::GLuint argument,
- const functionObject& function_object) const;
-
- const glw::GLchar* getUniformName(glw::GLuint argument) const;
- const glw::GLchar* getVaryingName(glw::GLuint argument) const;
-
- bool isFunctionImplemented(functionEnum function, const typeDetails& type) const;
-
- void logVariableType(const glw::GLvoid* buffer, const glw::GLchar* name, Utils::_variable_type type) const;
-
- void prepareArgument(const functionObject& function_object, glw::GLuint vertex, glw::GLubyte* buffer);
-
- void prepareComponents(const functionObject& function_object, glw::GLuint vertex, glw::GLuint argument,
- glw::GLubyte* buffer);
-
- void prepareFunctions();
-
- void prepareProgram(const functionObject& function_object, Utils::programInfo& program_info);
-
- void prepareTestData(const functionObject& function_object);
- void prepareTypes();
- void prepareVertexShaderCode(const functionObject& function_object);
-
- bool test(functionEnum function, const typeDetails& type);
-
- void testBegin(const functionObject& function_object, glw::GLuint program_id, glw::GLuint vertex);
-
- void testInit();
-
- bool verifyResults(const functionObject& function_object, glw::GLuint vertex);
-
- /* Private constants */
- static const glw::GLdouble m_epsilon;
- static const glw::GLuint m_n_veritces;
-
- /* Private fields */
- glw::GLuint m_transform_feedback_buffer_id;
- glw::GLuint m_vertex_array_object_id;
-
- std::vector<glw::GLubyte> m_expected_results_data;
- std::vector<functionEnum> m_functions;
- std::vector<typeDetails> m_types;
- std::vector<glw::GLubyte> m_argument_data;
- std::string m_vertex_shader_code;
-};
-
/** Group class for GPU Shader FP64 conformance tests */
class GPUShaderFP64Tests : public deqp::TestCaseGroup
{