From 2fa3e9310a627c13ba512b5781284f1b1481a938 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Fri, 5 Dec 2025 22:57:28 +0100 Subject: [PATCH] adding missing data --- vulkan/data/brick.png | Bin 0 -> 101784 bytes vulkan/data/device_group/sphere.png | Bin 0 -> 14148 bytes vulkan/data/device_group/spherefilled.png | Bin 0 -> 2053 bytes vulkan/data/geometry/line_strip.png | Bin 0 -> 1677 bytes vulkan/data/geometry/line_strip_adjacency.png | Bin 0 -> 2054 bytes .../data/geometry/line_strip_emit_0_end_0.png | Bin 0 -> 854 bytes .../data/geometry/line_strip_emit_0_end_1.png | Bin 0 -> 854 bytes .../data/geometry/line_strip_emit_0_end_2.png | Bin 0 -> 854 bytes .../data/geometry/line_strip_emit_1_end_1.png | Bin 0 -> 854 bytes .../data/geometry/line_strip_emit_1_end_2.png | Bin 0 -> 854 bytes .../data/geometry/line_strip_emit_2_end_1.png | Bin 0 -> 1056 bytes .../data/geometry/line_strip_emit_2_end_2.png | Bin 0 -> 1056 bytes .../line_strip_emit_2_end_2_emit_2_end_0.png | Bin 0 -> 1168 bytes vulkan/data/geometry/lines.png | Bin 0 -> 1339 bytes vulkan/data/geometry/lines_adjacency.png | Bin 0 -> 1360 bytes vulkan/data/geometry/lines_to_points.png | Bin 0 -> 1030 bytes vulkan/data/geometry/lines_to_triangles.png | Bin 0 -> 1484 bytes vulkan/data/geometry/output_0_and_128.png | Bin 0 -> 865 bytes vulkan/data/geometry/output_10.png | Bin 0 -> 863 bytes vulkan/data/geometry/output_100_and_10.png | Bin 0 -> 872 bytes vulkan/data/geometry/output_10_and_100.png | Bin 0 -> 873 bytes vulkan/data/geometry/output_128.png | Bin 0 -> 861 bytes vulkan/data/geometry/output_128_and_0.png | Bin 0 -> 867 bytes vulkan/data/geometry/output_max.png | Bin 0 -> 861 bytes .../geometry/output_vary_by_attribute.png | Bin 0 -> 1322 bytes .../output_vary_by_attribute_instancing.png | Bin 0 -> 1322 bytes .../data/geometry/output_vary_by_texture.png | Bin 0 -> 1312 bytes .../output_vary_by_texture_instancing.png | Bin 0 -> 1310 bytes .../data/geometry/output_vary_by_uniform.png | Bin 0 -> 1312 bytes .../output_vary_by_uniform_instancing.png | Bin 0 -> 1310 bytes vulkan/data/geometry/point_size.png | Bin 0 -> 916 bytes vulkan/data/geometry/points.png | Bin 0 -> 1046 bytes vulkan/data/geometry/points_emit_0_end_0.png | Bin 0 -> 854 bytes vulkan/data/geometry/points_emit_0_end_1.png | Bin 0 -> 854 bytes vulkan/data/geometry/points_emit_0_end_2.png | Bin 0 -> 854 bytes vulkan/data/geometry/points_emit_1_end_1.png | Bin 0 -> 864 bytes vulkan/data/geometry/points_emit_1_end_2.png | Bin 0 -> 864 bytes vulkan/data/geometry/points_to_lines.png | Bin 0 -> 1368 bytes vulkan/data/geometry/points_to_triangles.png | Bin 0 -> 1484 bytes vulkan/data/geometry/primitive_id.png | Bin 0 -> 1027 bytes vulkan/data/geometry/primitive_id_in.png | Bin 0 -> 2026 bytes .../geometry/primitive_id_in_restarted.png | Bin 0 -> 1422 bytes vulkan/data/geometry/triangle_fan.png | Bin 0 -> 2197 bytes vulkan/data/geometry/triangle_strip.png | Bin 0 -> 2107 bytes .../geometry/triangle_strip_emit_0_end_0.png | Bin 0 -> 854 bytes .../geometry/triangle_strip_emit_0_end_1.png | Bin 0 -> 854 bytes .../geometry/triangle_strip_emit_0_end_2.png | Bin 0 -> 854 bytes .../geometry/triangle_strip_emit_1_end_1.png | Bin 0 -> 854 bytes .../geometry/triangle_strip_emit_1_end_2.png | Bin 0 -> 854 bytes .../geometry/triangle_strip_emit_2_end_1.png | Bin 0 -> 854 bytes .../geometry/triangle_strip_emit_2_end_2.png | Bin 0 -> 854 bytes .../geometry/triangle_strip_emit_3_end_1.png | Bin 0 -> 1206 bytes .../geometry/triangle_strip_emit_3_end_2.png | Bin 0 -> 1206 bytes ...iangle_strip_emit_3_end_2_emit_3_end_0.png | Bin 0 -> 1552 bytes vulkan/data/geometry/triangles.png | Bin 0 -> 1443 bytes vulkan/data/geometry/triangles_adjacency.png | Bin 0 -> 1445 bytes vulkan/data/geometry/triangles_to_lines.png | Bin 0 -> 1350 bytes vulkan/data/geometry/triangles_to_points.png | Bin 0 -> 1036 bytes vulkan/data/geometry/vertex_count_0.png | Bin 0 -> 854 bytes vulkan/data/geometry/vertex_count_1.png | Bin 0 -> 854 bytes vulkan/data/geometry/vertex_count_10.png | Bin 0 -> 1694 bytes vulkan/data/geometry/vertex_count_11.png | Bin 0 -> 1694 bytes vulkan/data/geometry/vertex_count_12.png | Bin 0 -> 1894 bytes vulkan/data/geometry/vertex_count_2.png | Bin 0 -> 854 bytes vulkan/data/geometry/vertex_count_3.png | Bin 0 -> 854 bytes vulkan/data/geometry/vertex_count_4.png | Bin 0 -> 854 bytes vulkan/data/geometry/vertex_count_5.png | Bin 0 -> 854 bytes vulkan/data/geometry/vertex_count_6.png | Bin 0 -> 1181 bytes vulkan/data/geometry/vertex_count_7.png | Bin 0 -> 1181 bytes vulkan/data/geometry/vertex_count_8.png | Bin 0 -> 1447 bytes vulkan/data/geometry/vertex_count_9.png | Bin 0 -> 1447 bytes .../geometry/vertex_no_op_geometry_out_1.png | Bin 0 -> 1253 bytes .../geometry/vertex_out_0_geometry_out_1.png | Bin 0 -> 1103 bytes .../geometry/vertex_out_0_geometry_out_2.png | Bin 0 -> 1103 bytes .../geometry/vertex_out_1_geometry_out_0.png | Bin 0 -> 1103 bytes .../geometry/vertex_out_1_geometry_out_2.png | Bin 0 -> 1814 bytes vulkan/data/tessellation/barrier_ref.png | Bin 0 -> 1339 bytes .../fill_cover_quads_equal_spacing_ref_0.png | Bin 0 -> 1451 bytes .../fill_cover_quads_equal_spacing_ref_1.png | Bin 0 -> 1497 bytes .../fill_cover_quads_equal_spacing_ref_2.png | Bin 0 -> 1464 bytes ...er_quads_fractional_even_spacing_ref_0.png | Bin 0 -> 1496 bytes ...er_quads_fractional_even_spacing_ref_1.png | Bin 0 -> 1502 bytes ...er_quads_fractional_even_spacing_ref_2.png | Bin 0 -> 1519 bytes ...ver_quads_fractional_odd_spacing_ref_0.png | Bin 0 -> 1451 bytes ...ver_quads_fractional_odd_spacing_ref_1.png | Bin 0 -> 1487 bytes ...ver_quads_fractional_odd_spacing_ref_2.png | Bin 0 -> 1454 bytes ...ll_cover_triangles_equal_spacing_ref_0.png | Bin 0 -> 1802 bytes ...ll_cover_triangles_equal_spacing_ref_1.png | Bin 0 -> 1795 bytes ...ll_cover_triangles_equal_spacing_ref_2.png | Bin 0 -> 1789 bytes ...riangles_fractional_even_spacing_ref_0.png | Bin 0 -> 1812 bytes ...riangles_fractional_even_spacing_ref_1.png | Bin 0 -> 1807 bytes ...riangles_fractional_even_spacing_ref_2.png | Bin 0 -> 1815 bytes ...triangles_fractional_odd_spacing_ref_0.png | Bin 0 -> 1802 bytes ...triangles_fractional_odd_spacing_ref_1.png | Bin 0 -> 1798 bytes ...triangles_fractional_odd_spacing_ref_2.png | Bin 0 -> 1785 bytes ...fill_overlap_quads_equal_spacing_ref_0.png | Bin 0 -> 1905 bytes ...fill_overlap_quads_equal_spacing_ref_1.png | Bin 0 -> 2267 bytes ...fill_overlap_quads_equal_spacing_ref_2.png | Bin 0 -> 2747 bytes ...ap_quads_fractional_even_spacing_ref_0.png | Bin 0 -> 2018 bytes ...ap_quads_fractional_even_spacing_ref_1.png | Bin 0 -> 1888 bytes ...ap_quads_fractional_even_spacing_ref_2.png | Bin 0 -> 2598 bytes ...lap_quads_fractional_odd_spacing_ref_0.png | Bin 0 -> 1905 bytes ...lap_quads_fractional_odd_spacing_ref_1.png | Bin 0 -> 2301 bytes ...lap_quads_fractional_odd_spacing_ref_2.png | Bin 0 -> 2724 bytes ..._overlap_triangles_equal_spacing_ref_0.png | Bin 0 -> 8133 bytes ..._overlap_triangles_equal_spacing_ref_1.png | Bin 0 -> 7446 bytes ..._overlap_triangles_equal_spacing_ref_2.png | Bin 0 -> 11452 bytes ...riangles_fractional_even_spacing_ref_0.png | Bin 0 -> 8311 bytes ...riangles_fractional_even_spacing_ref_1.png | Bin 0 -> 7443 bytes ...riangles_fractional_even_spacing_ref_2.png | Bin 0 -> 12479 bytes ...triangles_fractional_odd_spacing_ref_0.png | Bin 0 -> 8133 bytes ...triangles_fractional_odd_spacing_ref_1.png | Bin 0 -> 8127 bytes ...triangles_fractional_odd_spacing_ref_2.png | Bin 0 -> 11452 bytes vulkan/data/tessellation/gl_position_ref.png | Bin 0 -> 1527 bytes .../isolines_equal_spacing_ref_0.png | Bin 0 -> 9151 bytes .../isolines_equal_spacing_ref_1.png | Bin 0 -> 12130 bytes .../isolines_equal_spacing_ref_2.png | Bin 0 -> 4564 bytes ...isolines_fractional_even_spacing_ref_0.png | Bin 0 -> 9667 bytes ...isolines_fractional_even_spacing_ref_1.png | Bin 0 -> 8368 bytes ...isolines_fractional_even_spacing_ref_2.png | Bin 0 -> 5644 bytes .../isolines_fractional_odd_spacing_ref_0.png | Bin 0 -> 9151 bytes .../isolines_fractional_odd_spacing_ref_1.png | Bin 0 -> 12130 bytes .../isolines_fractional_odd_spacing_ref_2.png | Bin 0 -> 4143 bytes .../patch_vertices_10_in_5_out_ref.png | Bin 0 -> 1584 bytes .../patch_vertices_5_in_10_out_ref.png | Bin 0 -> 1701 bytes .../tessellation/primitive_id_tcs_ref.png | Bin 0 -> 865 bytes .../tessellation/primitive_id_tes_ref.png | Bin 0 -> 865 bytes .../user_defined_io_isolines_ref.png | Bin 0 -> 903 bytes .../user_defined_io_quads_ref.png | Bin 0 -> 873 bytes .../user_defined_io_triangles_ref.png | Bin 0 -> 1378 bytes vulkan/glsl/440/linkage.test | 2607 +++ vulkan/glsl/es310/arrays.test | 1812 +++ vulkan/glsl/es310/conditionals.test | 223 + vulkan/glsl/es310/constant_expressions.test | 483 + vulkan/glsl/es310/constants.test | 838 + vulkan/glsl/es310/conversions.test | 13186 ++++++++++++++++ vulkan/glsl/es310/functions.test | 3151 ++++ vulkan/glsl/es310/linkage.test | 2179 +++ vulkan/glsl/es310/scoping.test | 460 + vulkan/glsl/es310/swizzles.test | 7783 +++++++++ 140 files changed, 32722 insertions(+) create mode 100644 vulkan/data/brick.png create mode 100644 vulkan/data/device_group/sphere.png create mode 100644 vulkan/data/device_group/spherefilled.png create mode 100644 vulkan/data/geometry/line_strip.png create mode 100644 vulkan/data/geometry/line_strip_adjacency.png create mode 100644 vulkan/data/geometry/line_strip_emit_0_end_0.png create mode 100644 vulkan/data/geometry/line_strip_emit_0_end_1.png create mode 100644 vulkan/data/geometry/line_strip_emit_0_end_2.png create mode 100644 vulkan/data/geometry/line_strip_emit_1_end_1.png create mode 100644 vulkan/data/geometry/line_strip_emit_1_end_2.png create mode 100644 vulkan/data/geometry/line_strip_emit_2_end_1.png create mode 100644 vulkan/data/geometry/line_strip_emit_2_end_2.png create mode 100644 vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png create mode 100644 vulkan/data/geometry/lines.png create mode 100644 vulkan/data/geometry/lines_adjacency.png create mode 100644 vulkan/data/geometry/lines_to_points.png create mode 100644 vulkan/data/geometry/lines_to_triangles.png create mode 100644 vulkan/data/geometry/output_0_and_128.png create mode 100644 vulkan/data/geometry/output_10.png create mode 100644 vulkan/data/geometry/output_100_and_10.png create mode 100644 vulkan/data/geometry/output_10_and_100.png create mode 100644 vulkan/data/geometry/output_128.png create mode 100644 vulkan/data/geometry/output_128_and_0.png create mode 100644 vulkan/data/geometry/output_max.png create mode 100644 vulkan/data/geometry/output_vary_by_attribute.png create mode 100644 vulkan/data/geometry/output_vary_by_attribute_instancing.png create mode 100644 vulkan/data/geometry/output_vary_by_texture.png create mode 100644 vulkan/data/geometry/output_vary_by_texture_instancing.png create mode 100644 vulkan/data/geometry/output_vary_by_uniform.png create mode 100644 vulkan/data/geometry/output_vary_by_uniform_instancing.png create mode 100644 vulkan/data/geometry/point_size.png create mode 100644 vulkan/data/geometry/points.png create mode 100644 vulkan/data/geometry/points_emit_0_end_0.png create mode 100644 vulkan/data/geometry/points_emit_0_end_1.png create mode 100644 vulkan/data/geometry/points_emit_0_end_2.png create mode 100644 vulkan/data/geometry/points_emit_1_end_1.png create mode 100644 vulkan/data/geometry/points_emit_1_end_2.png create mode 100644 vulkan/data/geometry/points_to_lines.png create mode 100644 vulkan/data/geometry/points_to_triangles.png create mode 100644 vulkan/data/geometry/primitive_id.png create mode 100644 vulkan/data/geometry/primitive_id_in.png create mode 100644 vulkan/data/geometry/primitive_id_in_restarted.png create mode 100644 vulkan/data/geometry/triangle_fan.png create mode 100644 vulkan/data/geometry/triangle_strip.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_0_end_0.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_0_end_1.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_0_end_2.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_1_end_1.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_1_end_2.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_2_end_1.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_2_end_2.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_3_end_1.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_3_end_2.png create mode 100644 vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png create mode 100644 vulkan/data/geometry/triangles.png create mode 100644 vulkan/data/geometry/triangles_adjacency.png create mode 100644 vulkan/data/geometry/triangles_to_lines.png create mode 100644 vulkan/data/geometry/triangles_to_points.png create mode 100644 vulkan/data/geometry/vertex_count_0.png create mode 100644 vulkan/data/geometry/vertex_count_1.png create mode 100644 vulkan/data/geometry/vertex_count_10.png create mode 100644 vulkan/data/geometry/vertex_count_11.png create mode 100644 vulkan/data/geometry/vertex_count_12.png create mode 100644 vulkan/data/geometry/vertex_count_2.png create mode 100644 vulkan/data/geometry/vertex_count_3.png create mode 100644 vulkan/data/geometry/vertex_count_4.png create mode 100644 vulkan/data/geometry/vertex_count_5.png create mode 100644 vulkan/data/geometry/vertex_count_6.png create mode 100644 vulkan/data/geometry/vertex_count_7.png create mode 100644 vulkan/data/geometry/vertex_count_8.png create mode 100644 vulkan/data/geometry/vertex_count_9.png create mode 100644 vulkan/data/geometry/vertex_no_op_geometry_out_1.png create mode 100644 vulkan/data/geometry/vertex_out_0_geometry_out_1.png create mode 100644 vulkan/data/geometry/vertex_out_0_geometry_out_2.png create mode 100644 vulkan/data/geometry/vertex_out_1_geometry_out_0.png create mode 100644 vulkan/data/geometry/vertex_out_1_geometry_out_2.png create mode 100644 vulkan/data/tessellation/barrier_ref.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/gl_position_ref.png create mode 100644 vulkan/data/tessellation/isolines_equal_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/isolines_equal_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/isolines_equal_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png create mode 100644 vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png create mode 100644 vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png create mode 100644 vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png create mode 100644 vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png create mode 100644 vulkan/data/tessellation/primitive_id_tcs_ref.png create mode 100644 vulkan/data/tessellation/primitive_id_tes_ref.png create mode 100644 vulkan/data/tessellation/user_defined_io_isolines_ref.png create mode 100644 vulkan/data/tessellation/user_defined_io_quads_ref.png create mode 100644 vulkan/data/tessellation/user_defined_io_triangles_ref.png create mode 100644 vulkan/glsl/440/linkage.test create mode 100644 vulkan/glsl/es310/arrays.test create mode 100644 vulkan/glsl/es310/conditionals.test create mode 100644 vulkan/glsl/es310/constant_expressions.test create mode 100644 vulkan/glsl/es310/constants.test create mode 100644 vulkan/glsl/es310/conversions.test create mode 100644 vulkan/glsl/es310/functions.test create mode 100644 vulkan/glsl/es310/linkage.test create mode 100644 vulkan/glsl/es310/scoping.test create mode 100644 vulkan/glsl/es310/swizzles.test diff --git a/vulkan/data/brick.png b/vulkan/data/brick.png new file mode 100644 index 0000000000000000000000000000000000000000..2dbc6546806813593428338e810f7d5106e12c04 GIT binary patch literal 101784 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 IM6N<$g4 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 YuqWV)B-PbpO!;*Kx{H^ym===uCt?DH3;+NC literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip.png b/vulkan/data/geometry/line_strip.png new file mode 100644 index 0000000000000000000000000000000000000000..26e096ea802d933e6cc23bbd8c4a8870e4370857 GIT binary patch literal 1677 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_0_end_0.png b/vulkan/data/geometry/line_strip_emit_0_end_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_0_end_1.png b/vulkan/data/geometry/line_strip_emit_0_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_0_end_2.png b/vulkan/data/geometry/line_strip_emit_0_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_1_end_1.png b/vulkan/data/geometry/line_strip_emit_1_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_1_end_2.png b/vulkan/data/geometry/line_strip_emit_1_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_2_end_1.png b/vulkan/data/geometry/line_strip_emit_2_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..22e374daf6fb8d73d613dacdb77aad0a7427fd1a GIT binary patch literal 1056 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJFd=bkQ(Ar*7p-f+yj?I6PH zsCDA+`ZH^USlWb73!Rko3!mFC`+oEBhm*w8agfO&Z#j>F8UL5kYz^C-t$vg5|rX< z*QGJ}9QtV7#Ncz_qj49f!Gyi%GnfoI!skoQU|_bWOH*VJFaC4p2+Izj^*t;PnBr>F zQkmwQ`Dkp+Xfg3|dYRe*&NsF1oEZ3?U48E7)4*(5_s)%h@6nH)%EAwPzuA?mG30-E zRa~xipj*aXTcAPQqAo0vsit}F`7D+Po^iEdDNHs8KW^4y{L%C{Jyq?1{f*xu90%0* z{0f=DAa7CU#qvPEZ@!dp!shQUPq80Z?SC`*_O{wD?hMI4*oShm-_H=DHCOL==2lT) P&S&s+^>bP0l+XkKCXEn# literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_2_end_2.png b/vulkan/data/geometry/line_strip_emit_2_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..22e374daf6fb8d73d613dacdb77aad0a7427fd1a GIT binary patch literal 1056 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJFd=bkQ(Ar*7p-f+yj?I6PH zsCDA+`ZH^USlWb73!Rko3!mFC`+oEBhm*w8agfO&Z#j>F8UL5kYz^C-t$vg5|rX< z*QGJ}9QtV7#Ncz_qj49f!Gyi%GnfoI!skoQU|_bWOH*VJFaC4p2+Izj^*t;PnBr>F zQkmwQ`Dkp+Xfg3|dYRe*&NsF1oEZ3?U48E7)4*(5_s)%h@6nH)%EAwPzuA?mG30-E zRa~xipj*aXTcAPQqAo0vsit}F`7D+Po^iEdDNHs8KW^4y{L%C{Jyq?1{f*xu90%0* z{0f=DAa7CU#qvPEZ@!dp!shQUPq80Z?SC`*_O{wD?hMI4*oShm-_H=DHCOL==2lT) P&S&s+^>bP0l+XkKCXEn# literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png b/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c983ed7dcbb28f63601a3458a9a7d41876ce60db GIT binary patch literal 1168 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEia8DPk3ccAx!Py{l%H&2rdKdp?qp>&Kzf$vuTU3NMe}6=%5P&Y<8kibx272T8{Z@6>X} z3o&pAGwirfDD(JZ#hqG72p=SL;?4a3$s7zzI2l^NC?=uxuYDVX!z>1e84L$bhW-2_ z@64d!3$^lri}u_9hAa%1SQrkmF!*h{_58mC6GJ8wLn0WdM-=|=S7ex=#vq`^@L^G? z{r}?v3?9NDyMd_U;HlsBJd6z{j12~i4eD$E{e)WtvP-z^2GAuAw+dy-|uX7qU)~LAvP2Pd(uT&OLlCs&-(}o4?<0 znQmd)upn06?cRBoh@QjeXR;(H^8L3h`*+v3f%V4k7*__h?VoSA|DMSpT>N9_EC!!b z59c3#_x&KtjGn#ctvL_4l-1uhkQYu6;`?92_1%R*EuiAUjLDn@%GL9Ca~|;B^L1t; zX9072ecjY*6^8t<$_)|CoFCM_*%=Epn18qy@BOlFCWE-PtZXk@JI6b-n!24(k`OrO|hWvsbH>WcEX+FGv|0i2B#(fFzgB2L&YwQ=yFl7Aq z;6tzygS^Eb+ppDmOgz=|*VQn*%4fJGm)!ICT{pwKhxX7YgGAgABY(3p&3UbD$Pl*- QSkf?fy85}Sb4q9e0O40lA^-pY literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/lines.png b/vulkan/data/geometry/lines.png new file mode 100644 index 0000000000000000000000000000000000000000..1664be81ce38c07f310b1a2c4a77cfff85f2a28d GIT binary patch literal 1339 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD%CQlc~kcv5P@1D-P?IGY0 zm}T()|LHlc$wvfJ+@<#JsyH7h*&#mHHC8Mo$R_vpwtR<6_V4W&KG-oaBn}4jf8TG0 z)wlNlsj0fH`CunY!tdf6_H*lgm|JwkFw{wvt+341E4qKnyzs$|8V(Myi$Czbwr7Pp zy`b^yd@jZY14fI-ulze19Bz2$v6lVTUGwtccBcQiH`dX~5U&izbtA`AcSZ~Hp`zcYh^4+!ns@Gn@IK|qaRzt7%ZhizFBEMD7x7hvEJ zZpeN2>;0?qdx4HB;%8>ue-o+!q79R*yZQa^ZSj^hIj?p`IzP%jc)s>~(S)n)nLzIK zhs*_MXE%hIe7$p~=mo=_Pjmiz-RCp_@`_)aXIRE}>`Jlm`Gw33e|#9W?acmirFb(R zW5b3Th8S1P)9eXa4<88v9dU_qMwRH?s=RBH`53NnGPG10a?*L$p-dY(J|CQEq!N7oEIVVwkt+vhR^{3K5GYu%6665+nG6myK#0e< zw0BAL{mr z)g%VHAKP$Vk)eBsiP3bqMX|YC*44h9uCd0G;oh5KopqH-b^AYkk9%0WV14Da`{hh) zyczE0yo!)`k^DhXp@s8+fcDz|+c*4M?+c0)wi#7l(`%UyT#opET^$sa-LrT7+x_dj z0*Jk#HYe)n?5TG-cNo0>UtIJ3j;kTV)&J&#*X>fi{@ndK?X_hNgUmHu=2)43xt}E& z*u!LAL<2*YlcDnJ*ZSKm43}6MwtTt@VF6QU!S;zyJap$)EmrJ~-V~XoUZd1jZ={ uHMDR1cOIAmpCu}AY-WUn`p_nC)W2qYA|xeZ=>;ql89ZJ6T-G@yGywn^jrL*y literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/lines_adjacency.png b/vulkan/data/geometry/lines_adjacency.png new file mode 100644 index 0000000000000000000000000000000000000000..9a397778715ee70cb00b0d1e764f9b2b8580ab03 GIT binary patch literal 1360 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 XS^QpImEh(4N<(5iFRtc8{HwnKzLXTD literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/output_0_and_128.png b/vulkan/data/geometry/output_0_and_128.png new file mode 100644 index 0000000000000000000000000000000000000000..860a6cb2b9edb89f9eae658995a0e03a0da6f79f GIT binary patch literal 865 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{4Nn)xkcv5PuPqcjV8FxT zXgT>`bXf)0hJ$a7HoBWf8E<4T-|V@t(1C5Dc*dnS@9Ykw8y8zYG=Kk=;ei};gTW{o4S|st0vnhm4zd1MNvysF P%s335u6{1-oD!M1AMMVqoxe^>bP0l+XkKDxtCR literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/output_128.png b/vulkan/data/geometry/output_128.png new file mode 100644 index 0000000000000000000000000000000000000000..c29ccc0a1fa6100e29e92cffa6529de23edf1c41 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{6;Bt(kcv5PuPhWi;K0Lt z(Bkj+HxJf7FfQKh@kYtxW&` literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/output_128_and_0.png b/vulkan/data/geometry/output_128_and_0.png new file mode 100644 index 0000000000000000000000000000000000000000..35aa909013b5e0c7be7980fc718e9388d3c2eb58 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{El(H6kcv5PuWjT#V8Fv- zsQvr>nkzF8F!sH@kYtxW&` literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/output_vary_by_attribute.png b/vulkan/data/geometry/output_vary_by_attribute.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d6953d8a69fb78d087dd6776b1d80a2a6c6b49 GIT binary patch literal 1322 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEikDe}$Ar*7p-aXxS+l|51 zQR~G2|3;fRM0|Mqze;Sn`6`&TBJn`O&YkW3l7ZWEZ-3+U`1Se~Gs8M%1_3paQTL7S zwYSUj%O9I=KWoise{J!>`+3_P-487nYT*C;E;5eihb-d{2KV?|-Hhc-1{*iOf7!~w z&v@9z#DzgEbxw~0gRqok-NH;^1{Vb%2DRd=60Qq88Pt+mdej&u&q(}ZEW@14$?#v9 zNtelhaq(jgU(1LgVTiuZ44jeAHNrD=!~&+c$_cPa8g1^nUi6W zuo}p2kH`7K4W5!}${Yudoa<{i@!<7A`y&(c`OIqGu{>bjE6lw3c{$62!+$l|+|DaA zZJ1Ddzjxkr4u+PWnhY(RbVPq^zcSu=d;8yq`**h8ZcuLQyS>eJH)<>VLQs!+Ob2!3~0s<$wM^pykJZ;6-2;gU$OZ z3^Ar|f(_5-h%qR){M7wDyMc+Nf38qN}Qu749=`yy#N2-YrlPi7#BRgc+*az$vK}fCeL_nxZYRi?X2x}5*g1Jek=&M z;(vV4kE;#Q4A)AoMAm$~&BU0Xn;yGQU#jV8J&(tUj_U76=kcqoW4QBQKkti%_%10A zmIl|@TC+F>miBv07MBmDf8=2}#KLfhkN-fRA z)#vwx|NsAi({C@+j;xkr{O2wIiY0uJ=#`&m{zUS?ia;s*J!vWWMyXG_-{~ zZ}{=yy$$n%hf^KhkL}N0$Dr}+U6z6gP|bqu#`oWTYce(%oM!+g`%y$u2)vPJSiR$k UNJwV^unc7IboFyt=akR{08e|Xng9R* literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/output_vary_by_attribute_instancing.png b/vulkan/data/geometry/output_vary_by_attribute_instancing.png new file mode 100644 index 0000000000000000000000000000000000000000..d08fb348e9027dd4285b5b3c7a0d6fc62a529d11 GIT binary patch literal 1322 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEikDe}$Ar*7p-o5LW6e;0) zF?spD|5M*~_jMYsWi9&m&HT8>t5rd&g4a@*x$ys8>u#(%moxk;fGlSGT%UA7kVit@Bw^t|2)kz63 zq}}=*SChfP(h%8aw~wE@@j1hc$34g29iAs&z?4uM-dl7aQ$e=jyT19H?Tq0Wr()mr zitoGoXXh`bId5OT*#Fzwa6v*1L!H#0#sB?yW@M!>)LH*>|7UNQAhe#zCiDG{15=N& z9&mVAxR|Nn+7H(@&0{PN-UN0r2={Ov5Ory|+RM?Pc<8;3e8cMF^ zOBi_g<2L6oyfgc^J65jZ$R+ z{+NG1^Hq44-gG<0oZGg3jK}uRc%Nr{@O9x&hMe151r7eS*51iGbp2rmkXtG!z!3J# zvO!$Jezml4!{*}|e|!wo7;cx{)99VA>BgFHyGMAQp&o;~u!NfAXRQO}-zrKEyqK9) z!(dmf#^&blsKqe&C}qF@ z>Ena`TfWaOmatnd)WH2lkm+$cKU2ZR^rVC@Z+saP&P;AVNdd^IVF20R^mDWio@;Yy RiU*c~44$rjF6*2UngDwXn|=TQ literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/output_vary_by_texture.png b/vulkan/data/geometry/output_vary_by_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..0e655b7689e193a9d8cee04252e5a116a054ec4b GIT binary patch literal 1312 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEi=bkQ(Ar*7p-o2f7+fBqF zaMg?d|2O>#(C}q4-!(&qFMU1h6U7Eb!DDmIDyDjE&%OOldcv3MH`y8HxHBmDkc`9% z_y7ORf3NU%joO1$Tj?LSbI%kO#4;5a&Y$=6Xv2Dr1FUcMZWU*iV@XJIkH5^#n8(z% zGqZ!i=Tw1F6N692lMmd!vl$ea5}6EUZf*-?nZ=Tz)HdNFOM;Lw&wrld2O^jb=({X% zWl&3aVbRUtFoQ7iIk5b5kr?BQBRYaJo?1vaGyFLC;XB6xmvb@>hwrN}Og8N3QDNxt zn*p-iLF%6wQ&<>h+_)$xAX#Jk!}ZP2lLy)6vor2k;GdN6;%65_%$@l_Mx`5r zSkZpzs(Z=|0?%R@IE3kle*b>M{Nw!J*7-YS>qG*IZpY2u(_Hg>=~0G#ua_{q`8mmn zVZM}1!{RtEmIuPj%m$BATNv&czKCrIoZTawpMHRqm*c>Tg(8duQcS3@n}N@0zbpUbLJsvFCpK zzmNYP-Ji(CAbI}Wx1$1YYB&S#2N>K6=1o?wj}8Y>x(nuJLh-2VF-I|W^etv@v~@Hs0zcH7jHIyMD*lcsE=;oblsfX!AS99x1QG{O=_ygg?A^X!7U7x`XeTWK5T|$=ekk zy4=v8c=vInUNisw!bgt}*z>=)HZ=IMVY;Us|ABzRl7CbcS~wX%=O;W&3|nmEp96;S6ow|J!adZdkEb{A*V8e+34ev(uaZ&19JH;hj=^?Facg z%nA?ZHm>6VDH8Zn&%Mv&2S1a;HLm+_zsE8$B)(%LCLxci!50EI?2~pCKkcmh`W0C6 OF?hQAxvXlV}rpcq9_Cu zUVq+ipDI5)+2KsN`k&(~w?C3&Y3OnH{}RMu!>aIbru)uI%8Rra+^WAnnOA43z|gbh zyQi%w3)2A&_xWcoJ3Xjo=qWs=d~=JtcQ}L2`&GgfhpswUG0d;8c`7gb?&5^qb9QLY zH~Sw~%Y5$J^B4PnTN^G&s9~s+`ma9rAJTl{^> zyHii=O>fB7ah?Bh{nK5|;62jQ`44Q1m1cY#fBkx9@IG#L8&(6SxWLMJ|0fGF?&$ik zVHe0RJ;%-i{jwqVdGDnkGm}CXww<+jDEXMFz@#y8lAu2Gzm)#z9KG{a9%Fw{e*VaT z7n&Zd56b_GGcR7QCe3iboKex2LBR(HI-}3Fv(^2d`8N5Gg!($M2S)E@$_x|anF@B< z@^2UTAjfENHn2UCrD86_oJT#*IxIHlS2MI*uU>C;?la4Sfb{+#mWn% zs^vW=LkkEUsJN#A;T*`bxwJ_Rltv}ahH}~qH^fTHWD7EI2shll`&8?J-u7l|VGz$b z=I@K@ug}v(nF?mCcFXu<nU`&)>C#(C}q4-!(&qFMU1h6U7Eb!DDmIDyDjE&%OOldcv3MH`y8HxHBmDkc`9% z_y7ORf3NU%joO1$Tj?LSbI%kO#4;5a&Y$=6Xv2Dr1FUcMZWU*iV@XJIkH5^#n8(z% zGqZ!i=Tw1F6N692lMmd!vl$ea5}6EUZf*-?nZ=Tz)HdNFOM;Lw&wrld2O^jb=({X% zWl&3aVbRUtFoQ7iIk5b5kr?BQBRYaJo?1vaGyFLC;XB6xmvb@>hwrN}Og8N3QDNxt zn*p-iLF%6wQ&<>h+_)$xAX#Jk!}ZP2lLy)6vor2k;GdN6;%65_%$@l_Mx`5r zSkZpzs(Z=|0?%R@IE3kle*b>M{Nw!J*7-YS>qG*IZpY2u(_Hg>=~0G#ua_{q`8mmn zVZM}1!{RtEmIuPj%m$BATNv&czKCrIoZTawpMHRqm*c>Tg(8duQcS3@n}N@0zbpUbLJsvFCpK zzmNYP-Ji(CAbI}Wx1$1YYB&S#2N>K6=1o?wj}8Y>x(nuJLh-2VF-I|W^etv@v~@Hs0zcH7jHIyMD*lcsE=;oblsfX!AS99x1QG{O=_ygg?A^X!7U7x`XeTWK5T|$=ekk zy4=v8c=vInUNisw!bgt}*z>=)HZ=IMVY;Us|ABzRl7CbcS~wX%=O;W&3|nmEp96;S6ow|J!adZdkEb{A*V8e+34ev(uaZ&19JH;hj=^?Facg z%nA?ZHm>6VDH8Zn&%Mv&2S1a;HLm+_zsE8$B)(%LCLxci!50EI?2~pCKkcmh`W0C6 OF?hQAxvXlV}rpcq9_Cu zUVq+ipDI5)+2KsN`k&(~w?C3&Y3OnH{}RMu!>aIbru)uI%8Rra+^WAnnOA43z|gbh zyQi%w3)2A&_xWcoJ3Xjo=qWs=d~=JtcQ}L2`&GgfhpswUG0d;8c`7gb?&5^qb9QLY zH~Sw~%Y5$J^B4PnTN^G&s9~s+`ma9rAJTl{^> zyHii=O>fB7ah?Bh{nK5|;62jQ`44Q1m1cY#fBkx9@IG#L8&(6SxWLMJ|0fGF?&$ik zVHe0RJ;%-i{jwqVdGDnkGm}CXww<+jDEXMFz@#y8lAu2Gzm)#z9KG{a9%Fw{e*VaT z7n&Zd56b_GGcR7QCe3iboKex2LBR(HI-}3Fv(^2d`8N5Gg!($M2S)E@$_x|anF@B< z@^2UTAjfENHn2UCrD86_oJT#*IxIHlS2MI*uU>C;?la4Sfb{+#mWn% zs^vW=LkkEUsJN#A;T*`bxwJ_Rltv}ahH}~qH^fTHWD7EI2shll`&8?J-u7l|VGz$b z=I@K@ug}v(nF?mCcFXu<nU`&)>Cu)pvNh{w!@4ThBdSm)#Mu!;;4mW1btgYs% zP?5$L@{#xJtyUL_N*scR79`Au6q&f&dUtg-kDd?%hqduzVTM361`gq&iGH)l{uTY? Uc0B4DFt;&yy85}Sb4q9e0E;D#PXGV_ literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/points.png b/vulkan/data/geometry/points.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a7d47155affd291c49a6e883c98802e2420bb3 GIT binary patch literal 1046 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJFdyPhtNAr*7p-gV4-Y#_kk zsQLf@=5HIOC-7f8Hqmur>{mu^jw_OEhb!)HdwZi{$@+`@3_Z#W0&2qxnVB#gKf%ww zt@g8=(==s552j=#3mj1D<-MoppRt{LMB9-H&Ij5pr@ zS|GgMt!m<;V?f=11O*PUFknLuW^eAc-yp^KgRwHfG^|lE=OyO>5B~Kt85Dplh6-Qo zb}HydGh`o15S6&JNti)_VFG2*z?go&@xlK?3>-k?aiC=nyaVhGYkf%Rd;6ZBcU=P0j5A#N z`|m$HpUBi;Ak5Ihi5>MP2Y;|LV^loDa^Ud{hIh&gHCL?lKkr*#@HCUJk3k>}s2QhU zfKmw()9a2EgI$RyL)bKxUNKz5(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/points_emit_0_end_1.png b/vulkan/data/geometry/points_emit_0_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/points_emit_0_end_2.png b/vulkan/data/geometry/points_emit_0_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/points_emit_1_end_1.png b/vulkan/data/geometry/points_emit_1_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c50c0fdfd418db3db95401b242e6937e387c7007 GIT binary patch literal 864 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{bx#+^kcv5PuWb}$aO5~* z@b35fnflEKf>>uiczE^<--Iu*{0#3n7+N?-(P#*e7y?U~H|)MH{NT!L$#90im;4N` fSQrisQB=2DgYDOhgG(xaIfud1)z4*}Q$iB}8HB#N literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/points_emit_1_end_2.png b/vulkan/data/geometry/points_emit_1_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c50c0fdfd418db3db95401b242e6937e387c7007 GIT binary patch literal 864 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{bx#+^kcv5PuWb}$aO5~* z@b35fnflEKf>>uiczE^<--Iu*{0#3n7+N?-(P#*e7y?U~H|)MH{NT!L$#90im;4N` fSQrisQB=2DgYDOhgG(xaIfud1)z4*}Q$iB}8HB#N literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/points_to_lines.png b/vulkan/data/geometry/points_to_lines.png new file mode 100644 index 0000000000000000000000000000000000000000..40460f80e0d4bba0bb23cf503bfad9d3130fc6eb GIT binary patch literal 1368 zcmds1YfO`86h8gRmKL$JV>W7l6=Wrg%oR0&7HQpJTx77wFpkPv)RlBx1ud6V`oXxw z6ern_S%uPOI>Qzw7egu&Yyrh376I!MvYk=x?7LG+nR%P>gSD90T1KPMqeRCcyioi_=5qIp#L4*gTKYLif>AD zmdSuS`yjs8WP3!8vRxv@2`8jd(@o=H$+q^!6#cJ9{OY^25z&jLA`XeK1itABiGz(u zmB2~|R^cRU#`6T}P?2tY?!J7*EETU7O^)yd6(v2woQ0S)S4$GP``c&o;vRK|oM(Qz zz2=m;qbx{2K8$~C#|IKHf!(+}_w?hZpXZ$`BVF&)-09XxPB4~|r1CHMaP@jDHo~Al zJypM<84qp%0|(0r13DWrcVgucNa>I(Gu83Frl43wMlYqc=l4r#dPnA%IT95#)o2_O zq)KtJ)}3{7UV$=q&q(J1v{XF@GrkG*uLIFpb*~IGL>W;bVBwwm9r!BXA719rm(EjR z*zdoCCAt{@XKj^k3Io|MgSTrIvNKZ(myc^gS_O7nAXnuc`eet7#9DAt2~w+Ua(v&k zOE#%)jAWI!g55B9d(CiA>$Zf?)lPf*lf8m}(~LKVLDQ#eHUtk)tqFo#o~e_m zP~Xp(=ZEfDIkskN1N(!%au}7jn>iD-8SY9smY`7QDZt0P+eushHAP!^i)Bn0PWS5mZ?JYDi>8-hwB)+V2C(0nIrD?@ z?9?0s>E5qpa%Epx^juq>dSE1p@0%wyWEbY#;Z0(C>jqEFTBqg`C1nxP&-feI9~gD9 z9o7E#ZT*{+KhFy6p|z{~*ubplpL^T!oC1n#b6SEeX3T}>dezX2r#-q%pD)wF6k)-4 zuD1{!i^kr$qe44Ba|FX(1~8pJQF%A;UO%*JuW*IAx*A6_h)tgJws2NGp(7PqMQg$) z@VZ?I-Fq!~wU-FZp7u-;#vw$o9uiS@`KG}a@^|1rPu_-m-``t&uYz4#h3Jo3X{xs3 zfzcOK5S}RL86TW-=xC(5?NRfmOBr-8^%i`cnhl+!E?t6G7ttmuUPSk;p7KbRf_vX3 zue$4egyn_?Ab~$tC?zEdc|Z^ts;wMjI~5FZPmZcB;j95kmj&O9fCPaOlheU#1pY;D zA$rAX0(LG8T6|qxs@v9#AEUtKJpq1sY+n*Lxs*2(HZE4i5gQXylQI&ozALKx3p*I= ARR910 literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/points_to_triangles.png b/vulkan/data/geometry/points_to_triangles.png new file mode 100644 index 0000000000000000000000000000000000000000..69caa8e562473c3b80765cd7c0a5c30dce3d8410 GIT binary patch literal 1484 zcmds%?N3v86vxlKec*y+6cmOaQbAERQ3;e5AB(oZ3hO%5Y=mly1B5tf6=>?n=%wAL z0t;j)aSk0*oOKaI>y(FfR+wbjYTKb~Whh*lI0V!p<3X{myJi1?FZOD$&M!H?N00{|hP2w-%wNDk}s0BChWe#$OY!;=RCg?D+2Dt?W3zLNG! z#7(t5x~8SJVd;2<-*SEJ3}-`6Pg-nl9Ir{*d=qJmKyVofx2T};1?ob;Vt|&xCT)(b1B-=f=>>t0D5wgtMK~95Z`{Zd#uA2P$!{q5{&bjfPZ+nRr^T z*3TUcb*gG}uxBfej$q4tjm}KmcgbLwTR>ICfHpZyIljfk#I2_{JxGgp8*OZ_`cD^q zx3dlyL^}0T&AS+B2|R^6e36_qIjY^#D)3r^(NkbMK|(Ec55GlT#P}v?`d`B`>yUt= ziC7mcv^sla2Wr1!=zglE5<54e#Xk#e5mcE%q%PYE>vLP%wNRW+)xQJu7^eF;6kBV( zL_Dfq0Q41p5|SmG@DfF#67tXS5KT#mG$-y1E!6V3TkdeJfW#uD!vx%*5$}re%+VEK9DQ&0ocGElLD6hn8n%VixxZgE8xDp|fN&}fkljgJJ z#^K&s0koa=QO_;&MoNCy#Ub7KFWAK} z-Mty{JLtQ_H7VYki|>3HXa3e+58@Mu>#KSCj^;SC(tZXM3%W@ra+LXC{pXhpQlYKy zl6K436Kf&uPh|pMcCTC=0}8^@S`)@baDPL?WT|AHEZo{MeXhlG9)rhWN7`&muPhWY z`GU|-wlRU5J(V&P<=u#A8i|utH1mM)Phh-?M(_Yjkmh{O{b!g__V0#&1ESgY+pTR( QCz;Y96o~jOTV8X0MFdk?>ibgKlyKX+VanA z{6E{MKsb*Af_x6v6-(!^+l5OO7 zd^~KZC){9otv&Bg!5nYagr0i#{67V2EWg!vu;)E0GG};D%EE968Tr-ou&jT0^QM$J zgOZJPv@%0WMcFrdMulUWH=k!|P&j|?pAf?$8*Ayq$qF9D%=AkE6ecxr0y3SJdjJ1( zn`bgH-O>(6<~d5&w==ZlNN)SMox|bG=0@rIeg>Acymx=hW>I+c`9bgg>^{S?I(fEt khj>xL2syk48{3XSpOMG#?c3Mcz|76y>FVdQ&MBb@01?>|F8}}l literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/primitive_id_in.png b/vulkan/data/geometry/primitive_id_in.png new file mode 100644 index 0000000000000000000000000000000000000000..ca373920c4cce474389faf1100c54e4ad1f838ab GIT binary patch literal 2026 zcmbuA{Z|uL8prR9112DlA=m~e0zsh^R^w9M7n5RA#HuK`f`*p(QY_knMMMNiCUrqr zg0uxHMIbr#U^q~LE{7)djfvRA;!CLPma_;ZI$Pm1xFKa}2OBec^B-)_{`9?fp6By@ zzW1ED=hpAsk>TSN|M{KP(S2p_1>P zI2mE8Uoz*r^zoU$SDTkxlGqRGuAlGwbDl1HOpS`4TjsI=F9U?N0g(V9WGFCT;3GD` zxPTQ2INSb*!r(RGk4+`EF$p^O`kmQ0bnr_%b<)e~h2%Y09Bu%I*<|TE1Nm6eX7Jh1 zr)P8*Oh`XYyxSoiW*z$rh6>^OW&7#&L=y;HUmF!GpG%YlWW0NoG=*scVZl3 z|B(Uvo?@N1x`rj@65&5JF^*h5$wtTDzUmOl#aPl7aOH^5WfJ0uFNY|8-pDvg^6S7} zOw-_^M#iGU8o=v`<<2!86%x?iPMwtF)$9OE(X&GN$KJjO3)S^xye?aD*<9c#UmE2JO`Rbpp0^&j0H#B#e=MLl zuA$MQTzPKRInhJV;#ZJHN7dTIR{bxNgxcA(q%wNkSaU32orun zFhPSBK3W!mTJGUQwwNduTZPXoUZ-nxeiKUFDsvf1j};NV<-v=qk9UE8cVO?$jcpj1 zk?*~C3e_L?*WeU0IgPw3!Fuk~Oq>GVK%{r0%l_0AM8@4%PfCo;L{Jnl(BY{kX|;3% z=&l1=9%KJul_;7|h8vlwD{i>rJK7>mbr-V&nT@s?^xBhJ;(+t;mkRgzur7ysC>L5Q zWk$s#xf?(OnfNMCO#se1;GBFG43me!|F&>IO5{#+-Z#-g-LGtGj8=J>rwB=Q0}1<` zONTrlkk{duY<(F5vR%f4f(8~vJMRB!`s>&y5=hPOxZr8Za^6!y(s6o^yi9E{N|_&H zgP;0p5z5R5eMLN|5g_IW2kKhT*X!P|12KK>eI)3++G=aKHYleo4PgF@(LXjSgy>*% zt#`b8UU5+DKj>fAfz)1o9%Z=z=6i3JHYyb8;E-Q2OC>x5)+T*ZNSVVyv~T|uJ;V}y znrKUK{R#c}>G{@RMI^GNtZG?@IYN|SZQS4Ul>Pq4@Bby{L(QD44>@2{SV>CX3WD4aL#)%Jiavjck+Q4}=rTRt2GLOvZIB_jv2y;0s@vJjv&q zobx%~Wv0@LV5xK$g8XL&jS!*B!G$&VQK%Q1wgvDTEBD8vBA~(sRNd>l**lX z-(oycLOCDnYx?D+DyLy~I-@G%)uM-d6@15L{C*lRuGZO@V^#JQWDZpemPWA~Kx zq%|+#pm?P!abk5XQkgji^J@!>;w8`QhA*K&Vsk|{so$p9y1NuhXG57Mn2Pe7D3tuC z1%hL7D7m8vd}E~MMv1oR%0}b0H;CxnWR%0<(Xp6k)A;dZl%RK!8fO^)Jb#|Be;tsN zf5+p4{W4TB2PU;J@M#)TtY>;@9JswjEMW&|Ja=0jOJ|+WTC*nkbDi#8(+r)P>S-$!5Tt3?{uGl}x zH;=BzOlv;pa2jJ~9gPp|iHIR`d>3u?o#Iqmik%H51c7r>l3#Ita_sUS}aCff~TS&AwJM;>t zRS}vV%09&ha=?((ZBpWK5>;h~w4Aog4Xt6FH7c_agSlOD8mE(}_69}cr%AN`lE{4| zN_bD?aT4XZ3@ksll!_8vUImT6w7}6HeoI#iU&OO7m7Ze4ZWFA1ZX=zJ2PC#p>BH7& zM8PNvQV9RzyA8~bwNbGqa)_92x!K0@>p4*JL4kzx6%prVbCT48H=dn7aGD7RP0(`m z1=8vJDxck5csxrjB&LbM6X*0*g1O^m@x%b;!#a`GVD7YvtO4_p=S0?ldA)R~d1>oP znc$_^!otRn!$AWaY5!H%?=VR|b8S8IdNh*EY~Su_^e?*Lk7edgIu=N4YtguZcDxBG z<(?LQP{F*T8vcoYk^FGU)w#_v0N>k3+WiNUnG2&uxat&6q9!b$c;r7h_tNT9FWm3l S=-e&-vrt`W)DP>dJ%0nsMh7SW literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_fan.png b/vulkan/data/geometry/triangle_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..720b717e93201b63fbdc697912441d813af73ec5 GIT binary patch literal 2197 zcmd6p`B&4&8pbEd7YIbe$PyM6lxlh{R$0XWB~(J7h!SKMNN`~hE(TcwhUJSCkjoOW z78Q_05!q?9a!mjwM1)pl5fA|rKtM#0H7r3&XuN;H{pFr>f0{YxnR%ag<~e6Rlj(Y# ztg51`0sv5TaM4Kk$z|= zZ*OEu%LmkORHd8GV5Xhf!c})@`n7MN?zT_1UTT1s3y6mhFbxTsA#hn4KC|#zT`nmaOH2M>@}}hy0YI7yHl|r2Fp(V<^$1%ATU*NZ;-X^NPnB z^hY4d6L4JJl)B{PvPhzN!w@37-qk^FHT{STSK$T*{RN`m0&F5IyJr#QjkF=s$h$U_ z_P}liDEYpE(x%ELe86(Lg;Vhwqsty`BxNpL61e;=(hwwH;-MgYnoGXF9rIQ~ZLT2XBybU}h8uU3L z8Mr4n(9K8vH=$>(`N520+wTPVwC)y&wvcLP&|8C|y?*xaRFh&?l=IvQ+y3!ZVwjeN z5kC>Y@mPfShO%IGJ6aP9_ZeM`!|wxvs&dfSfT0HyAC`khLCw!DL?WavTO4sZaBtdN zVxG0+PvXqRsdVy{mTun1q?6P7n!)wU0WiZstk1Qar9SW_5VF|8#)wHD>94i2sT9*q(|Lcp9E9@=JR3)Ab3?n{n)3qOfo~OG@K`%W)T@Pq z_Zl92SenOTy6-q(B9CZ^AG!IL#F+K3??{TAx^)t5Wm-*FX?2?(9L!J_-Xu4B+(prE zkTw^m@j0mrBqdJWhv#N4Jy$R6l<7!Bc`ogW+hpfVyY!o*bZGvRC3v`3tVKjlItye%?m_HE(hRSaz_t z#F6io0EQ~Ir_JWrHa&gXigmpW9uY7}?JryPS;zz@Ad?Oke>rX3KTYBEQ7CC3oW6XY z!zam@e!trqjdLlHN){*^pLc#yzgCW&4$mu0Npcr!xX1X3SY$Y-qwz)k-KhLYAPT%A zey`0t9xcDn2DmaeiBS}q~aUBh6qBz;QDelf;#VC!!lp$~CL0Mi_ z^3369b!;0xD&%d%Qwp_q+#HTwI01f`3=6~{q-P{2`WBEo4(|a9jw)VQn7ZFqlsfXV}jQlhG6R zITaf_;g7@RRxR(v@3=M*x7z|>1ddb!a7{3r!KoxeGCrgtrG~c40JL83I|Gq$BhO;JXpYpx7c%e zwtk1vk}pI{Q_r_jhlRyGQ8zT?YKAdy}x|cBu8DcW&n)n@``EjnFU?2m;Z%*6lnFgba(n?lYpn? zo%KYk;EBJik%CV~^8|?Ybz4n)R(zEmu(&8(SwGwHO2UWWlm2V}J|Cb=RFcc`cgh72 zjs&i+4Ohe{3o<5-_k|WT>P4h01hAd}>djM=$Cu(Ks9_}picLoGYpY>b64?>(@)a%(ts+>XW=r{5L zwRoUUAC;fLT<%uXwecCMCWF|KvqA32`LwzdbqiaCO)fQc`|?Zsw>(NMO)I{{;6}Th z>u_|jK*cQXTJ@?m7+XXODon0fZbeL9mp2vY(7G4s_is;mVCbBWk5%zQ|2Q@? zX9a)!<)7DebYetd5Dg#3gxqkO*D6g-rg*l2rd=7~%ZcVw+1Z3yn>f{xqnTby<|Q3} zl#dOif`sO_fTqDq_ud4Z?Tt)!{z}w@(3z>?=;cl0DJ+XHdjT!jx*fMxP^wd5eX1mP z{p42&)9`b%$nLorSY}c}7A6m|6`1XcKfu|>JYU^Q> nji-3behg?9A^tZc-@wU!*4){2#HU35-2hIcb(k}lE({!}v literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip.png b/vulkan/data/geometry/triangle_strip.png new file mode 100644 index 0000000000000000000000000000000000000000..c4fa315b0f30582e4e61584518c66484de2358d4 GIT binary patch literal 2107 zcmdT``#Y5T7GLk{WrkeFW$!%*vrU-Yu|qm;g%NT~XtQ%SuI0F#o=QZScR0ChLfNI{ zGPWJbb?dkrhS8HyJWuVZPA;Q3YLm$=gyy{M|6u=ke)@jb^Q`q*pU+zBS>JEA=P@S* zISn}gP;hZ}I1YdiR|Lp1#1VMrZWI6+b#busPAYjn@v8Yvt1{Ee__{oDF+A`_A1{W}v3U%$)nHWc(7szl4FDDlm=$*BHV3|IdttWf(ajQAjMF z>v+7f{JSGB-r`L!UGmy1Gb(zlI{MT6dSf@W-Kz~8w2E80l4I&ydNX@k+9mSFu0>8b zJ>4`;GMG@cb3*lx&Wgf)i1WeS0ku*|?QXVMH(l+iFen&f)CGWUBWgx(T9b&+X;Ivt zf5jBqJxZQ9EsV^EM5UL)y{vbM;+}YFO$z8LjkJ+VE*-*0GU}i?&s#X35fZdarbIX8 z9g=hCjHibB5}>lP!rk!kDf1ZiQdj1wwGw{5 zDSS)$Y z3lEEbNjiO!mTIlqw3brfRpW#g-61DAaEmLDL91hajhcBHJ?O^nDuy6o)r&TiVDF)) zg9J~~S(_e?MP)K0W??TIzRA-_{hC%e8Yd{PmC8&@`l+HCF@3S}nsRxjW=L8zcsot> zZs-#E#fmj@-0u7=I#%qlJ$)wv%q&%z%8^p1KYH;s(hL}yxKKzJnQ-J>NvxbU>7{eC zQcY{EG{KX?>q^X+8(Yux;9yb!#X}F+uaW}_`sT8S;-pjC65f)^8jgb5C@j#F4n3}v z8Vi3r{YZO9oqtu2H*5QqwH4H>$NH{p01UfgtQAeXUWIYb0sKv8KDgfkko>q80!VCb z@p0tTW4@s443cCZ<9%X3_>iW0oNX?cdWKE4TJ^qeT{UWn`sAw%E_G!wFFJlP*}j;( z8p<{Jpie)tcT=6I?_=92(m)F)p3q14_nV^y%+YoA{)32feTs*aLw`)gCD!oy6Wm2AI&5sd)w`Kcexsk2u=*l0HkeT)&73a9O0V9GJ~aqq{uRLCEeJwL}Vp)(;_(799dVB*D0Y9-C_Mbd_Y%u~ zIZ@O}(&y6YIYv1$J~DX50Lgk1RLa3<_+#ZMWn`G0`YqT|Ll$Y^(k?Jf1FZS)uY0w( zIeI8%q|M80GFKNKwZD2=2-vw9FDAvp9@2_!QZFmVN*|lackg?;nq_hE;9!K$SuKS8 zkIx%xvL8$Q4{SeI!I^pTDODzxJ5}_IC3R5K2Tnw1td9}YN9!ny1R?8$-SWwXC|s6hvOF$Tj?V4n-xJxOl<^;&1Y-|rpj2?7 ze8Qi+K-)d~qX?UH+B5GQt8m}mZk>YjKPsmD+r;wB-1(wjVk>c*^Dc9q5Jk&5zb<~T zEYUzI-a^~YGUmh_7|t_Fui#mMPM|Vur7v?x5h3rJzZcTgC4j< zYN?73WDy{PR(rLj!&GsH=DeT8SgsqW41EbKtC^iha6Rl6aQVTswxX0t?pb8%0>;Xs z3&e|T9fU=;FHHyIT=IYcjJxhx)C2iQez+=RsB+pd{1sWSgW+z}k2f)V*g}??56sY3 z^z5yU7GYIQi%}Ogm8j^iMUbS1#n7A1q9$ahuFqTUvrAm>y)g>ZVP>X2l(bsD?onnK zBHUe-w+rF4LgIP>hR3%axfqxI&rP-x!mYhyVm4_a3q@zD^Bv*s;@e7`G5!VAe`9Ju z7smU8Y-NmOLhp9$bf6pCf*X2LevK(PU_2t!sk>|c^I9i++L$sC!7Gg5EoxtsVVe7i zbNw2-NCYxZpcePGIe6XgOT%CylIIr1TQtS+Z-p7(EpsDziy^XK20(u0ecr9PM~ amX2WIO_TS(O5YQo0&sCW=Fo7MmG(b6j%7ap literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_0_end_0.png b/vulkan/data/geometry/triangle_strip_emit_0_end_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_0_end_1.png b/vulkan/data/geometry/triangle_strip_emit_0_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_0_end_2.png b/vulkan/data/geometry/triangle_strip_emit_0_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_1_end_1.png b/vulkan/data/geometry/triangle_strip_emit_1_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_1_end_2.png b/vulkan/data/geometry/triangle_strip_emit_1_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_2_end_1.png b/vulkan/data/geometry/triangle_strip_emit_2_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_2_end_2.png b/vulkan/data/geometry/triangle_strip_emit_2_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_3_end_1.png b/vulkan/data/geometry/triangle_strip_emit_3_end_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1faf7ca5c982919c47b1434a7447e51858d43da8 GIT binary patch literal 1206 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEiT2B|pkcv5PZ$uZ}HV|NN z)cU@E^QVa+H~nsIRQ<@9u*=_J;tj#9{M*~^nk&4#ewCjg#+^aIXA}+U5IFSi`|q;- z_t)3)=&3LSzGshT*~OypVsoQ-+L- zEpT1n$RPIpltTA`UvC)1wtoL`i+jyU-ULVYKgGLw*LX6B6+c8UNaFll#n3 z-UOw^{QtL|{n)cdu)*_;NrbU&_FM*^gkz1fKF;iZ!@#!fl)z2yp3}Su0jqibZ(I8{ zI!u{?IjS%r?2oUuK*PZ`HX7Rhw?*D$&!my`#^-ac@0}KDp*?ZvU9R|O&AN!x(o#W5o_oSizytUPIhB-$L{}ZLzw4Fl$Auc2Eq46=sMoK|z+RB>{rOzE!+Z(ud@n8Euzq{Ywn6xC zz1;gMd!`M{?4N4x{j_6w;L7)?bkFbWHyLeCK9ug>d!YCZ!@Pta#~;tOac7WwvY_|$ z_R2X7HU}7`=jVTsux^kqSn(`H|AVc0L%zhn%AaNTg&Y1CG(3AQ{ck=)&B23_?fE}V ztsCksbh0;#|2V<>K=$x{yZb+s8GoEU_~OIb`y2elF{r5}E)%Z*M#R literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_3_end_2.png b/vulkan/data/geometry/triangle_strip_emit_3_end_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1faf7ca5c982919c47b1434a7447e51858d43da8 GIT binary patch literal 1206 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEiT2B|pkcv5PZ$uZ}HV|NN z)cU@E^QVa+H~nsIRQ<@9u*=_J;tj#9{M*~^nk&4#ewCjg#+^aIXA}+U5IFSi`|q;- z_t)3)=&3LSzGshT*~OypVsoQ-+L- zEpT1n$RPIpltTA`UvC)1wtoL`i+jyU-ULVYKgGLw*LX6B6+c8UNaFll#n3 z-UOw^{QtL|{n)cdu)*_;NrbU&_FM*^gkz1fKF;iZ!@#!fl)z2yp3}Su0jqibZ(I8{ zI!u{?IjS%r?2oUuK*PZ`HX7Rhw?*D$&!my`#^-ac@0}KDp*?ZvU9R|O&AN!x(o#W5o_oSizytUPIhB-$L{}ZLzw4Fl$Auc2Eq46=sMoK|z+RB>{rOzE!+Z(ud@n8Euzq{Ywn6xC zz1;gMd!`M{?4N4x{j_6w;L7)?bkFbWHyLeCK9ug>d!YCZ!@Pta#~;tOac7WwvY_|$ z_R2X7HU}7`=jVTsux^kqSn(`H|AVc0L%zhn%AaNTg&Y1CG(3AQ{ck=)&B23_?fE}V ztsCksbh0;#|2V<>K=$x{yZb+s8GoEU_~OIb`y2elF{r5}E)%Z*M#R literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png b/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b493c289bb6843b02414098b9f468d6762d93b29 GIT binary patch literal 1552 zcmd^<`%hB`9L2x4x0IqZbSj}xq%0(`_+UjI79+F@T9JoDMwy0N6;mVi@cjRx_7>vgCI+71K-m6cXO1`eq_q!ze$)jwnV>GMrazBwo7hjSz~ zMaWp;w*mkd3A^I=0wAsv0Xofv%#yP?0B(Z`@!LL=>8JkcKH0yUsp*R-9wBS*sB`5_ zG518jYDm5J%Abqx_w1RF(nHhRyqOaj(>^d41k5A|)PaDDD8&@GMFq77P*(#z_HNHtY^~20qsq;u4&NcrJ^W-3smQ5T zVV=}udC#KC&Qih8uY4sFn!}xG^U^t+VHJGymBwb6NrT{UXFqoOmhlpTZ_8m5>kwt! z1Kv_P1&`nP1u0oetdoHKQoTFbL&MkXR5%S>mj*X}+w=jg5liW2(Bbq~q_h(I8dbWB zTpx(I=w>6a-V3V*Jo&r};ouPdVa<91ERlAef535`3dHXBUgA^ zg!Gy$^CNc79?+?6g>j(HfA)BaZyA~$_anZg1`doP|12A)hfA(ydSclW=HD$U&PEE2 z^shVT_v)vXdP!Bsygf#~Rzq%$QZf~1>@n>~Cl<;UC^Ouz-{D&18)-%_HvZgF`eS38 z2aBj!O2&7rjqDgS^h~sD?H5Ah>DlcPs3zJ+n@x~Em9hH-e*tnR@93=R$!XYeWbfiFV7AnZ#pg(1^iHJY~L4+vf`f>@qAd73^5$&%&L7Cqum8t5(5s8PM5Et z^qxS981jR(UR47jF}s;1D6igTG_^%Hg8m+Z(B&QqMR-Tpi=`JHmFkg*mpK*MgQ_ce z!0;s&u4(c;1VIJEFRq@Rq6^T1p%>Sh^LZ%mc*C5(*{voUrf!g? znB4*{BU{Ce@v)nVBzRqfn*LPC8e!OacVE@QOq2vhuI_vMGSj-AjfZHka?1+?)ru7y t^|!q8qNEm7$6IFkdPKlw{}*d49 literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangles.png b/vulkan/data/geometry/triangles.png new file mode 100644 index 0000000000000000000000000000000000000000..ebfe79a633040b810ba9e6aedac0c66b472a47e5 GIT binary patch literal 1443 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJFNEKe85kcv5P?_TV?Wg*dU zG2rd*{YKTHrKfmU)0~oiTf47XwYNLy|9s{{vrli!z0T|LtMnTy!*f9f4q+Oj-|ydW zOC0_BY`^~U7*-i=$%fmB?W=qk;v}nf+l$V8&%k3^GmVqsL!=hNc^lS>pam+T4Y|e- zJ_PD99FRZBaHpE zY-c!Q_Ga8dm-W<(3@o@89W`j>nf3=v5TN3|hr-bEKGHpn>f8I8YzrBV< zB6H)p4Ug+n&#g`?$>%qd34{q;>X3^(R8d%yNzd2lglOT;^*Y(<~-4@Ek}e76Zk% zL<_U`97hJWq!U0-`Z!2bh%-v`BtG|GGEfkFpuuEdVfbJ!OG3bAzJFh)zX~A=3 z`(5cTk&i>4=rH(iT)qCJJA<6jpVvYRazzQ5u}lYodA`kJX}H^Qq=uzox#Wkh91Qw` zjaxYwb_=vwax&-}zj-adu+Np{ngYY084_o_8GdY&WdHx`AwM7U#trqlZ+>3-DhFh; z?7s2+2gd=SxSJQ>{;THzhB3qG4V(A-F+`kN%+Yb=J`2MkmWHP{p3YZi(0RFqz>vX{eM~fqeBtfPoD3n$9sWCJccC;#kdquC ztprB6n~X}j_%$U4o0J#VpIW1M9^|y;z(|&3e4yG^qYHM}X_<(qc7_kSY<0X$2l_h? t?qO-jH~#VYbCLkZXBMC|)4_yPa` literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangles_adjacency.png b/vulkan/data/geometry/triangles_adjacency.png new file mode 100644 index 0000000000000000000000000000000000000000..14e87ed902a8a5d2c64f6b6a6d34bdc36a178864 GIT binary patch literal 1445 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJFN98VX=kcv5P?|K*A_7HGz z%t(4ypL*_8V!zHm6`|Mzr)?bdL)JU8dH=Yv?d>K;&;M)e7&i1VILsgy-PpgHf5WZk z^__npl>LOU54;!m?2(B-c`&603?Utfbkz%(v~5A{14c6@xeJ%(Z1+j5p84ZDK>i~Qix z(f;Unlfg$uWjFU5UFil*9$RhI{me6t91_yzJix#3??+D>oXb5k@(=pWH9AmI=}qv_{C1s)EPL0@uJ(d48h|3decvr?ewvg z-E%zpKDR;XoOQgvjpwrMpS^tO>+77$=Z@BTW!i<&N-oob&yyj%!|1HB9Xko`FaUx-(IHN?? zt3#KzeEwiu$93ki%L5x7X2%)*ppeCfrp2-S`m_JNy6#RNJL%^WIS*VBFUYz5W^-ZQ za=rsk4pu$O$*aHj6qGcKE!uh(1+ypIe#ZB0@$*?#b>|*_VVrTMU~`lbL-74w%&S$I zHslt!--#}d&=hVs$z!#836sIswbmQFv>0xil|R^9+Adne_~Y^x#o1+Y=kz5Rn!i;o zt}osBi=nyFkmLTRs|Wl!UWeD8dF^j{ePuagMX!6_chSS|pZ&6Ae6VU||JU<#PQ9&< z{$$P2cQ#;uA49>_C#|Z26}*fOmT|_vsl8t4zfYd=!3Lfm=Q$b5ed8j88s`f#$Ze{+ zFu!!o<#oyoGV>Du+c7>!oGd==*_Tn_s}k_#j%XE#Y40v&}p#iSrl~ zd^TLE1j^?>K zC{&m;HW)BU9PmA_#bj{gIY$RmwE#%DSBi=0|^WFoZ`& zSlQoa1ZMPttBbeqy8V9#OT%oQ?>jjeT7Z57O6oH{P-Oc%2b7B%+JSta$2Hsj#Q^!B kI477_@aLpqDf^qB<3-Gi@3oQ-fWmdKI;Vst0L>xb0ssI2 literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangles_to_lines.png b/vulkan/data/geometry/triangles_to_lines.png new file mode 100644 index 0000000000000000000000000000000000000000..6a43f3dfbb959b54ef7b527e9f3fe05283e790c4 GIT binary patch literal 1350 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD%UQZXtkcv5P@1D)O?Iz(6 zxa!64{YJYpnxfXNnV+F@_QSl*TuJ&Ijm6KIeY=+D-u}kx@$2wUZ&@Lcz^U;?|hzlXnutigYkQp{x|P_ z@AKdM`~07oMLPcM3C|`MPhVVrSh?RN3nzqbCyKr3e)dEc5J_}Nd6J#NC? z`GGMkE#Sb3==nH*A}I8LC_(X9y&J@aV)Y05o9}mSzxCt)*J;nD_U%@aWZ=KvQ~LJv zmLJc{elXnmU2yhIn&q>_HS_+wzQ9^F1pEjDr`QWfk%whGJ3}Q*&(@n$~6@3`Q62Cteg*lh;Sbdx;gMtqTsipsUJ{2f& zhwF^M{rpU`t!o?^)XX0{?fUws$y{fxGsBLT6Yt(N?cU14U> zvlFBL{1;@HmTvgp66`(?!+-O^A!zjG-+y(e(JB)E^+AFSM|b4Uo_L4T!mzuR=kfpZ zED1v2?bfPs^>6-Buf`z%t=jQ^@uXWPC43p|&NMxn4346RmXGtp1wfivZ~Uzkg(m44 zbAX~kpybeY%Y3```Xh52glE_O`Tz1KD`P}EgHO(~qwlXq9amwv^W}t!(eEpVEUz={ zIN4;U$Cx0o`+pTQ02>s0{%3gTe~DWM4feM{pZ literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/triangles_to_points.png b/vulkan/data/geometry/triangles_to_points.png new file mode 100644 index 0000000000000000000000000000000000000000..281a37c9006b3ac48ee00c0b3324fccec3664d5b GIT binary patch literal 1036 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJFd%bqTdAr*7p-gfM}Z6Ltl zsQLf@=As+keA&v4Q&rt#zcL-%aLYNlLhg8>tiz@CSNR#%C^HDC(H7~)td?h}J5c#! zo%1wKhC@P(29FMWmtj=UF=S-8FU-J!9W@-*Qi%;~R6N7NkjR7^c{6Qz{qAGw+g~Z~ z&(>s>J*Rr=Y9udm^N%&sXysAZ!yP#V`UW+m$`N9e{3YsGLu2U2RriE^!M9QH3guG zA04}yHqT^`cyG0D--$ogK-anBjHJYz+(Px)4Zv`C@bS-~y=n~HKa>9Ph_}WSvosh8 z;|ffM?VBUb+8J_kUUjE@E#q5#0Hj}cKi_#!aN^blj2-!nZdS8lkpPT`;g4?QGks5( V>pe9-0GP`eJYD@<);T3K0RXS(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_1.png b/vulkan/data/geometry/vertex_count_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_10.png b/vulkan/data/geometry/vertex_count_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9cac87ee267605108acc50df0afb5b97049142a6 GIT binary patch literal 1694 zcmchY`#02S9LJyUcLp<>5am)X6GPIBMi+^S!a);FB|~XU4Awb0G_x*6ad^(1*R}yxe>6p1JpgBtPprOK}a|Zq-by+ z`>#&SB~631jx_bWbEK{dEfUo8EDpUuEBKX3GgaQ5(SW;hA;<_Q;toQ|@7GE$!T!}S z`K(rEt`Y_6!|PhJ{Ft2nS;H_@f(ot zeNn6xoMp{6hA;yX!{{0{4xd%|+cCHiU#_r+4cb_2I|xI7i@kxdjh?w5*cI~q6Fj)@ zh0u(UGZ@&%2#M#G(p2Yj6d3}WzCpTc!DnG?>2=S9C2yR+Miu?#!4XI^{XQ@+p+xDk8x)Ot)IR$`h-WH z3U#>Ml+GH-Oy8l#kyq?XTzNVEVxSe$@K!1iGoR>A>`s7u=~thlD5Evw8$mYelM*Jk z4KACA-8ovn0krSeCpJ~}f?#Wnz@`Ep$xW@NWv+j@c`D$N>M2rzocy~Jt)z1ru@+@A zM8eEl%lEyhkyzEShN5$7d%Au6LE=^v@afg8%>JOz$2KqE6ntqDbCbps@!l~}nNGNK z%nD(0i+UVj#o;7H^ZCVH-wSmLhNwme)3_w08dfOu=Ya5oeRj!AH;#`hk9xE&!O@b&HfF34Cdo9_^HuIpflK4V9yH!pSs_AE z<_r<7&fpE%;x!OPGF*BkMy{r)F`;`t4J`pFXFNV2LMjy7U|9^yido zB?lgyL?czflj3hgEKMBIVCeo&Xe6#_BE^C&BfRuKh2{SNWc&$Bh@X7` literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_11.png b/vulkan/data/geometry/vertex_count_11.png new file mode 100644 index 0000000000000000000000000000000000000000..9cac87ee267605108acc50df0afb5b97049142a6 GIT binary patch literal 1694 zcmchY`#02S9LJyUcLp<>5am)X6GPIBMi+^S!a);FB|~XU4Awb0G_x*6ad^(1*R}yxe>6p1JpgBtPprOK}a|Zq-by+ z`>#&SB~631jx_bWbEK{dEfUo8EDpUuEBKX3GgaQ5(SW;hA;<_Q;toQ|@7GE$!T!}S z`K(rEt`Y_6!|PhJ{Ft2nS;H_@f(ot zeNn6xoMp{6hA;yX!{{0{4xd%|+cCHiU#_r+4cb_2I|xI7i@kxdjh?w5*cI~q6Fj)@ zh0u(UGZ@&%2#M#G(p2Yj6d3}WzCpTc!DnG?>2=S9C2yR+Miu?#!4XI^{XQ@+p+xDk8x)Ot)IR$`h-WH z3U#>Ml+GH-Oy8l#kyq?XTzNVEVxSe$@K!1iGoR>A>`s7u=~thlD5Evw8$mYelM*Jk z4KACA-8ovn0krSeCpJ~}f?#Wnz@`Ep$xW@NWv+j@c`D$N>M2rzocy~Jt)z1ru@+@A zM8eEl%lEyhkyzEShN5$7d%Au6LE=^v@afg8%>JOz$2KqE6ntqDbCbps@!l~}nNGNK z%nD(0i+UVj#o;7H^ZCVH-wSmLhNwme)3_w08dfOu=Ya5oeRj!AH;#`hk9xE&!O@b&HfF34Cdo9_^HuIpflK4V9yH!pSs_AE z<_r<7&fpE%;x!OPGF*BkMy{r)F`;`t4J`pFXFNV2LMjy7U|9^yido zB?lgyL?czflj3hgEKMBIVCeo&Xe6#_BE^C&BfRuKh2{SNWc&$Bh@X7` literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_12.png b/vulkan/data/geometry/vertex_count_12.png new file mode 100644 index 0000000000000000000000000000000000000000..9a627f1b13a5d14673d9e5dd8135479648718fe1 GIT binary patch literal 1894 zcmcgt`#aNn9RGZ`VK^;^ic?EYMG8ZX5;NXek7Xo)VT zi!`~!;&DqWEnO_-&@9G|F0$M*#%Mb87xbLxIZr>m-_QH@dfu=1^Ss_C1N=$zj20UK z0OtAnYzYJa(zy^o>+1|H{uUDe0|(zN8+RsM9Foi9SGX=Xw&OydHbO=d@v>IU?rpB9 zzAG)hW?L42b3i4-IHWC(x@ZtEP%c9P6&frs1GY9GU_1CL4-lOpI1&NGD3EFRzb0l< z)nN4t^RH?7YxNqa(ExXTX;=qJ@uV$vqR3k^0_Fw2Etp|wt#wMLz zNM6dQB8`x(+Q6<0XI~->yIS{Va~+Aw)5-g<`WIIaIXn7#<^;Cnuh$Z(Ol zGex_j9W`i0c;Xo{#>|s$3NPhP%VWPrOsEoS)Geyl5r`Kxp=JcBm)HZ>Xr~#bU%GkR^MOP8TzO~Lb0jaViM#N~QK#+# z#_Z8SC8-ChVPw~5!M3BASPhzYNNCg0=M^Op_)bPaK8=jS-c}C!*^Nq;pX3>L++LK~ z>pu3$@LuS_8a4at;dm$eu#zDX(rN4P?T&#%nd#Wc*EE4N$5opI0_7WgL2;Xx^^4lL`;bnLhn6IC#2RO;C`R&Hj#&3xB>+q>wm*O9Isrtz>uDhA z8qb)*aRTy{6kcW&O5rt^4l6Am-l1p>-Z1X+ctn^!5p&?#;8SU?R|m>UldL8&>oxl~ z=I{rl+n-ALUDX)k*y#)SE(d`DKk3Em`^Xr#N0rL%J)Q141e}kOHd*4nKB9{No(Au_ z*^VS*sXxNI=2z%~8`dCnq*r!(@a`(RORn0?RpbTrf7l!Zf<5PEyt{2AvZy`99#OOw zvvW#u;7XyqWUmUpucLPLJW=ub5+u3d&EBkv4=w`7+>{y{PMLEh>+QktD|%DglrB>O z_UX@^zwrik~lM&l+|Y{+t|pYABQ1m$|$&+b7`+==&Y(x})V$YRCh z@tz5hsZ5E8dp>AgpjDM09A!nEgF=RG`sJ->=+n#B&N25=z^*8I18CdA8g7IV*rP13 z4k+Xweg6XI{g#bIbF25focxfl&F!huyy#br%aSfO5shoA1B7qSxtnL--e7zuvz^-7 zUORPpIve<6L;B<>D<5Sz%Yd)82FCdndlscq5GKs`-r>pWV1$V+=g+|YzGTFmJQ>+- zre76?Fxgk-9loDFYYiR*o?pYkoiT%tt#qKb+2bkTVdDQzbHSn6adQmPyH?}a_js*@tJhfd(S=pd@w~^*;eF3Ouz+2CZ_ zO~T-lg=~%&TC}pf&ahXzC{^7&k4^@GdX8aA^OAS;3L3)cm3+xMH-un#mos%d5#b~& zT{1Q-!8@A}j0QJ?ht`g7s$|U8i>cx(Ge?9{6u^uc6yS-fz%l2>IY zT7K5tj#J$ts6-QaBrl^IING(p#l4zKq$5owDc3XG^0E3Ekp#pyWf!a8*M*y(&I zVu^xd&3@+?0*Y|zlS*tA(BknOl>d8tm;Z>NMT&39HFZHh=jr|@@b&iJQnqP##=pJV B8!Z3; literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_2.png b/vulkan/data/geometry/vertex_count_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_3.png b/vulkan/data/geometry/vertex_count_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_4.png b/vulkan/data/geometry/vertex_count_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_5.png b/vulkan/data/geometry/vertex_count_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fc45c5022ddb5f6c6d023d3104c385823a054467 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{Sx*(P#*azz~oxQDXW(IVG$gm|qw?UHx3vIVCg! E0PwDVApigX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_6.png b/vulkan/data/geometry/vertex_count_6.png new file mode 100644 index 0000000000000000000000000000000000000000..09a4b8169388546f4c350097205008513b93818b GIT binary patch literal 1181 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEi6i*k&kcv5P?*``Ga$s=1 zSa|f`_BVAdqP(h0JZ8-NF>iB2M%_Kx=72rDhTj-f{?4jpNRVS}Fd!FgIQ@qCOxbV! ziQ6@oH&_NS{&@F)zO=pRa=r#}xdX|||M5MTDSh{?|HYNe3^rxI7D-JNiHEPpi8V}3S7R!;?>(QP?$sHVrd8W(S!UQ8D!13~ zwPDac|0a&5rE!z znW^9@pzpx(u;u;y`<hAhZL!&Qdw0vPhF=!j-rFpYF*u79vDYTQJXXCpQ@^iDV8W+pWWLR_N z!c0}shH7VHyHi1o63KTD-k+C!wYW%cC&QoItrORl$(_@eWN>cgzYUbTf10V?%Z`yj zo`vBM6;MLq?+?$!`if`PGOXj7TQ1z-IZtx8xnz-uJfngSgIeM0%}k6Da{>xf7-yW= zG1Hepty+Y!@j(U?Ln6}#26NlZ90!#0loh!4G&4BNV9+_T_WbVL!~Pc(PYW}&aE>Cf cLf|i3a=Ag)ZkN0=V6nsC>FVdQ&MBb@06b=R_5c6? literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_7.png b/vulkan/data/geometry/vertex_count_7.png new file mode 100644 index 0000000000000000000000000000000000000000..09a4b8169388546f4c350097205008513b93818b GIT binary patch literal 1181 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEi6i*k&kcv5P?*``Ga$s=1 zSa|f`_BVAdqP(h0JZ8-NF>iB2M%_Kx=72rDhTj-f{?4jpNRVS}Fd!FgIQ@qCOxbV! ziQ6@oH&_NS{&@F)zO=pRa=r#}xdX|||M5MTDSh{?|HYNe3^rxI7D-JNiHEPpi8V}3S7R!;?>(QP?$sHVrd8W(S!UQ8D!13~ zwPDac|0a&5rE!z znW^9@pzpx(u;u;y`<hAhZL!&Qdw0vPhF=!j-rFpYF*u79vDYTQJXXCpQ@^iDV8W+pWWLR_N z!c0}shH7VHyHi1o63KTD-k+C!wYW%cC&QoItrORl$(_@eWN>cgzYUbTf10V?%Z`yj zo`vBM6;MLq?+?$!`if`PGOXj7TQ1z-IZtx8xnz-uJfngSgIeM0%}k6Da{>xf7-yW= zG1Hepty+Y!@j(U?Ln6}#26NlZ90!#0loh!4G&4BNV9+_T_WbVL!~Pc(PYW}&aE>Cf cLf|i3a=Ag)ZkN0=V6nsC>FVdQ&MBb@06b=R_5c6? literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_count_8.png b/vulkan/data/geometry/vertex_count_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ab83eec0ed255fd51afe13fad6923dfc4cfc8586 GIT binary patch literal 1447 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_out_0_geometry_out_1.png b/vulkan/data/geometry/vertex_out_0_geometry_out_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f071c179e488612f57e97a18edf2fcfbc3f84f16 GIT binary patch literal 1103 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD1F;5rAkcv5P?|SA*JBqL# zoc8c{d}LgtK??7Z8)v1A9&za%On)&RuwY_H97RNizJD_qx!Efm5@)z<`0u$O!?L75=T#Ye4*!_%&tSIk*Zca%^3Dtr=YAX)WN0(`w~?hG zv8UdKF@fXp{APxngssdAKAv}GsL*;mznkHM$uWC*#s```^?pnTp7zwoF>Tm!lfU7Z zy*c9pqht2=j1Pp4?Pp_rP;zWPALE0NWBbJzBW~odJ3Nl>XDHx$96y=igTdqY=?otP z9>>pS_>g>Tza3-5l@~xO-a9hvnEmm+GsBMVkMCU>cFg?v-ko7b=g0S+3}Rp2fE0K$ z{FwCdy)VO$DIeeaGyItF(VT2U;W3{xO`B;h4M{L*cRe zY7E?#zZo+Aa5zl)SS-UdA?42>RR+Uj=l8QH9Qje{&mi{k1>=PuKRXy$B<$x4Hk_5T zj~8s{m9)Pv*x)N^zg?h#^-eW|NnM^Q!)(L4cZv+sKoZC{sH<~gFiZIJX9|PQyWK$7 zedb_{nDOzm24e)!9yZ2^2_K7rUhnx>tj0Lw#&4j4Vl&2wmXF1(j1dhVi$xh{%=uWn sbo%38|7WwPJ>_ON#4?ItA@GmkUV)(DE8dMoz=DFo)78&qol`;+0ND#s%K!iX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_out_0_geometry_out_2.png b/vulkan/data/geometry/vertex_out_0_geometry_out_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f071c179e488612f57e97a18edf2fcfbc3f84f16 GIT binary patch literal 1103 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD1F;5rAkcv5P?|SA*JBqL# zoc8c{d}LgtK??7Z8)v1A9&za%On)&RuwY_H97RNizJD_qx!Efm5@)z<`0u$O!?L75=T#Ye4*!_%&tSIk*Zca%^3Dtr=YAX)WN0(`w~?hG zv8UdKF@fXp{APxngssdAKAv}GsL*;mznkHM$uWC*#s```^?pnTp7zwoF>Tm!lfU7Z zy*c9pqht2=j1Pp4?Pp_rP;zWPALE0NWBbJzBW~odJ3Nl>XDHx$96y=igTdqY=?otP z9>>pS_>g>Tza3-5l@~xO-a9hvnEmm+GsBMVkMCU>cFg?v-ko7b=g0S+3}Rp2fE0K$ z{FwCdy)VO$DIeeaGyItF(VT2U;W3{xO`B;h4M{L*cRe zY7E?#zZo+Aa5zl)SS-UdA?42>RR+Uj=l8QH9Qje{&mi{k1>=PuKRXy$B<$x4Hk_5T zj~8s{m9)Pv*x)N^zg?h#^-eW|NnM^Q!)(L4cZv+sKoZC{sH<~gFiZIJX9|PQyWK$7 zedb_{nDOzm24e)!9yZ2^2_K7rUhnx>tj0Lw#&4j4Vl&2wmXF1(j1dhVi$xh{%=uWn sbo%38|7WwPJ>_ON#4?ItA@GmkUV)(DE8dMoz=DFo)78&qol`;+0ND#s%K!iX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_out_1_geometry_out_0.png b/vulkan/data/geometry/vertex_out_1_geometry_out_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f071c179e488612f57e97a18edf2fcfbc3f84f16 GIT binary patch literal 1103 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD1F;5rAkcv5P?|SA*JBqL# zoc8c{d}LgtK??7Z8)v1A9&za%On)&RuwY_H97RNizJD_qx!Efm5@)z<`0u$O!?L75=T#Ye4*!_%&tSIk*Zca%^3Dtr=YAX)WN0(`w~?hG zv8UdKF@fXp{APxngssdAKAv}GsL*;mznkHM$uWC*#s```^?pnTp7zwoF>Tm!lfU7Z zy*c9pqht2=j1Pp4?Pp_rP;zWPALE0NWBbJzBW~odJ3Nl>XDHx$96y=igTdqY=?otP z9>>pS_>g>Tza3-5l@~xO-a9hvnEmm+GsBMVkMCU>cFg?v-ko7b=g0S+3}Rp2fE0K$ z{FwCdy)VO$DIeeaGyItF(VT2U;W3{xO`B;h4M{L*cRe zY7E?#zZo+Aa5zl)SS-UdA?42>RR+Uj=l8QH9Qje{&mi{k1>=PuKRXy$B<$x4Hk_5T zj~8s{m9)Pv*x)N^zg?h#^-eW|NnM^Q!)(L4cZv+sKoZC{sH<~gFiZIJX9|PQyWK$7 zedb_{nDOzm24e)!9yZ2^2_K7rUhnx>tj0Lw#&4j4Vl&2wmXF1(j1dhVi$xh{%=uWn sbo%38|7WwPJ>_ON#4?ItA@GmkUV)(DE8dMoz=DFo)78&qol`;+0ND#s%K!iX literal 0 HcmV?d00001 diff --git a/vulkan/data/geometry/vertex_out_1_geometry_out_2.png b/vulkan/data/geometry/vertex_out_1_geometry_out_2.png new file mode 100644 index 0000000000000000000000000000000000000000..43eee1c59cfad61697b4a6ab239283d1cb6e5ef6 GIT binary patch literal 1814 zcmeHI>r;|>6#l(0s2G}QtEALcTiOmmYMAB~O0z6AD{DD-?4%$aA-oO3xPd9(XG zzj*)v_k=BRI{|=D7XmnE)a=U9v-?jOD5e;bf3wk`s=z5*;r1j}v$dJu%LV9OX%((HsdT%hDg|HoiZ^+MWa=4)!R1GVWOJ96yIL8?oFOi%;p>@P1@86Q`YjQssyIL>j;pi?cT&QpAj-zfQ zdo?5&EUtQZ#{{#h3)<$geeIzO5jn-Em1x_=L#mKdD#n@X;%M?lKni;gvom!>&h4mC z@d?whWuStX4XwXbtPY{de1Py!on$yc?5(@F$YLYk<-yKCOS@E7G9c3;2jGa+HDREa)tzH z^-jauZDo(Ai1rVzbpFYFqxqT-k~D$uG)Z-5&VkgUA8Q;-b%&(Mj^W8JkD3x3onLn` zU!)ogpNN&I{o$1Qk^PRaW?kgWeePD;alZgikzVFBJZUM~MGLiNtOVZq!(&9k5EL@^ zrFK_LurX5s$!QFKsZTMEemFh@tZ4~cKe<{~lL$y(2bYW!ZQl(yGTe9( zkl;;`!X8UDXDWgj-;-_ZEC@{vIt^<^H4W}GhZl0C!#1DQQmo#gj!HEjQ2qd?T;r30 zizr+p$abf3T}(;`4#%C0^WURXGF0S;4yI2wAT+3NQ3aw*w&bI zb58vwkjkpZOLx4y??h7~=u^?!UV0`itwI@Aq@} zeSg1yz3$s)G?Yl^I2DOeM`TL2zAGSSs`T64?3l2_u=P=4nKyxe*au8=h!d6h7gpF#9 zGU4D^yaRb8^05Bbz7P$;pmJ_~|KkfufxE}N6L}MRacb$##p9cByJDr#Tj@EEfGPs@_`9lnYn(+Q{Or4f- z?awc#u+tFumYtKqYBTq90-Vx>>jq+2Yk^Tao|Fv+6SprGS{3tY1XW4e4fmmN_FUge z1LTsf2Ew#mII;v+$I^Z=mUEq5M?+#Y_o)hEH1#{>)awdextuyex+Vy=P&l%S=*pzc zR@}0bK9_>oXiwQ0xWcgSI6+rEePb&;OS+anz|^*muLKP1`+gdYwwEr0LN{4n07B{2 zWAT({@U_hZ6L{B|8Drus&P?3I-7GnQlEc1^=-R6Xa!GCeBPiFV$DurJzlaG`7f4aA zc6XxW?(EveYoY&(z#?k;ucxxCbAOkHgCLmBN3}a=1aK%nvdUcyCgUohI}6kYAB%1` zzkY_kb6J!Cmo~M(5;hb6u!d3e3dw?ZJq1ks3a4F)QIbB1y%gB?A4KSG(Uuhciw3|{ zn{Tl*3D8r+jS*C@g1;CV0jz5+-P8`oBi_yuP`Et(%YeMfjzt=zDzKWlc`=+ozQi!B zC`7f!(Dbe1WSdg(ue7>g80tQr9h`9Hh$|%e0ZMT7s1bx9!6@oHpm-T#Hwu z!Jf;tbqt9ZR-cp%bZgZp8hxMqh8SI_nngO&%2y*g{zqld-J0hh5g@HYOnIKls6>g{ zu_e0pWFeU6eMeFLoizvLdvB+sd{!6Dc{@tp^j}>0P5D$SM8bi2*tlU)f0ci6aG_~3 WzwE~kLRE6~DT2P(Q1nrusrfHl&%e6> literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8340b251a532aa17fda0d83460d39497a4248cea GIT binary patch literal 1451 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJFNB2O2`kcv5P??(6C_7HJ# z%rf|Wf77$YwhmkGPB@ulJ5x~mg1_9IB79qH zSP~{p**IU7tC-^e!?8Gbkzc|Mem(ni4PQ7jNE!av$g+@^amT?I*A>{lvOG{)96wtk zMwy{L@k6z6%XyXu>~8;kl0K+2{y6$#bH~ByFBl|jk580s-T|cNFFC59#Ng)N+ah6O z2Bf|Hdk-#VO8C zD~yw@^}x2R$!3`Izrg=J?@owqc|hBorERxAf!MZ-<-kw=+^@H$a5FSXUa00YkW(dew?BhB)sz$H)SjzZ#Sjf|%77XS+`HdGHAI6n#FU%A zfNKb4Kk!@rT0wd@)CMh}Ya_hhs>LG5|8(XD%nEB(rp<;Zf+UO$-i#j@1+JBqE=Cc( z3=;iTkh&UK6qJaTGd<8}*f4$b>{3XuK@t_vlaOdYPi@qa@MC@Owd(6XSqJBI^Ve{1 zLrgETV)!S-P`zVQC?u{RiT=h?h93eP*}HcIqKG~Pi>|u43=%aESFh1xuwywCm1X`C zV)QEJ2a*igJ2tz*wY~{ss9|r|`7ZAQBzfHBYe;7}b1|tJ8sMG`Hp~fY!e$r4LuD50 zfpP|k#ZRw6l3T=Oh6*-^__gNHSf0gxz?k9Ji;cR_^rgx$kMTm-dS7^g`oPm*R+V=W zVqGaO(7HR9tDT|NRRgVCaIWJmG_fl(0##?b)+N82Ct+8 zlh>I1y0nS$$6SRClSA46@6Kfk5MmD7a{7gLG}{6dwliBEzwo}z4rKLg`2E7WpUc6M zC*!5(VtrdP235la$AaDCyEuSiKU5OGEZxB{LB{4s@MkIt1ZXP!j=pIoep9)qxfitO{vCN_TH>Ww`9Gb8^4?opXMVbMj+0 zM=)KyT>yX?xiNez0D?~upriPZkY2eTfToBH58HO);?U!k0)6tVZ(>yg=IniDMVDg9 z-Jbr&*T4Ui6C<~dZ49c+(qGr2;o}u%HyBwAtSI1?LMRWBBvL>_gWvfiBy?N$Z9t!qwNL*Z4%Mtof&kVOLe>mx&>dmf)2>U?ld$fjA3JSFIi z$%SE+TfmP$eyv$C6Is@5(0k;qpc)V*N6PM93SR7q`P8SY5zB4k3t#j{1~zX)qc7i5 z1{0!@oy~@bV<0O}Ybgv%z{f3JB9=QSUliuC1LlFU;_~)A>TUSQwx<__Wk*Q)PeMKwpL&m!w-a)?>eeDs76#(-GUfAPhx|P*U#gBTODE+!guLod zY6~gPCgefCTYQI1?3}FZ>v70MgnVUd*-=uafZXp5+a!Q;Thgu|p!)*rRV-Yzb!fYp zH|<4M>k;u}6T3XMb1HUEh{GP6;ReM(<5o|lB;eTtz> zomaZ0*~mzz?TUZ$eBytd9cM;kj{xmtq9-8U9M(YCrvP zfB4G@^G*P@q>gj{L!i_;JUNu48C$L!DfSz-kcRDnk~SY80za0G`T&(?D9Y z84@#e2vu!l-qa$*#D=u*dM}Wf^7n@GNX(9ba}NBBz!?v9#U!rsAh7UCv;!X^@V#p8U;1@N$1rBVtcfLI5z|RT%dQ^9s#Q06Z z7ytJr;qlz0VW+^-dDL~PJ#-Ce`YN;An?`L)DTns++ySdL2C>Mw>f9pKR&mKmyaa9C z+t@ZfWS4p_r~+ZE?5yert5QMNc<-dA;K0^6;3Ym zA!bV%%8&wAoT}4K;ExTiU z?JikMy%Z>2z7G6Y(p9pC)ktzEYnX2trz)JnPP7~Jo|3T3>ovN2T#&{G($NrKq_owT x#2cxlW1>UOw=t~`uv$52j^inv-kZAY16`Z030qtK#-D76T)#Q|>e|HIe*lskAkY8+ literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..edcb04f806fe77134cdd23eb045d7be90361bff6 GIT binary patch literal 1464 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc84fb4c5b9bac8c21da90fe8db3a49c2e68d32 GIT binary patch literal 1502 zcmY+Edo-J89LIle5{XNYSxYdgOGUR%8?-Z3QkS{Rt$JLFn2DaB%}^WTZil~CEy#=a@! zqncM$QH`O)O6NE&Nv_9ggSFnmJLtK>{ffHWXda1!2IplJa}-u!c2#f9)Fn0mOgKv! zlxk9TrKO8MUmuO zasT^N?iDg$aXKQE{+Ps9WL`AP$p@y>nH^pHKe5rW!6c^!i?=i#reD)X2L=b{Y)Wmx zqd#9*Al-{_(uKA@^gKOupjq^tfD;7t3JOc3`V`R3m#I=ElOoar%DbRBVhw*O<>IG? zyp7X0?MCEl-*8`!=js5Sbjlo_a(@{WnC=EmHZbZ>K)F&LHe2|!s#Z-xBysJIgLUg; zlB#HB6v=D-(U$Q70`_AjO5%5V2b~E1B`hiH=wSI9wxDHBxuMgKXx#M}F;UBb1P3tNMcWW_jI2T2hB>+ECy;t?Bl%i?^)+tPRP5}QI zbMDViV@chILGeUXr8y3>vzWB(w)sRNAsvZJXa93k zOWpVS2*{+N+nicu8x|DZz7;o-p=A6zzrx{a2ig6x*jP=H+q>{JSh{NoZZw$}z4UIc zm|MmM&lpL*(0Fy=67q=wIlb%)h36o?92@;=V4L+;lx0(Owb&!O*^TNOs z3%=HLji5&5L68MCh56N4(nHi@QXqe+b&w{KS4dl}fb69!k}g_7PPnypk24!7y+0Gp zQM74FT*JGiy`$Sfnnk-)m5eP_7+9PVbLy$)g5{G&fOkG;M1& literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b205d3d9273b903b9ac42c77fec2d57690fd7e86 GIT binary patch literal 1519 zcmZ8hYfuws6urCIKu8dRj7k&}obXT!NNNqJhyhVxw1R>f27~~kpr8e{<<;U2Di56@ z9j!AKRDzj`7KBu!R2XGJ23ud0`Y6R(QwjowLL8z3lBD163U&HxclLhg+;i_a`xQrQ z4w=QD&j)~6VWGiW0WkE60nZ9OVh>!}4Z!_AEI2SK>+C8p%Y8G4%qAe;1_(#sxr1;MxSRnZ_ePxh*SpQQ zM{dAWCOmD*>FwyRdl?_J0@oFHHuv`EtTE-LS3h~%raF-M-%2L7^+c#))3u?BayQ#C z9tC!$`3VEzuqwm2uQ*VG|NNy^vd*^Kfh==2#U`e!;cTxy)$!;-LeDA5`#8~X9;WO= zn&-*JeKEguqo_^aFb;l`X@jyN0ePf<^`5{Y9;xj=e$**#0fdBaY-(3kfnUyst|eA? zt*OrC5C4`ay}|DMo$Z3w*;u-32f78JS)%*RqOR{(sG zNxB4tX-c?v_|k2hOx$2r@_|?|8^$DiuYyLiWo;>fH`4G%1mD}Hu0-$}8ZJlhA(M0| zvu0%jjGGJPIe(nwLJP9sQyX%^e&4IcB?88dR52o)9LR{7%UJW|BY3ga_;|A2ld-8f z8nt)Q_Faj7XPH9hju}k$N%f5@S-c}CqfT@H8Vsq~Z%s7=<)1m)!4Ahb?m6;cHFX8D z;As6c3uRT4S0VtS$r!(B)^lg+Jf`XJR`7>bu_tu>_?sk|WkyWr>_}@xS0NY5 zR*p%%X7og22H@p>N9Tzu2-rDIOT@5s6YHsE&^!2SAI{FVjdX613j1+kN7hZ)9of7iiUZp!T&f-uu*=rg>ZFqDW zHsef1Voj}c8AdMBOCmsS9Q0^HW+CaqchaW`R*r4YTm@o0LGqp;l{ESJfH#-sXqn;2 z=zACoE?s?ew^vLz6=%o1>#URpT)#;8WH(0jj7$m9qS>Er_%rY)THm*4?&F@Z7-j(4 z*JYT`_NubFnSt)(`i0P*lASt}jR20O_KELqHp%xn`sMImbld=yuf+N8V$08PRPG+g z-Z(u;gmN@|um&^O0UHF(B?m!cE_`mK*vTAOobu>^cs7({5vQ1_9v59dQ^=)~;ZYL9 z7_?zoUj=3mLA{b*uBJ#N$j+kS3)v2GT7bSP+Bbm}@Q@aeSDG!D79bp+$nuY?vlPY0 z)qZ%Ge<*U$R22ngSKhGZmln(ALr~I2o{kEb)b7I5U9F<7-RYEgiAbqTb#ac`oH7B< z#hA1@&lnQJ)rZ=q?5WhQ?UqAGA~mN;Y}yh`qeoqxOa z(DrrjfW;j?DQf9^m>jlHq&5)vPu=(>H@xY)ak1a)dLC7fv%WQBGz9WZ{A0HsxPkDV gMa28xWvkFh9JWPYlzkB2hAwglTfaHDCP79qH zSP~{p**IU7tC-^e!?8Gbkzc|Mem(ni4PQ7jNE!av$g+@^amT?I*A>{lvOG{)96wtk zMwy{L@k6z6%XyXu>~8;kl0K+2{y6$#bH~ByFBl|jk580s-T|cNFFC59#Ng)N+ah6O z2Bf|Hdk-#VO8C zD~yw@^}x2R$!3`Izrg=J?@owqc|hBorERxAf!MZ-<-kw=+^@H$a5FSXUa00YkW(dew?BhB)sz$H)SjzZ#Sjf|%77XS+`HdGHAI6n#FU%A zfNKb4Kk!@rT0wd@)CMh}Ya_hhs>LG5|8(XD%nEB(rp<;Zf+UO$-i#j@1+JBqE=Cc( z3=;iTkh&UK6qJaTGd<8}*f4$b>{3XuK@t_vlaOdYPi@qa@MC@Owd(6XSqJBI^Ve{1 zLrgETV)!S-P`zVQC?u{RiT=h?h93eP*}HcIqKG~Pi>|u43=%aESFh1xuwywCm1X`C zV)QEJ2a*igJ2tz*wY~{ss9|r|`7ZAQBzfHBYe;7}b1|tJ8sMG`Hp~fY!e$r4LuD50 zfpP|k#ZRw6l3T=Oh6*-^__gNHSf0gxz?k9Ji;cR_^rgx$kMTm-dS7^g`oPm*R+V=W zVqGaO(7HR9tDT|NRRgVCaIWJmG_fl(0##?b)+N82Ct+8 zlh>I1y0nS$$6SRClSA46@6Kfk5MmD7a{7gLG}{6dwliBEzwo}z4rKLg`2E7WpUc6M zC*!5(VtrdP235la$AaDCyEuSiKU5OGEZxB{u%vh}u6-TO+*lHU^C9N@_LeiVO0P3&)y7!&?zVDp-o$sE~ z z(7Y$_-n0@rEq8YRwCD~_SbsX?sD9=)^7LkrGZZ)hHP;vZj@f(T^MDYWQcWpv#KL*Q z8yI!>LRTWel5pL4ac=6C9-57Rog49l{WzzMMe?s-2v?+eb*7?po5&(1EVdk%A4=Pf z+0Q8i;NWje#RzPe0oSh`#3jgJ-}r-+32BKkE@J^3HoAVGdhl}86GVLjZu#}NE)*2=r<9&{*#?Sk zHNmM5yS0m~jO-2Kd)|s~JEuT{qm}XbL9M}1PBx9;C=c2otq4goYekTYsC-IoZ~gmrpnkAkeF@c wFrTMW#atz2qb_$Q(EpM$aO-e+&AG?>0JD1ydjJ3c literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3faa840c0d12fd311b981ec76adc03eabc28dba GIT binary patch literal 1454 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c1c9961b0765f6a346c83c008bc0787a632750 GIT binary patch literal 1789 zcma)7Ygm(I7=FHwZ)0P^Hc=3Y;{p=L7@E2m4HOgz86E~v0~rAxieRAFRDw?ek!#mA zvH~OrOem$L12s>GZYZP)f~JBka6%#=(bmUhT^)W@zux;j-1qamKc4$8S}hE< zwsN!r0PFCukhK5^0TG~(i6t(xb^`#pIXq;UNTz)J(+At`gfVun@%yEB(Nk6pHG}&w z_$T$?gq}2cU!^`&uxccw=j0GMWU7BS7o^SzE*5g*Kxe=5p2L7Ge$Mn|n)m8AC=%Z2X?7Rj{ zwKq*}E@9kcf%Vpe>AHNC4f1O0i56|>tac9|d9Y1BOkOd}`RwHMseFk5dDVUUXnK(@ z4wWvHo0l^8g@W+i(OggL9#xlYXI|{iErnI@js~)@q{+3{sBCk87V|D&Q`}86 z@K7$^;u3`^+`#hKS7A8M zePlmmC-TDFVJSP;rfbR`aV@1#bmm#X2gimu&>W$_A+_5==lk^{h6{d^*3mnAqniMv z3w+S)NZ8ri0bZLq)fUhjUKErHYdPE}5&QODhF9WZ6-TEIhmc|Y(M+rlt^c_tSsC5$ z$$=5gToz+4KG)ZE%aJ9)en{-&3mKIq8|Hh0^vh^>1{06w*qu1ceT#{JQ7nK3qAwa6 zI=X&9268e64m?%*IDz44ip8}vSH^B+=}WC)ytC1t2)LJ(0BR6 zts$$Pn4LngB}}gB0g=W#J34EBx9*EukEfmMfkiS{uHFCU5q^(|Zd zn#~F^33xI4L8SJ~R$mD?MF}dgrzu2<8Zid*YO=vwG<)UiJI}XT!n{LUp()I?W71KSU zKP{mGH=&3i-i9w<#C=Nx{yYXf-|c5o)qCQGz@4#PpMPUH87aqa0GjN9@TfYnR;fs6>9ecLo-GeRA^bG2}KCsfdoB zj(-lr`M6N+Ytlr*w&g)7@pidg9N@dDK24Kr-+u|OU`P*Y2;@Q_?z)MVULV^T^nZszq`B#Z6n{HNN;+S%adS5x7aPg4OIPGtIYlR=$W~tHds2sBWvh|t3M}V4Z>FlLo~}JdA|XDeYf-g literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9308abfcd5b85f21c37694a679be8ceb8625230a GIT binary patch literal 1812 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 F?;j6R((eEO literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..29a85e06fda575d5042daf650f6bcbf4ea1b6bf7 GIT binary patch literal 1815 zcmaJ?YgAKb7Craol3W5YQ4}IbLF6%mA}BS;fF?kSWUTU#3Mj=0Eui3lRV?x{5`~J6 zcC?5s$fHXgik6195(JeSvDV5XEL4z3C5&Z^7~pCUG7!kzg!V^QXU(sB*4byBZ=dg; zy}uJ-TQ{+owoCwEi9&=C00_^p!0Q9FKVL)VN+33LTk8J%o$HOyc2EE5O ztu4M=XD@c%A|La$2)PkFa)xd-m?rOkMi)+xk2pZXX%KiJ5-|!24D!tZvjW@|IPZev zh5rlSlbQa1J5$(vNb+y@S=&&2dZDDioi!VEw~~P*UusbuamKEj3uyKX z!;0nAB4GCKCi#oX)l097h5Q0GAd|D-0+L?n*%57q8lBC%g^EUt0z#y+%j)=_;` z`*Xh&Tx3J-qm58d!EAim(v7I6JA1eNIP-)D_71$rhifUIrt#Vm5-UQ;Ry*mY8L1gxNSyKce!HVP5)N&V_3og3{7Oh1j&hN#M zrfrYCbjLc(36{KtIlC`}kc>AcD?lJ?rKM*eLwln-h+zb%#o}nXAlfigcr{T$H_D`_ zA>M)m_@NlMX((*|y4=FfD4Rbe4qK;-;F=*!$}%cx@%MW-TLWJ24^Is(2e!8r&1ZSp z7SXowlK&{4W>nn|?E__Ikndq3nKF>KW3&mTtl~UIOtaVZnp9}z&D%pM^dU_(%YXFY zJbr~v;R$~)|Fh|6oaX`EN2--{Xg`&+e~C%Ksed)Hdn?tb<;tq?os%RrLlt|zo>F*f zvJuY+ZYwqM!tAUmQWMni_d0HqOp_1roGI!-p*&MR%|U9k&XW0Jza_@v#Ca~%P2RGH zaYGfKYM$)}ln?x(L}CfkUCmoc@>pBiFMsqG**1jC5Ublwm0$RMcf#U-`p;GdAxEk_ zf1}>{q*t!`qhCGw6m&etYd-N~rkQ{BuY%y*vETVw3#w`r$nM>bv1>#=fwpy7_r~P? zqiZI1>0i9M@LCyoDaNz*;YON_MR2{7_KXxtoZxv|dDV+%GY*oeEb5JUog!E$>ACjB z=X)H`ydMgsZ1P`k;PTc1*G|!(JaWV~mO$*>k%~ zjnU_amg-wfbt^`By26M-Y}uY3TEeZ1<6ZT3#CR(0X2Np?Ux-o7{a5TJ+2O{P6(U=G z&&fw*a+*;D-X8 zQ;@=)&|>06;oMf4aygtdZ<(^3-hqY*cW^DUSZG-6loxlR538)I3HQ>>;zaQF0(WSSkSL4kZX2FJYln(b9Tph`@`9D3&zU;9-$8E94x733NqIb3mYXimk{{>DV B-R1xQ literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b54283819683aed28683e3c3c120ebe3c5b26c GIT binary patch literal 1802 zcma)-dsK{h7{{M?dgqqfhA<;4L~h+@wK*MTN^}v?%9chm6%$?DCxgtqln}x?UBr@; zTMEO3Qp1}hmz2v%QO2~Hib|8(j4p5csy+7XIcv}U^?T0q{GRXc{4SsGZ{OlYp2mh| zh5%sf?d9PQfRG^q3>rBIHeL_|(4KjFxGj~QXse6a_`-*kxa7-6dF5>$f4AelqYpZt zaocAN%bc3s>+Q;{OK!-ww1gDNK+WJa^qY zW^oTH3Jtg&Z;!T&z^DO1eG%>o3nb91s#I=`wy-d2?lpa7LgpM~YV=@A!sNRZ+7R3c z7d*l6m89bo)6JaX5cKG|e7;fRrz^-5A0g48GZJq?d_~Q?Ml((&)gfIwa3X?x5{y>j zcN)hW)LP+?*kfkN?Ae5D7Js?Y+4?mIlh$rD?y9FWAtbTAfx!!Db8TIL2 zt!0^VttXf{9B$a!7^7$CXmbPO524isV0W!gB4v|-?17@H(M&&vjhh4#Jw;ikHXw2F zrlUFY#x{D|Q&duoYD{SnmTGMisxhF6dFuCNsAiwrtF$e>_J~x( z?`|?5SO_vMXI4=Q@9W9q^)uWjw)ds!fs-Im?~sBKyyvpUVqNS?%ZEzV80;OpqRc;H zq8()0XIzUr7oSMUb;47a{OeBc_9$47v$zkZ!EHcSdOytwH5YxN8$ zPNd<#$fYq|$@zoWC_<6-M9Jp^b)(1*k|*a$P$AbJTjJV48RY2}9sgodeW1pCs7&IP z8wGL1p3hzC2}7xuwq(cZtR}mHZyc_mXgYa$RZ-^!gLDRVg3G|^Ll%YFAOBe_OE``CmRWc#_@Apzo+Cz2%MhKe|-r z@RpGJQ-#snHZ|cN4y{e4hal$b3gok%7+Xu^7#64LuD{Q zk-jq%QD@i?*?m;q>a+9(=e`m&Omid(^H~<$_rjl)2(WbN4ca<7O$8?l7@RfQv+}%! zu*jY7N1ErFLO79trN)v|Zy+vAq`gMc;a5x7OhWtaecUfkV&dKm>Eu-%ej5bd*4`j}1vOVDq77RDq{((IZ$7gh}>=>8~_Kac+8-nz*0O}} z81K8wNmZF6&0eh63SB<~=kL3e689V_Geq5 o!|seGKb^E ziWaoAQi~|a)^-X)B^b+(`XfQxQYjFc1p!&|giXdw$$= zXYS{Fj>T+!mA%k?Apo!=Bf_=;AghUhNmv(=tU4Kh=!^^t7Anq8{##o9lfUynUMn*j zPFs8@C4Vn(_iET3uCG+(w_jRP&$!oSmR|`<6MRb7SuipiheP&&F9xO$IBo&YG7#_( zDaN4nPaOhf+eqetz`5||-Lq%Z_HLsm^VL5ZmgcM!dIIVS9Q{U|jwx$?sJ-Sm5eb`Q zz4!L{_7_5`xVI?KOCJs87iMO5vi3WZ$rsp`HD3B~D6f9mRDZb24z0d8NU5C<-NCD> ze<`3hGgF+&U2^W+8zC`8;L`BO=5xoZ$jifdKKMKKnvh!s^cMWK6S;t8IS`T&l*gfV z9ig?NGxrBz-A@_x2`S}{WuTjMkXKn0_-rsG9n}P4yko;2(adibldUX^=sDgg1IF5I zy0`au+a<)JVlF0f{k25Khr>!9Y{R7l{>O*gOl(TPlub&t!^bE6@* z71e5kep`-AB?Y~O2d4kJ9`Px`^ynz1O$EAe*wATybec_ZmYu!Uj}NKP)kM?mNagia zuzp$T!Imc42cnmim|NOtZ^+xrlQs9zBP*%S{D@N)884T?n;Xy>^0Gje{&H9@&NE%z zY+miygxqq6B7>G@B9b3jED(ZoI!}F4{>m<_M4t3;r!M{&Q=nt-DK7O>9fWOZ-Xkl| zR(!!I$zYs*XV&j>Hi!>btWZipe*JAxdf%^?_kjFbeBGBLEqB(zOGDmeduqWgH+gWf zSh|?Jo5sqX%(~rZ52Cj}W~MrkJJJZz7YBjGubs%4dCN{*$Q7jD)rtopOKqGu|7(0I z7pSYJkX|I3>6zZr=pg8G=(Ge>cE%ySBL9|dvbb>}@Z!!u)|xdf0TsQjNS_rvEWf`u zc{>he=X2nzQkR|C{#QmBP!apSU<`z6MfZ*|&@6hM|6My#H5Fd4qm)GsOJ0oCX59kl zTfLOL@Y!M2^Och_L{`KW32H!i#b0@48zS+Kp3T~W#f*I-c+VN}=02^F{TzjZbL>&g z6bPG{B`N#Bb70(#(m|a?8ydg`e7h?|=b7q1QYpRRh)0Ui2^PLN9peH_`97$ljYIDZ zD3J}0kc&guIyO1&kd&9k&ME`=ECw+i0N6v*=mL9UkvO1 zE9<_0!mb(w${M7!gi1F7bJJR=wD7*|h`%&nSp2#zu_3v$lsyk6_gT2l@9<4(oG)!d zbH#Z+!D5qIy1VF)ka=#qJHC5YdK04-cs@vC{Eyv@8^B@0^k;a_s@h}@4 z`sW+kD`~X;;-`zv=NL7Ms$S&6M){1_3;(B2TkSMWSmJRfmE?&x<6LK0j}5#(qsvLA=1o;{%AF{I6X~1WrRyx2+ndLS_YG)KKSBAu(bfJLpXrSmRkf1;Or67BkRtt?RME^L zYPn&7crr9|%z*V15l#DvQ}l-JaR;as`ag=|V^^m>An_#xt;}I4;>K=hSiN0}8a8!W zN>&KDbD>r4E(vP-Qvdn6G4d<|! zL(p2B3fAH^tq3i^&^u`-0&5DC-z-wF@0OX+>ft&&9=5`FQqNu!yCb>lJG=d#v*fBEz?a JT?`Q)`W>b?+mZkP literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..58f335207de9c6593d647ea0a3c1bcbacdcbd90e GIT binary patch literal 1785 zcmb7FYgAKL7T)&~!VM4u$r4nk0u^ZyG*xR`NC+s1DDs+EY>^sdq|R6%f*|tpB1pnQ zB6Z0_g%VpWP7*ZM@~TlTwH8|t9mItoYQRUth{MC;C4^*d`lGdf+SOlYpS{1mzkSv@ z`#U935ur@m1-1ad3|k)@1AtH_0vMfIwx*p)0-zIN!9l{Tn$df4ncG|0A<<_{ua3{@%t7WU#1UR^|eCqw%3#xnt^We~_ka1jdaG&sNj8V9f?;1CXO z)qfhmGF!JsRFyu!s-EXg_#+Po;|!D2x!Ss-+cdYXm0p+UJ&%Mnnw;Ctg?t9_BuUfZ zT$qOuU&}~wBxc~?*Hxr&8)jhRn}npE=l(PlR!1dFr!s;Tp*OcQUNvvPo^kME#d1^Z zny4yR)ssBl#y*fulNY=wHCH(Fy2HWICQ{&7*hrJhi>|hLqIxXwoqu)i--yY)AY}1! zldt3ZmEe;!-o`0-h!Gx6=F~OZI&ke87KGBCu<^nz##dOoYyR6$5g+r6rZ~L?3IFF# zo!DhwC@fKvlO@DFlv{pPP>E?GfvzTZG1~PsEz_xOj$>9CXs%84EvDUY#JxT;8iKXE z(J{Bu2ZtSuo4_O*&*2ozPUZtJb1FdR5!g6aVy4hy+FWyYi8mz z0SAVqgqcA&7Z)x@#aAYDV=4g#=Ys>mlsIq2X~AB^?UOVbO?#9Nx$A2SNH`Ucb$MgW zK@y0DZ?Rw-x6y>j>Qk-KIbdAkiJnK+?;|wJ64rTGm5+($C%*cq#2$EwI_w8)kxudx z?_&3+t)SiPzs}7Y`~w1Ijd$&@(nQTR9e)1TW5PjnD&E7v5szQ!)cBkm>xe*pQyyfV zS(TAdcdo(e=IqeTwYm@P`T>!5mo87Q7^&B5l3hTX8b_D!DjR8dIGF5=%UA_@drq{C zqQFa0!XD-FoM)>fan_L4y&8EcjGyY;v9K8nta5fy^m{;5w50GqdElqH_DB&>H);i% zvl*c1n;TI-kUl{1Tm0qkvDZFyZ+8eb?q#I>?^y1f8teEIVM9`H3Z#miev7 z?~{If!Fd0PKOJz3B$Qp6$q@aeI2_N>>51R;!-b7cPVSh?wGxyv-RzZ`%R~RDP74&FAZht>?m?tzsLv7i=-DnB+2w#A r$Sf;3eU7@mJ5y~eAZuTLfwL@CI=?yiy!;OJr9oIoMDW=)q67a2s;AS( literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d240932a5396d3296a3a0d9312f037b4fb36a49c GIT binary patch literal 1905 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 F{{Shyc2EES literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..61c801dc2b371eb6f85510d5f23a93c61c7d0013 GIT binary patch literal 2747 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a9065f65c8b4cbca11fb336978bbca9b34c0d485 GIT binary patch literal 2018 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 IHpR*R0T-PXmjD0& literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f37cd12a5d88e9770f5384b6dee8a79ff7c7594 GIT binary patch literal 2598 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 Dez>Bn literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e2187947e0936ffdd9bd2df14d036405c72e08ec GIT binary patch literal 2724 zcmb_ec{r478-Lz+21Ch=eQPW;6{m2BIBJ-zgCip;K%fW#RT4maupsOz0O%zOF}p4J(mKvaqnwWx<8q!WYiA%ME_l>1K8n{w4N-}9$bmu&t><^D``24g^f#q*2mNeS(Wz}oiKc3B7u-~LQA3tKTT5)Jy^qoZGKQj zNm)g>VLqtinc1I;RV)~r8F>6Oh2w6%qxO`Fg9ZdvXD7yn@S)#AfKH+D3<_d&H z-S;*XV5Sy+9J4f+h*S_%X|1z?dJY)0-4;!>MN8lYA0jtd|7qq0M; zPaGkCW{xXq;H!FHGUJ@=_JY2$-^~UAmUXCq%Qx%oi0q75T`ult z#=kE=ij$w8)zN2^I@87;opd@|--J=OTaM(*a2pkmFLEqaAuVO^pY)4^Q?H#@j6})srqm(y`+JDIl8SuXiL7hWx z4iU{QL=0iLsw(Z*ngbtn0o#z5HEil}?J`T1*S&gnEXWgOvA{2}+fk^EkN@bdTv~r6 za_X%p_2)JMHs$WrS-C+JDl6{8`|~;0KZ#M<={i#>j>(?6rW-?B2ba-5L>pHd?l6De zDy^9U)_wNlqSDo4pBh0cdhl!>k2btiQ%3!5bp#KvSb>zDvA5dM_hsjC5O)iY#Lk&) zJIE%f)wnd|Eg!oATH_p(|LN7@temn0quhh=C615djS~dK_@>8rA%-@1)qf*Y6MQiV ze`52D){|hw7_|mwjKQoWNup#)$;rBX>$Z60nupZW5ewEBgCto{T}FeUm8&02)>Wyk z%!hdJD-K$zE=vi2Z+`Onu^&}1!8_v!?5W^ogP&36@Is3Q;3z{{{qqSttIFq<#8OS*8+Fre&jr;AE8(l;ja?+* z>NcBB-NjjPum#^4jLsQ({GLtO3~&{J>6v%BAIRyIUmri*8s;ho(~Iw==dxV2Yv=YI z_oFjfgHfBfh;v@8(BqRh zmSDT#G5lroea{a3D33!jvybGaganbNoP*m=Cj!M!fp_b(`93#10)r`WL0Ik^s*2=? z`H`jOBrI1EVsX(j`5;tTu37a+b-i9qKxnORSKJ*+&S#ibf0Pq}@tGa&Z`gmsrveYoJ(0Ua9+W zf|2trYoK{gXjk>jJVmWu-hKc_eb2WH$eJvhi$`7TglODzsxfGuv}}W@Z*f%3f<1lu znOi46lX_NNGCS3@Y2$MY!qT z9VrZp2a0HeNc_n6K_?#LeM$CAgg-^}CJBg27;#nzA}|9f++c}7 zq+$`r-O>O??kM5#tOA;K%}E|XXDFiILrJyPN4n!$4XpRZMjaY|)RwWAV@MNW=CM<3QR1ynH>DgrRMRIL9M< zG&gDT5XVN?xiglW20SaB>saP!z3I01#GFQe=R|hf*Gw^Z*4?FGk)(zd?0?=B27Xru zYDS*Pm;kM6F*M2wGJ53G6oVp4H-%@@yDzJ3b}B#@Errk8ueG9G=GCR)+nFQ)*Rl-ET4S0Ko!)oy+D#M3~)R=pvliqpd#5R zY|(i^x;eeU5Ptph8nH+Mo!%YM)Lj!&+?@*M^xrs`@1vRuK&MA5#JNBSwHA!He*vxulx_e3 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..89c3533bdf9610867d17c374d94d1ba17ab10ef4 GIT binary patch literal 8133 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fd94847ad5ee8fe9de0c4127450de0eaf74cb2f5 GIT binary patch literal 7446 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 JYI-*Qe*kCp$msw8 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e704474a559623f84571b8621350c32817568a GIT binary patch literal 11452 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 PGNg4==SGpb^{f8{p4b6> literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9336230f6766fd3c3f11e1ec9e251ed1459b6fc3 GIT binary patch literal 8311 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a58a2aa939e7305e968886dd185216753ac3c54 GIT binary patch literal 7443 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 Lj~=8G{F443+tIwb literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..342e1092ac9c06b08f16a7cdc6537842895f63e9 GIT binary patch literal 12479 zcmeHu_dgYW{O>u(IUL6x2a!EH6e=miamXkcajcU0DXFYvg>#M^BSKU}vNBIbrECtF zEhi%-o9yhZb9~?WKJNV+?hp5uoJUUY@fy$9^Ywhai!nDfkYXzBIQRv)znChd`{orzjJL$)WOlX z9wlKn+R(^VD0Nd8_vY22l-;4}<-}_}=T7w3nn2hM z9yYsWyO5UP2d(}c^Tyn%T=hrNMFVu|o$H2G+ zqFtPvN%a5TWhSiDIKc`JbyNF~=R#ZzVa+hwlQ69|#rv#T214Rxd5y+K5F>sp4&uu8 z+@zTPJg%RK5Bo6dM0cYt+yqUGhH6>usvassg7vck#;o_HSRp&3f&w#kqi-DlO#fHM znF{fMIV3U~q?}HnA$-`QRJb`)MHwjpF`J2pSmYy9hX+)>dx|#ioVY4x0?~}$3Cmwj zktI#848J-2_lV@@qu%9(yXsDLGN};%!#Aim%@`x`gT~&Hf_WNLkIT!|16^H#b}G;X z6$5#(*~~Bd$%nC&vSAHkIaPt#w7riZ7MH@rN9FubIaeS<)6{@!*J7N?Za7a?Jx0Cs zfCT)XFT^)rl{E}wpQhpFfTXKs9Yxc5agvET}KX`)}C0 zt8IC*qS!`@x*Zc%lAGY=dP2{6x^?h-+IA4Pr}qN9CVMd3x#7Y>wxc1ovt^yzF;1`_ zlIAR7aj@OJ>x^8Y?bC`dM_VB^rMs-9R@9VYf@NFR!G$CQcCPMsoQ?V28#eplrU8vVxLyq%46AUrb@#c4xQi`jXEQNrB!oY7KN9i0o8b5bG zd9iWRsV`oRgp|AGCcY;gf5I4u%Y?`gkG4;`i~b!J&h+Y2-eeMdKs+L;L?%CKtCdwy zQh7~XspxjhTu}!%`i(T+-~OxMEoO^5Hq


Lyv!?;+u7D|9B$66%j0@KAx?Qr(@d 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 G3jZGhHc2J` literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png new file mode 100644 index 0000000000000000000000000000000000000000..89c3533bdf9610867d17c374d94d1ba17ab10ef4 GIT binary patch literal 8133 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png new file mode 100644 index 0000000000000000000000000000000000000000..56d0fce4028955c7a0a1ee94905ad5e9363a8a25 GIT binary patch literal 8127 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 A6#xJL literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e704474a559623f84571b8621350c32817568a GIT binary patch literal 11452 zcmd^l^;=Y5^zNCVK}xy=1jG-GN=OZ%BB+2$w}G^jgwza@(t@NQV1d%zFd_{ClG4b~ zF@!V|cjNay_qqSU{o(!s^PD+n_Bv~?^{)3_Yrodh(WIs3q=q1fR_peS2M`1UA7KzB zIrwMpp7#ub_#mwtYWhAIo0;|=lS;{$l!@cy?*`ALp$d?LIhP$ z6?j!2n7bC2{r)02ldEm;g=*$@q+4lLIfXTq8Utrn;IxY>L&!-yDIX>6t@9|pYwTLk zs{w047^QmfoBt;lX`lJ7SgL!xAri=$G`r|$9Rs-3V{X%D=bY<<3a1=h4G-%X*VKI> zTA^5!acvd}&74`Gi)J2`7DW4r3vR`noyf0h7gPi*y4$#Q$Hz|)b}hQ?!nTm9ClSVX zt%$9p1WhQLITUUXPk=aYneJfhk|6lHWe$vC?BpOs?$&wLV0K;-qG6jLR3L)1LzR;0 zT-tBa{j(WQI>0xm&C8^L+6(P4o&B;Mb{lR-*%;-pzQqL(Azv|>E3?`e+DTRS;PPnST9Dzfgk`Fgki%&3!l}b$=`5v<BXh4p~v%P`u}U-1}jlor67}~bSZkLVy0gb$B_V4aXVC7c};mc z!}P21i$#^b^UtI52abweYazEQPtGCn{2lNmmz_a+}*uya}=R04?z_0ka zm?km_av3CJi_6&qIbNqWji&%|bSvwe*;%)0m=gUm{33aD$>v5qxO;$>Z zLGELWO&7JzRmI?Yd$vt%17(C@^;_nlRUF{QJ9Vi7^vVftA@6J`sC`FBR4L2P{pve} zD-99cKE3?I;KnkcAP95fz&x>B`SJb&Ebc{+hDR)=l?WC3B1%TQw_>;Wn2fc`CTHX= zGaaK*&ZfqBbnP8Q3>Ya1+($dQyCx%P4ZR`Ed$a%WBEs30pW+Yl*&w z>hgt+*b_~xa|}|#Pvg=dboNZ(F!{tN>^s zq6)$Yd{F|auMLOFx?ReYrP>PxhMVJBEBA< z&C;hCrJd3|aFRs}gB;n9m#K`~-+Venoj9R7K&tn$}Xj zv2}9*St!!a7B65owXwS4hBg>A%YT$I(w#+1HBoI$dcV?3IDpVsc$49$)}Q#VWU#s*mXjEJjvEvxCn047eGZ%%B|5|Lb7#3n4sh@Xd&aLq zBsUBn{Loj?n)}Zu@3%4dzZQgRR2kfpP9570l<@~}u@A3ZRQOiO_MS^0P=yP^PJ(W7 z$K*}2v(K4>ji3fAhPiyy&DlpT(Hzy`nnn>(;g3HSU6832v}2qLx_&u?&yD4S3s^A> z#BuQL>43bX#@^}h%dXPzU)JMR_viifl~qG_sb?vF@f}D~T@2v}U%A@CpE$r5>pScW zf>{d0DMN;DwV^9kd==qD%LFM3d17x zrlWb03JwrsP|bAUcp2|Q)Z}K04(?4om72@$!~R9_mNx$Hal5R4%3LFS=R-AG4f4DM zVZ(QcQv!dJ@;?PPUUjeLt!S|)qNX-;v)x_{{@`Ka<$Hk;8z@uGb9<@6H%7BU!EV!t zazLqB=ZwThOBSi`3s7Z0Ye+n)byIkM1gGxb7@VCr%1+r(C&{C@Cqcy-(q|Asl|4IK zy3=NmX9-rjz5MO+Ujyt1-Ee-zb>6$}8wJEY_ue9r=p{A?Dm>{ez_WkrD4@Oz09}%g z&6?BL&ZePSgXD#n>vZ8U;=}jb@VwVIE!*xSnJ!oO^@)S@4=r9OXny4tPPW>S8BYn} zOLeOUS&xQ4`oUQF3kbb?aIqIX@f4wO8nNga>XA@ERQjCPX<^Fo1HB&E>+8kYzZy+k z&bc1m!uDVVvzy)14$5r490Ud3%(clLX{mq8W}IzPr{{4?zE!YD{RT97WxzqZ zotMjvBvWFz^0DC5KtwNjU!Y#d|HUNE{g`o15hJxRj~J|` z1^YxU2y2iAp;TEWXPUt@bbwth=Wi${*q{H6;3+95;D00zULtuaQ_9O}C-dytCWW4W zseJ1>4UpHA;nC_Oh2)BHP6~*~itd1p48oUiGSUXuL zZArE`h;`en4eE>+d1Cv|hH#JtLo~vHGL9T)-ldLo_YtUZt2JDwaowF!$%)(DFZ0ldrUK7fk+Ygsb_FX1 zk-dFJN6oLA;Y_!yd)aQk_g^u4$450sdj1V0=z?)ZuDub6(Ht=v46-a{eM$bBP zwEoJ-pts`)wri&h2iPC&db`+$L6hl96L2Iga3rc`cp{~Ej3t7>D4DQ3hGgb79%;ax z(SVVMIggW{YXnI4gtPF3UFc~Gs#@A_MbZ+= zM@#&5_BeN5M1^q(dFdL%omiCYyvSZU*aV?3HY~*t&aaSDTu3V(=|9cPkL)#S5_T;g zTe{#)5h=yxl`Y$!v}aPi47i?Gn-<^j=_ijvMHl5em&ahk%V z89*N+^9LL+Qq3jttxa*J6&t{2Z}Doc{IF%X;dPt{m+PTp&bX3m5@xsVE^2X?+;mmF z$LbAzRF7s@6jN}2=+Ovdiswrq)gS?}CIn&)9(>huN7vA{Y_S95`34q=riI1W_Y3ub3^Ds^ zb2@*I$8b{T#40%Tsu_PX>Sr<1aZs#C?+63AkQ_Z*iB9@@jPU7*C*6J}RysJIZFm4E zbiBE!zraG{^u99jNc(n3G*Lf-B3sI`d1z}@rWvh{WOuFJDedQGR!6-jw001k{_*uY zBpV~gSq)FXcB#d*A4YLfG-5A?Z5A4rA{6T63H=>bq;_ocY|A9cpiJ9uC0L(q3Avd0z`#~8Bnrg! z8WqtgoZ+Y1VcEsMNxX;Qr#yxL3mQAtqwSNTc>ThlT0^tyP9Zf?*3D$KyyRi$if9j( zi;JxfjrbpsR7mSnIXijB|nFsFS{BjdP(v}=FWI_qD_^BK&QrBTn{yT)%Z z*ZKZp%SSmCl=@<3a zu#nBQFS?P=DFTEIuilRvtt8m{yN@DbwyX>y$^syQ$!SujZLL@Rv+GR9d$YIp&|Tr7 zHF3lbV>tETqh@T)BuFZtdyX^|jBv4&<9ts$7Qeq}r4G0&AzU!f;p6qa9l;M*`}sS z%8kK#L3U2-=O~aI|c5$S2OKnTKF$BpEg-41}>=Fv7WY98HBM1DgM;V9HtVhIQc#u<~xr;T5%EI z#KeVj64|Rj+of4;>yjdt5&r#^g&8xnZuse`IWs?vLS z3tKjF5h&8>_rIWY=bS;;QHwxMz!=8UOumC@OZt6aAT{N zN^HKru{+YT$*1RpJIsUl{<%<*deR2$ERSzyvo5Id1N&uw{c!yhoOg)4f70-&57u|Q z_7RP_rv8Jd+osXkY7Hj>=WaQU2He-yZ2X0Hns zzW-M3aWf;IL7aOxkEL;m4VbT!dc!<4kWLFi1W}N!N!+WmUbX+yirdJ5^hKxd==^0Ye1QNAHR72ML(PzX(xgcd`^EVsu3NB^ zXsIswl7ahi8L?7b{qQ(JR2C|2*gI*3%L-lCHFU@0ZKM$^(cS`QE30xyfPF~{+;;wB zQ8{>c!UN1&Fb|D5;wAUT1+IzQXd@0k!GMl{sUWO?zv;g!!eW@uuf{%nnQ2eaa&qSW zmeo&Cq-K z-D}bIXWahVt5Nmdg#sTu-b1f3GA;nf>82n33t45O!(HM zC|)M>PxPu?2q91Fw0+s|o;mKZrToJ6s4aR1O~h}2CpW;)S-UQ!9Cu$@I?x?AAtn-l zdO`Y6d5BmN&RFkRi{-tO$Zkio(n{GC8|<|lE|M3ftfu0fCi}^o>Oa#={1R)Z8DUO6 zwbZ|M{9flXFg9nMU6=~NL`+>2D^kCf08!>icz8u(Dem(*;`0LoXGUj<@_2IX#wbKA zy7d*f|XsPO?D-I#$-Uk42JuK{Ag+l*6tY@#~`Q zm$AI!Qx)F5Pa8BS=_^0bX(^TwH)klLyP=d1TcMcQ-^- zz8+{52sOOhbWgGym#__c9Q5vHO2)nskl0fN!~$enJAJN(EI~fCWT#{3jynhXwf{k? z$tl&_eMQKO^mTqboCRF+N;~q%qhmrc%5!mTQ=E;@Of-M+qxu0LGm(MaJj<0Mk$dC26fdKn8&Dk8 zLV$iSh#$_JW> z_jm<|9z|hkMaWR)yv1e{3WkD@o>bDmua8CS*G?X7C`Y`lk2TXjaAisd>FCDg zLBlQPfWu5eoLNww_Cw>Vw$!fmJIopN^viq|Qe#f*NSUqDLLy%V`169fWCs>sxN_~< zK%|*jmYVdJi(VIi!hLLD%?SRv{{qdXi}V-yf!uA{c-v4BSvwiy&EoI^&Yrm)Q?Gp8 z(z$zwS^kRc+|wEfx_T#^jw`w;2!FuBMSP}Pyq-~z%z|{IjISIN?~y61spRzP>I|=R zDYahsp-{~llzw%m9&B)G>y!eQ$3;}5r|gnG?hTnvMf!~T;u5my?b+;o{dDMiSAgyqTn56nR$)@Xy9}wBG zDD22u&x&R3Z0JaL+yHvYbj3~^6x7OyOZg_J-4abR;_Y{Ffz~-6895LoBsVl}r9Nf1 zj^|ZYIRavNhtL)v&kU|s)IN|ik*AQ3a<*3ahZxVtwvHB@&50(0mu^~`89 zH_{o_&!%3O2Kvka%g;5GcU$=B*XNt-Z86Qw7!3U$g$kiVg^M=OS zT;JQ}DZgG`PWUlA4N~+H=8i0(&8NFPD;KMBW6P$dH!8xH`dnYWRX5-DpxbwQ=t+X* zIj@u-2;3lfHX6vC-QSu;O71rNWL}r?<-MB;>n2cQoYmUjehm_xqfcLp)MM^IU+eo# zbE4f-uGh{uTKR>@M_Rln);4b1!FRJoY{xj`x5nC#=0+%M3sL+ZuF1$i?(M>ge^`hu z-7#xb`?OI9$gTc@{||*fiI?iAWh7vFp7U*?@)0vPm#`YlXWfd=%>cV1vz$#oP~VMP zk+k*I-ynON-eqDJ&vsnU_pSfV#jMY->u*K?Fy!EDz5mX_Gvb;g_j%i$Lb>q*CKdbi ze7%q7(c5p?PA*g0_)v2n#?riV?@rp=>tyvlmoi^}R>*>}Lc23Ti${L~!vl!eYy1yU zj`)XzmZ;(bvc7kc`ghi3O{+*MtwWUS#Ct`RV+^1nQ&1l;lf4F=T+L(P^Go>uSqhSq zh#NV9Pt}+&niB8D5Qp?AoDABpE%=$RS4cH1WfwTdWdfNg2-?x zsWp6N-1`A*_hlBqWXIi(cl}%G>cjnPH)?P%T+!_ag;h-K>siI?mau-hb-_(*T&qIvY}81Hv7V_|=|7F4fM5UKbWseM_%2wi(R06KH|9F=xZ;dyV~ zFDO9P&j^$Ga_iX!X3(RMg!RK_r9!2jpR{hMoDvL&p&%ZOeNf=Efb3_4WpoMy`G7+A zW!K%sy_|FE{Y!$gVo-SvhF&SBTvPg9DzLlscm;NQ4J~RLK{7+E%7_UvRNmuoM}kuj zF+?^vN)+|WzC3$-(Hq4PVGWI;md_t1f8=qoTjK9kQYm>%sETpUxy`A7nvXRd9gSm_Qq%Y!$H{I*>Yqx&wJbuFDiupg z#7PRj{O{HQ=I{rQ?7U#}yU-g|`2#w_DDAkW7eA?OS{Xk)eJoM<)`mZ}a;MfN=!ndw zNv9o6#BEI?ziYJ({-U>3*?0|xIF#FsQsZ`aEWD!ReHWe!_|9QwJAgQIY(P7bLeM$y zv$Fspy4#zZ%@fs+ZJAW%7R-pA>KrMFRFfzD675qMP!0ccl_lju5?`R(w|L*zU>dTT zM^A4`9u6Rsf()OOvCy7LGPBi3D}a(iAHk3l#xz??{bolv2V6hPtJU;rPnL-;(h}q1 z`AWmf8h=FVrI*cCcOrYo{&jR?h^8ZHO)_>u;-3{LN-1#WYX>kIU6Lq#Mf6|7V0eLr%xN#v{zx3S8l zcg4#7!M3MP>=!h`k$s6M(RAUkaG!Uf%hWj_$|h&`ojU3OjGM&sCTl8rZg}+n_x)Pn zA!|8;L50I??&*U=xzn-@b9mm~${lh0NvGH_Lf#-eW-|Gc(H zH~TnWS#=6V^F57GQG~3`nQ8q&-`u9ZE&OqgW~&rcNrB$|9o|LicX2W;!u1Ox6<4Xw z`dQELV^lUkRt*oDgU)hW|5QK(91IOucx^Q{`h$ps=DOxCxj84}^T%SeRJR`8UnsvO zj-aF6y_huuNcD#cOi0d_D?4LUSsMu;K?G69D#gJ&SJgQT(u(Kh@%gzuS@G zI~|C2Qp_KjSTCOrllRi7Cp7`A!v*;NtKrw$LKiJGscq6IOcse+7e>o)!}Ocx|oB}trK zycWS^#7`{1pZ{iI?s>VNVgY7lWQrTm#QJ9HwZBn*VpG#cPdoY2HJ54? z2+9F2WW+-p4e{aOShe(x?HA*U;$k9yVfoK$Cd&qZdT?o&DZBKqSo|LC2A#4qaF77Q zw*dGY=b_W%*#FR*?LEnhmQpH^zgm7@vD3%()|voZyez4U(i}xl#JNyY_~|pCJadvMq}D)vfYDP zj^FXm4V4ZPQD>2#u85KWha1zktSR&~ZplAo2V#bpK5zOb(b=12VvQ8^jw)YSUH-_| zx?{Y$yWFv=i#x-Um}0kJuhBx5z?i*yzsnVai^mWN9{avN=Fl6A1yqsN^Tli`-;;?$p&&dX!$}_hddPRxsU}9`8M4owXZ6|NfXW|5D zLoIgj>mk!#iP51^rNCWO8^J;NzMexE7)6XPN%mC#y3!C_YF}M)Zsi!I)1#UaqPt6M z?{&%rXACZ(fcN;QaS06Jx%*aCNzJN6?xXdt#*nd`tPDkokyaZ}SfuZqM$CWnHzu6C zjPW<-#&2Ir+2b@jnr-r=vi9kw3D~38#Z}7Is$h9E{=8?Nmsc)Ji%gMh0(FtOX2W^R zt_9H!Au7VMg)W(KryLsq;Gn#Ow^Hrt&b8YxU>`j2V#hF=j3S7 zio0*^4dy)e=U`>Gy&DqaWaJSbBL(An)%Z!tcj_r*301Y!&Ia&*v*l`V*u|LD6=4-^ zTfopU?+@Cy=iI6y5z25vAaKh?i0t9e8OqyT-x)TDFlJ#72X;_OQ2_{LK~92`9wM-K z%ZRt1@i^ zd<4z77mW+_4flH(JFg?tkZ%R&lmR)ODt8KSxH*t5*oE@Qxwh=CG_sqUV7s(FMb@ zBNP7ET?~e4&c&>0tbR3G*Zp<&u#Hha(3Wx9lG*I4`NG%(Ly&|1|KrDhGkS2`LrmPj5;hq995ClXGk`gSr(wVj~ zMX1N>iZzh+C?6uRbsJA^1Q5TWZi0Pdf0STv$Do;9*SJ%p&h-vrT{mbrvVj#c{1H8y zDes8G!)(#W0B^}0lXLx3S-rU`o_d}5si7=<0Iq^Tv_>;-pa>bhb|dV;$U-PoOLoM-PJjtuZ}Gs% zRdw#B&&?#gJG{7$*f?P)DT-79_5I;&HSlJ6GR=T@Y)x&(ykMEAAswjC<2+n4BmUXV z$lOP8Z5Y(yQda(OY;8w-dm@z{-Kn`zEU3?kri0r)(K&Y%4qE#p?kd@~K|O)fSp}W# zLeR4Zvz3H65XHGI1xWgo58VPd*)-WlR|IQ@wv1#HFU$N53MEL*Jts+k>?XzN~GO@-Yl#l{J2@TI-Gzb3L^_LoL%LOfVc{Oe@uyPx1#Mk=Y^n^Dn`9Zxd# zRHslY2FpYS@-P;<(uj|?KnrVt(oenqi|v2mHLat3q$kcZ`AE(2${Apy+K zK8%4;zB+Zd6Bu9I5`^5ZTHWY${fyXx*#&$(o~DTrp5)bYTEeWnF+YFqoNS9h-T|q# zBwo>X$kDdmLPSb|Ohu_Kh0h88aj0ACquZIwgVo>7iRk;mx5f8aOo{bVk`r=hgRw@^ zM@;s!%qKW7jag938OZiB$}wd^HT|K-iS_QUu?ar`a8wokbZqY8S&Pn)Y|V@1n>Y** zfTn$dJivIdLsY-jy6?MJ+u$QqIA9NE+OL@Dz784WRgt2{pWBmVBVoAxA7G((t5$sb z5}&-NMi)i&@BGWXQACMq$-Rm0SKCZdYmX~ysYenZFc;K($gxBN4z-A*IQ^f^D8W** zMgGbtGAHunnDo-!d5wm*&;7Ir1z#-G;~MWsk29v<+bXMxTPf6R@`GmX7K$07Q-#Ga(EiY9 PGNg4==SGpb^{f8{p4b6> literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/gl_position_ref.png b/vulkan/data/tessellation/gl_position_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a9c571e71a4c7267fd254879e9980e9b35bb2d GIT binary patch literal 1527 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 Uy(AfTFbD8jQT=7*3)7(g1_^Nx>i_@% literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png b/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png new file mode 100644 index 0000000000000000000000000000000000000000..110b3cc050723cebad33792a3f0673e8ef1c1dfd GIT binary patch literal 12130 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 TYgJ%53v^HIk!q>3W!V1$w%pZl literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1659c513ea7b6ad1c7627b3c36b0c9bf739cfff4 GIT binary patch literal 8368 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 JnWkgJ{{j!7dZGXT literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9106ff572f3710dcf817f0d4b472dc801f5033cc GIT binary patch literal 5644 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 Uy(AfTFbD8jQT=7*3)7(g1_^Nx>i_@% literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a90a547026181d728280266c3cbc8ecdbe75f69a GIT binary patch literal 12130 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000000000000000000000000000000000000..62e87e31f1e5f8c75e13e2428d5b5df34cc3e823 GIT binary patch literal 4143 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 literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png b/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..adf9cf7aa75fa0c35e658ebf0637f3ce4e692bee GIT binary patch literal 1584 zcmb`I{ZCV86vxkP;et}26cEa5omPwxY%N3qM~mVFakM%>MAWKaaSpA6F|EX2wMc6w zgv^0NC=8>>i-OZ2x?r19F?LgNCPRgdmX5(3XzOs^Y_;8en*9gcFXy?>{hsrD&&~au zJQ_*%df)kB^8vs&Gb4R707gAx;EhvD;is4P0(id7Oi#->+%)@B)`5r=X8PmdlW%p! z1IIV@a_}HzH+fcgAuc1;mX}0jjct6PlqnpV^Zmc*V=h5GmWSkU?FX5&k&{M|G-9N z^<{ae>|zsJIS~tSmKmFWJS=_Li3~4pXH)sD-Cb5O1I{MA=QM&S>B5A#(vw*6!6~W( z5hj?Rq>U?MDM_CrKzSPlDQFWEj1Xb?zFUnwJxxYiX;L49vc`v))VPksLp|3q!iM@qjz135 zdV}mO-+Ag;Dy44-P;zoSm{`s?44Cv*Mu=fUfGa;9HZYwLIMJaJHpIXawK6pX2IuMg zLSU^%w}6V?x+QeU7n0EX5VWvzFAoAW+Gh;Cw5^>*=MmE#CMe7xb7YXcM3J`}vN?*p zV%Wi{%#%UXVnxMnc*#*z6vHu2WrYk<1Kw{ACDhtG&;5w$uPxvm?JVI#TXj!q3Kd8D z!of25u08_l29r#_ME|ZP3!NjsY@NfHtGcZgD$ZD2s5ocOvJE%5aMk~g_rC{r+`PGx z4v_-`1KdNHC}lnRqj}C63g+RVDe}u-MpWY%V=fml^T|v*!esPzFol9N>#ZB>hXZcn zUuU4g($!%Ig}7IZ2!;Hov2Lv2e2g@1a{ww!lHEnbn;PvgcW8RnLq9YP6IapnNS=R% z@=dps5#5=K5VdCo%bdn7uyjum>L7@>2vJ*p-Hm#p0BsVkyHVe?5N+hS)JWi}UCZ1< z3BgDzyz2JP%0(X~Z+w9~;;*f7XnH{2nQIXCgL!cmYHHQp(@5LV=gx2FjzGlk>$-=C zH~G1zcWs4xdQ)Z>C?{yd`3iVlq+YQ1{$k5sRwQyr3(P{J) z?P(sQTuL$>x?51Pj*MnQ0n<4`5v?V4Q#9!|gYE(JMq0)n1rk@(E|_Bn12eEdX%si%MIngw-K zm>*%Y)GnZN6y)q5%}N1{9?tlv;0E#0pjtsA#CMs1-xSXiz~=fw&D(Y8B6* zAR3Dw6jWk}R+L0z<@7=kLp&M-l;9DMF5*$+y6X<{&*01MKF@ESyzfjhS*tE3$=7G1 z4*>XTmuu1h2>z1*FOq*{fM|nishm(u5EQmx- zOgfep;IwwU%E4**y_U1#zmg(&8@9iWUfd$8q>iL8XXl(_(Jp*XNEzD~Rhr5_W zxu(F8d_S&jOnkD7GeUL}Lj}QFe{M5Nbe7QWJfc2skm`VXI%Xb>{8nZqqpl`DFx-z znXQd5Bbj-rfbwuwUOY;7h;Gj%bfunl-jT8kgz&;jP3E97(KFNtl?jY82ucH}P||#% zWy4_#gj1O+Vf>QJjpGHngLH5QjF%Rh% zeLweui26=kQRIDTET0|S7!leL~3Ua>=(61siDO3K1u-zmZ4J<;Y9PARb>1J zU2~Q|np^80AjAvnKGEP6`g3RtX#DOnlDO|bdOnYZcYBJ86wvwH=`=_J!9KDeBMUOJ cAh;l++FiRFcjwGc;eS7%U6!J`mS8OT2Q^Z!j{pDw literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/primitive_id_tcs_ref.png b/vulkan/data/tessellation/primitive_id_tcs_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..011fc6c584120decf243dae5989f8b91f1a9ce91 GIT binary patch literal 865 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{4Nn)xkcv5PuWS@#aO5~* z@Z(?gKKw`TVL+~zWDX-I))v}3<7GSXfy;yUI=_+UND*Uzp7u& RCt%iL@O1TaS?83{1OVzSSF!*A literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/primitive_id_tes_ref.png b/vulkan/data/tessellation/primitive_id_tes_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..011fc6c584120decf243dae5989f8b91f1a9ce91 GIT binary patch literal 865 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{4Nn)xkcv5PuWS@#aO5~* z@Z(?gKKw`TVL+~zWDX-I))v}3<7GSXfy;yUI=_+UND*Uzp7u& RCt%iL@O1TaS?83{1OVzSSF!*A literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/user_defined_io_isolines_ref.png b/vulkan/data/tessellation/user_defined_io_isolines_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..310c9d842d56e2d833c22d3c938cf3f60f51eb78 GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{KTj9Okcv5PuN!i?C3tJ=rgo%4g&O-@u?fn|FqpKxxfs@;OXk; Jvd$@?2>?keu5ADS literal 0 HcmV?d00001 diff --git a/vulkan/data/tessellation/user_defined_io_quads_ref.png b/vulkan/data/tessellation/user_defined_io_quads_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..02bf1d5357c41e2e24bba0bd8de32a787b497a9c GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{15X#nkcv5PuWjUHapYlf zd|Ui;`5y7Z(M_+l;tj$U8ylB5EV=)UA)%kaVaBjVH#XZUJkH~P@cG<-bvp(Q;ZZbV pLcrR%c)L4;bq#}n8X@$JNhy-$KTEc19WVD zd%y1e`8@aJd7i!|N8Q>rg=+v{ZT$=OJpcq65|EpN9xdJ9bpWh-vfjRH@3Fw$nfmTq zwFUOr*@mU4_0p#eTSj*5{R(br7TzDcZMr$Oe_#nd&*&cjvw>h=BjKtFK2bwKK0IN9 zrUp1W2-TMV9eA)~h1hT1xpn!kDt4HA&yQP0 zW`4!NQEC~_;?2!wl%MnX@Z77CH5g5WW-&Uv8UNPY5g$$+o4kV2$^9Nwx_UdomR3eG zsL8!b18TAu=*RtS?hx*O>bEZ3KT)|6qs#qc2zd_O!zfs;$KFrbc@{m~k19*wy!CI% zbAPX(PcET8>`}ZNY{zY^`-Gq!4!$lcI`~nqtR}1TQc6Ee$0T|a+(}4LBixykqG&uJ z^%(KyoAsv^4Z+ZYVkVdhK`9`ZB0{7<>_&y<*UTH}Qp>q@p8vnNzGJf1OkIko?b_(oOOKPI-jnJ)BZW@-3XQkK}Ef za+KsZa6P#MV@nm)f__5k)q!Bi%xBL=TO`x0frU=_8q#*TSqlqo@-?IfLN2T>DvCZ%v0UMne(cI^V`jF{BGPHW~VlCKb4 zbs!CkFYADd4#Gt$^9DH`m(uF$@>Cf)JuWTx!bOWW^BfH6X{8hwc_otZ)Ig!0c4^of z2Ksjmd&WT18n)Fy=V{oDNOkNDJ>7_Wq&l`$Pp{79*KxrQRm>3~@sNsX7ZN_aO8iJm zkE0mMtzJh7oVR!#Mkq&Wg7aqYR^%fsfe_{0Y6J?Y2|`w{yBH{>$hUai$VZyJgF5C{ zC>G+pWUxam<;~HtpK-yMiYZ8SlBD^BNU4d)ut;f%h+m|>3>*LYx`^QB^Zw&KHtT8+ WtvY>fyv2|1PN;w0VIQqwPW%I)DgAK( literal 0 HcmV?d00001 diff --git a/vulkan/glsl/440/linkage.test b/vulkan/glsl/440/linkage.test new file mode 100644 index 0000000..7b855f4 --- /dev/null +++ b/vulkan/glsl/440/linkage.test @@ -0,0 +1,2607 @@ + +# Varying tests +group varying "Varying linkage" + group component "Component qualifier" + group vert_in "Vertex shader input" + group vec2 "vec2" + case as_float_float + version 440 core + desc "Read vertex input (vec2) as float float." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 0) out vec2 var0; + + void main() + { + vec2 in0 = vec2(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec2 var0; + layout(location = 0) out vec2 dEQP_FragColor; + + void main() + { + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_unused + version 440 core + desc "Read vertex input (vec2) as float float. Read unused fourth component." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec2 var0; + + void main() + { + vec2 in0 = vec2(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec2 var0; + layout(location = 0) out vec2 dEQP_FragColor; + + void main() + { + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec3 "vec3" + case as_float_float_float + version 440 core + desc "Read vertex input (vec3) as float float float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in float in0_2; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_float_unused + version 440 core + desc "Read vertex input (vec3) as float float float. Read unused fourth component." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in float in0_2; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1, in0_2); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2 + version 440 core + desc "Read vertex input (vec3) as float vec2." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec2 in0_1; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2_unused + version 440 core + desc "Read vertex input (vec3) as float vec2. Read unused fourth component." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec2 in0_1; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float + version 440 core + desc "Read vertex input (vec3) as vec2 float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in float in0_1; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float_unused + version 440 core + desc "Read vertex input (vec3) as vec2 float. Read unused fourth component." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in float in0_1; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec4 "vec4" + case as_float_float_float_float + version 440 core + desc "Read vertex input (vec4) as float float float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in float in0_2; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2, in0_3); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_vec2 + version 440 core + desc "Read vertex input (vec4) as float float vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in vec2 in0_2; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2_float + version 440 core + desc "Read vertex input (vec4) as float vec2 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec2 in0_1; + layout(location = 1, component = 3) in float in0_2; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec3 + version 440 core + desc "Read vertex input (vec4) as float vec3." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec3 in0_1; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float_float + version 440 core + desc "Read vertex input (vec4) as vec2 float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in float in0_1; + layout(location = 1, component = 3) in float in0_2; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_vec2 + version 440 core + desc "Read vertex input (vec4) as vec2 vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in vec2 in0_1; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec3_float + version 440 core + desc "Read vertex input (vec4) as vec3 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec3 in0_0; + layout(location = 1, component = 3) in float in0_1; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group ivec2 "ivec2" + case as_int_int + version 440 core + desc "Read vertex input (ivec2) as int int." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 0) out ivec2 var0; + + void main() + { + ivec2 in0 = ivec2(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec2 var0; + layout(location = 0) out ivec2 dEQP_FragColor; + + void main() + { + ivec2 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_int_unused + version 440 core + desc "Read vertex input (ivec2) as int int. Read unused fourth component." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 1, component = 3) in int in0_3; + layout(location = 0) out ivec2 var0; + + void main() + { + ivec2 in0 = ivec2(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec2 var0; + layout(location = 0) out ivec2 dEQP_FragColor; + + void main() + { + ivec2 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + group ivec4 "ivec4" + case as_int_int_int_int + version 440 core + desc "Read vertex input (ivec4) as int int int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 1, component = 2) in int in0_2; + layout(location = 1, component = 3) in int in0_3; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2, in0_3); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_int_ivec2 + version 440 core + desc "Read vertex input (ivec4) as int int ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 1, component = 2) in ivec2 in0_2; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec2_int + version 440 core + desc "Read vertex input (ivec4) as int ivec2 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in ivec2 in0_1; + layout(location = 1, component = 3) in int in0_2; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec3 + version 440 core + desc "Read vertex input (ivec4) as int ivec3." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in ivec3 in0_1; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_int_int + version 440 core + desc "Read vertex input (ivec4) as ivec2 int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in ivec2 in0_0; + layout(location = 1, component = 2) in int in0_1; + layout(location = 1, component = 3) in int in0_2; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_ivec2 + version 440 core + desc "Read vertex input (ivec4) as ivec2 ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in ivec2 in0_0; + layout(location = 1, component = 2) in ivec2 in0_1; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec3_int + version 440 core + desc "Read vertex input (ivec4) as ivec3 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in ivec3 in0_0; + layout(location = 1, component = 3) in int in0_1; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + end + group vert_out_frag_in "Vertex shader output and fragment shader input" + group vec2 "vec2" + case as_float_float + version 440 core + desc "Write vertex output and read fragment input (vec2) as float float." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec2 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0) out vec2 dEQP_FragColor; + + void main() + { + vec2 var0 = vec2(var0_0, var0_1); + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec3 "vec3" + case as_float_float_float + version 440 core + desc "Write vertex output and read fragment input (vec3) as float float float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + layout(location = 0, component = 2) out float var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.z + in0.z; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0, component = 2) in float var0_2; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 var0 = vec3(var0_0, var0_1, var0_2); + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2 + version 440 core + desc "Write vertex output and read fragment input (vec3) as float vec2." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out vec2 var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yz + in0.yz; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in vec2 var0_1; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 var0 = vec3(var0_0, var0_1); + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float + version 440 core + desc "Write vertex output and read fragment input (vec3) as vec2 float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0, component = 0) out vec2 var0_0; + layout(location = 0, component = 2) out float var0_1; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.z + in0.z; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec2 var0_0; + layout(location = 0, component = 2) in float var0_1; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 var0 = vec3(var0_0, var0_1); + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec4 "vec4" + case as_float_float_float_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as float float float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + layout(location = 0, component = 2) out float var0_2; + layout(location = 0, component = 3) out float var0_3; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.z + in0.z; + var0_3 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0, component = 2) in float var0_2; + layout(location = 0, component = 3) in float var0_3; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2, var0_3); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_vec2 + version 440 core + desc "Write vertex output and read fragment input (vec4) as float float vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + layout(location = 0, component = 2) out vec2 var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0, component = 2) in vec2 var0_2; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as float vec2 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out vec2 var0_1; + layout(location = 0, component = 3) out float var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yz + in0.yz; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in vec2 var0_1; + layout(location = 0, component = 3) in float var0_2; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec3 + version 440 core + desc "Write vertex output and read fragment input (vec4) as float vec3." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out vec3 var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yzw + in0.yzw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in vec3 var0_1; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as vec2 float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out vec2 var0_0; + layout(location = 0, component = 2) out float var0_1; + layout(location = 0, component = 3) out float var0_2; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.z + in0.z; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec2 var0_0; + layout(location = 0, component = 2) in float var0_1; + layout(location = 0, component = 3) in float var0_2; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_vec2 + version 440 core + desc "Write vertex output and read fragment input (vec4) as vec2 vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out vec2 var0_0; + layout(location = 0, component = 2) out vec2 var0_1; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec2 var0_0; + layout(location = 0, component = 2) in vec2 var0_1; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec3_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as vec3 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out vec3 var0_0; + layout(location = 0, component = 3) out float var0_1; + + void main() + { + var0_0 = in0.xyz + in0.xyz; + var0_1 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec3 var0_0; + layout(location = 0, component = 3) in float var0_1; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group ivec2 "ivec2" + case as_int_int + version 440 core + desc "Write vertex output and read fragment input (ivec2) as int int." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec2 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out int var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in int var0_1; + layout(location = 0) out ivec2 dEQP_FragColor; + + void main() + { + ivec2 var0 = ivec2(var0_0, var0_1); + ivec2 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + group ivec4 "ivec4" + case as_int_int_int_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int int int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out int var0_1; + layout(location = 0, component = 2) out int var0_2; + layout(location = 0, component = 3) out int var0_3; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.z + in0.z; + var0_3 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in int var0_1; + layout(location = 0, component = 2) flat in int var0_2; + layout(location = 0, component = 3) flat in int var0_3; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2, var0_3); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_int_ivec2 + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int int ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out int var0_1; + layout(location = 0, component = 2) out ivec2 var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in int var0_1; + layout(location = 0, component = 2) flat in ivec2 var0_2; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec2_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int ivec2 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out ivec2 var0_1; + layout(location = 0, component = 3) out int var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yz + in0.yz; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in ivec2 var0_1; + layout(location = 0, component = 3) flat in int var0_2; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec3 + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int ivec3." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out ivec3 var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yzw + in0.yzw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in ivec3 var0_1; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_int_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as ivec2 int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out ivec2 var0_0; + layout(location = 0, component = 2) out int var0_1; + layout(location = 0, component = 3) out int var0_2; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.z + in0.z; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in ivec2 var0_0; + layout(location = 0, component = 2) flat in int var0_1; + layout(location = 0, component = 3) flat in int var0_2; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_ivec2 + version 440 core + desc "Write vertex output and read fragment input (ivec4) as ivec2 ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out ivec2 var0_0; + layout(location = 0, component = 2) out ivec2 var0_1; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in ivec2 var0_0; + layout(location = 0, component = 2) flat in ivec2 var0_1; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec3_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as ivec3 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out ivec3 var0_0; + layout(location = 0, component = 3) out int var0_1; + + void main() + { + var0_0 = in0.xyz + in0.xyz; + var0_1 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in ivec3 var0_0; + layout(location = 0, component = 3) flat in int var0_1; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + end + group frag_out "Fragment shader output" + group vec2 "vec2" + case as_float_float + version 440 core + desc "Write fragment output (vec2) as float float." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec2 in0; + layout(location = 0) out vec2 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec2 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + + void main() + { + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + } + "" + end + end + group vec3 "vec3" + case as_float_float_float + version 440 core + desc "Write fragment output (vec3) as float float float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0) out vec3 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + layout(location = 0, component = 2) out float dEQP_FragColor_2; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.z; + } + "" + end + case as_float_vec2 + version 440 core + desc "Write fragment output (vec3) as float vec2." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0) out vec3 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out vec2 dEQP_FragColor_1; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yz; + } + "" + end + case as_vec2_float + version 440 core + desc "Write fragment output (vec3) as vec2 float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0) out vec3 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0, component = 0) out vec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out float dEQP_FragColor_1; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.z; + } + "" + end + end + group vec4 "vec4" + case as_float_float_float_float + version 440 core + desc "Write fragment output (vec4) as float float float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + layout(location = 0, component = 2) out float dEQP_FragColor_2; + layout(location = 0, component = 3) out float dEQP_FragColor_3; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.z; + dEQP_FragColor_3 = out0.w; + } + "" + end + case as_float_float_vec2 + version 440 core + desc "Write fragment output (vec4) as float float vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + layout(location = 0, component = 2) out vec2 dEQP_FragColor_2; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.zw; + } + "" + end + case as_float_vec2_float + version 440 core + desc "Write fragment output (vec4) as float vec2 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out vec2 dEQP_FragColor_1; + layout(location = 0, component = 3) out float dEQP_FragColor_2; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yz; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_float_vec3 + version 440 core + desc "Write fragment output (vec4) as float vec3." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out vec3 dEQP_FragColor_1; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yzw; + } + "" + end + case as_vec2_float_float + version 440 core + desc "Write fragment output (vec4) as vec2 float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out vec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out float dEQP_FragColor_1; + layout(location = 0, component = 3) out float dEQP_FragColor_2; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.z; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_vec2_vec2 + version 440 core + desc "Write fragment output (vec4) as vec2 vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out vec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out vec2 dEQP_FragColor_1; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.zw; + } + "" + end + case as_vec3_float + version 440 core + desc "Write fragment output (vec4) as vec3 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out vec3 dEQP_FragColor_0; + layout(location = 0, component = 3) out float dEQP_FragColor_1; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.xyz; + dEQP_FragColor_1 = out0.w; + } + "" + end + end + group ivec2 "ivec2" + case as_int_int + version 440 core + desc "Write fragment output (ivec2) as int int." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec2 in0; + layout(location = 0) out ivec2 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec2 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out int dEQP_FragColor_1; + + void main() + { + ivec2 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + } + "" + end + end + group ivec4 "ivec4" + case as_int_int_int_int + version 440 core + desc "Write fragment output (ivec4) as int int int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out int dEQP_FragColor_1; + layout(location = 0, component = 2) out int dEQP_FragColor_2; + layout(location = 0, component = 3) out int dEQP_FragColor_3; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.z; + dEQP_FragColor_3 = out0.w; + } + "" + end + case as_int_int_ivec2 + version 440 core + desc "Write fragment output (ivec4) as int int ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out int dEQP_FragColor_1; + layout(location = 0, component = 2) out ivec2 dEQP_FragColor_2; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.zw; + } + "" + end + case as_int_ivec2_int + version 440 core + desc "Write fragment output (ivec4) as int ivec2 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out ivec2 dEQP_FragColor_1; + layout(location = 0, component = 3) out int dEQP_FragColor_2; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yz; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_int_ivec3 + version 440 core + desc "Write fragment output (ivec4) as int ivec3." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out ivec3 dEQP_FragColor_1; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yzw; + } + "" + end + case as_ivec2_int_int + version 440 core + desc "Write fragment output (ivec4) as ivec2 int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out ivec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out int dEQP_FragColor_1; + layout(location = 0, component = 3) out int dEQP_FragColor_2; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.z; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_ivec2_ivec2 + version 440 core + desc "Write fragment output (ivec4) as ivec2 ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out ivec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out ivec2 dEQP_FragColor_1; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.zw; + } + "" + end + case as_ivec3_int + version 440 core + desc "Write fragment output (ivec4) as ivec3 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out ivec3 dEQP_FragColor_0; + layout(location = 0, component = 3) out int dEQP_FragColor_1; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.xyz; + dEQP_FragColor_1 = out0.w; + } + "" + end + end + end + end +end diff --git a/vulkan/glsl/es310/arrays.test b/vulkan/glsl/es310/arrays.test new file mode 100644 index 0000000..01d5059 --- /dev/null +++ b/vulkan/glsl/es310/arrays.test @@ -0,0 +1,1812 @@ +#X1. Type: float[5] // An array type with 5 elements +#X2. Return value: float[5] func() { ... } // Function with a 5-element array return value +#X3. Array constructor: float[3] (1.0, 2.0, 5.5) // 3-element array with given elements +# // Fails with array of matrices! +#X4. As unnamed parameter: void func(float[5]); +#X5. Variable declaration: float[5] a; // Equivalent to float a[5]; (?) +#X6. Empty brackets: float x[] = float[] (1.0, 2.0, 3.0); // Size of x is 3 +# float y[] = float[3] (1.0, 2.0, 3.0); // Size of y is 3 (equivalent) +# float z[] = y; // Size of z is 3 +#X7. Testing that 2-dimensional arrays don't work: float a[5][3]; // Illegal +# float[5] a[3]; // Illegal +#X8. Testing that array declaration with dynamic variables as array size won't work. +#X9. Testing length() operator: z.length(); // Returns 3 for z defined before +#X10. Test C/C++ style {}-constructor +#X11. Test struct arrays +#X12. Test array element access at initialization with const/dynamic values + +group constructor "Array constructors" + + case float3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[3] x; + x = float[3] (in0.z, in0.x, in0.y); + out0 = vec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case float4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 0.2) | vec4(7.4, -1.0, 2.0, -1.3) | vec4(3.0, 1.6, -2.0, 0.5) ]; + output vec4 out0 = [ vec4(2.0, 0.5, 0.2, 1.0) | vec4(2.0, 7.4, -1.3, -1.0) | vec4(-2.0, 3.0, 0.5, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[4] x; + x = float[4] (in0.z, in0.x, in0.w, in0.y); + out0 = vec4(x[0], x[1], x[2], x[3]); + ${OUTPUT} + } + "" + end + + case int3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[3] x; + x = int[3] (in0.z, in0.x, in0.y); + out0 = ivec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case int4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 1, 2, 0) | ivec4(7, -1, 2, -1) | ivec4(3, 1, -2, 0) ]; + output ivec4 out0 = [ ivec4(2, 0, 0, 1) | ivec4(2, 7, -1, -1) | ivec4(-2, 3, 0, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[4] x; + x = int[4] (in0.z, in0.x, in0.w, in0.y); + out0 = ivec4(x[0], x[1], x[2], x[3]); + ${OUTPUT} + } + "" + end + + case bool3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, true, false) ]; + output bvec3 out0 = [ bvec3(false, true, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[3] x; + x = bool[3] (in0.z, in0.x, in0.y); + out0 = bvec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case bool4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, false, false) ]; + output bvec4 out0 = [ bvec4(false, true, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[4] x; + x = bool[4] (in0.z, in0.x, in0.y, in0.w); + out0 = bvec4(x[0], x[1], x[2], x[3]); + ${OUTPUT} + } + "" + end + + case struct3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(2.0, -0.5, -1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + + + void main() + { + ${SETUP} + + struct test + { + float f; + vec3 v; + }; + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[3] x = test[3] (a, b, c); + + out0 = vec3(x[0].f, x[1].v.y, x[2].v.x); + ${OUTPUT} + } + "" + end + + case struct4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 1.5) ]; + output vec4 out0 = [ vec4(2.0, -0.5, -1.0, -1.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + + void main() + { + ${SETUP} + + + struct test + { + float f; + vec3 v; + }; + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + test d = test(-in0.w, vec3(-in0.w, -in0.x, -in0.z)); + + test[4] x = test[4] (a, b, c, d); + + out0 = vec4(x[0].f, x[1].v.y, x[2].v.x, x[3].v.x); + ${OUTPUT} + } + "" + end + + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(7.4, -2.0, -1.0) | vec3(3.0, 2.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + + vec3[3] x; + x = vec3[3] ( vec3(in0.x, in0.y, in0.z) , + vec3(-in0.y, -in0.z, -in0.x), + vec3(in0.z, in0.x, in0.y) ); + out0 = vec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case int_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(5, -2, 1) | ivec3(7, -2, -1) | ivec3(3, 2, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + + ivec3[3] x; + x = ivec3[3] ( ivec3(in0.x, in0.y, in0.z) , + ivec3(-in0.y, -in0.z, -in0.x), + ivec3(in0.z, in0.x, in0.y) ); + out0 = ivec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case bool_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + + bvec3[3] x; + x = bvec3[3] ( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x), + bvec3(in0.z, in0.x, in0.y) ); + out0 = bvec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, false, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y) , + mat3( in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + +end # type + +group return "Arrays as return value" + + case float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, -0.5, 1.0) | vec3(2.0, -7.4, -1.0) | vec3(-2.0, -3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float[3] func(vec3 a) + { + return float[3] (a.z, -a.x, a.y); + } + + void main() + { + ${SETUP} + float[3] x = func(in0); + out0 = vec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case int + version 310 es + values + { + input ivec3 in0 = [ ivec3(4, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, -4, 1) | ivec3(2, -7, -1) | ivec3(-2, -3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + int[3] func(ivec3 a) + { + return int[3] (a.z, -a.x, a.y); + } + + void main() + { + ${SETUP} + int[3] x = func(in0); + out0 = ivec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, true, true) ]; + output bvec3 out0 = [ bvec3(true, false, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bool[3] func(bvec3 a) + { + return bool[3] (a.z, a.x, a.y); + } + + void main() + { + ${SETUP} + bool[3] x = func(in0); + out0 = bvec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; + output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec3[3] func(vec3[3] a) + { + return vec3[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z) , + vec3(in0.y, -in0.z, in0.x) , + vec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = vec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + test[3] func(test[3] a) + { + return test[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[3] t = test[3] (a, b, c); + test[3] x = func(t); + + out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x); + ${OUTPUT} + } + "" + end + + case int_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ]; + output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + ivec3[3] func(ivec3[3] a) + { + return ivec3[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + ivec3[3] x = ivec3[3]( ivec3(in0.x, in0.y, -in0.z) , + ivec3(in0.y, -in0.z, in0.x) , + ivec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = ivec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case bool_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bvec3[3] func(bvec3[3] a) + { + return bvec3[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + bvec3[3] x = bvec3[3]( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x) , + bvec3(in0.z, in0.x, in0.y) ); + x = func(x); + out0 = bvec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y); + a[2] = mat3(in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + +end # return + +group unnamed_parameter "Array type as unnamed parameter of a function prototype" + + case float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float[3] func(float[3]); + + void main() + { + ${SETUP} + float[3] a = float[3] (in0.x, in0.y, in0.z); + float[3] b = func(a); + out0 = vec3(b[0], b[1], b[2]); + ${OUTPUT} + } + + float[3] func(float[3] a) + { + return float[3] (a[2], a[0], a[1]); + } + + "" + end + + case int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + int[3] func(int[3]); + + void main() + { + ${SETUP} + int[3] a = int[3] (in0.x, in0.y, in0.z); + int[3] b = func(a); + out0 = ivec3(b[0], b[1], b[2]); + ${OUTPUT} + } + + int[3] func(int[3] a) + { + return int[3] (a[2], a[0], a[1]); + } + + "" + end + + case bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, true, true) ]; + output bvec3 out0 = [ bvec3(true, false, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bool[3] func(bool[3]); + + void main() + { + ${SETUP} + bool[3] a = bool[3] (in0.x, in0.y, in0.z); + bool[3] b = func(a); + out0 = bvec3(b[0], b[1], b[2]); + ${OUTPUT} + } + + bool[3] func(bool[3] a) + { + return bool[3] (a[2], a[0], a[1]); + } + + "" + end + + case struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + test[3] func(test[3]); + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[3] t = test[3] (a, b, c); + test[3] x = func(t); + out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x); + ${OUTPUT} + } + + test[3] func(test[3] a) + { + return test[3] (a[1], a[2], a[0]); + } + + "" + end + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; + output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec3[3] func(vec3[3]); + + void main() + { + ${SETUP} + vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z) , + vec3(in0.y, -in0.z, in0.x) , + vec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = vec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + + vec3[3] func(vec3[3] a) + { + return vec3[3] (a[1], a[2], a[0]); + } + "" + end + + case int_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ]; + output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + ivec3[3] func(ivec3[3]); + + void main() + { + ${SETUP} + ivec3[3] x = ivec3[3]( ivec3(in0.x, in0.y, -in0.z) , + ivec3(in0.y, -in0.z, in0.x) , + ivec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = ivec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + + ivec3[3] func(ivec3[3] a) + { + return ivec3[3] (a[1], a[2], a[0]); + } + "" + end + + case bool_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bvec3[3] func(bvec3[3]); + + void main() + { + ${SETUP} + bvec3[3] x = bvec3[3]( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x) , + bvec3(in0.z, in0.x, in0.y) ); + x = func(x); + out0 = bvec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + + bvec3[3] func(bvec3[3] a) + { + return bvec3[3] (a[1], a[2], a[0]); + } + + "" + end + + case float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3]); + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + "" + end + + case int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3]); + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + "" + end + + case bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3]); + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y); + a[2] = mat3(in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + "" + end + +end # unnamed_parameter + +group declaration "Declaring arrays" + + case implicit_size_float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[] x = float[] (in0.z, in0.x, in0.y); + float[] y = x; + + out0 = vec3(y[0], y[1], y[2]); + ${OUTPUT} + } + "" + end + + case implicit_size_int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[] x = int[] (in0.z, in0.x, in0.y); + int[] y = x; + + out0 = ivec3(y[0], y[1], y[2]); + ${OUTPUT} + } + "" + end + + case implicit_size_bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, true, true) ]; + output bvec3 out0 = [ bvec3(true, false, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[] x = bool[] (in0.z, in0.x, in0.y); + bool[] y = x; + + out0 = bvec3(y[0], y[1], y[2]); + ${OUTPUT} + } + "" + end + + case implicit_size_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-1.0, -0.5, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[] x = test[] (c, b, a); + test[] y = x; + + out0 = vec3(y[0].v.x, y[1].v.y, y[2].v.z); + ${OUTPUT} + } + "" + end + + case implicit_size_float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; + output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(-0.5, 1.0, 11.2) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + vec3[] x = vec3[] ( vec3(in0.x, in0.y, -in0.z) , + vec3(in0.y, -in0.z, in0.x) , + vec3(-in0.z, in0.x, in0.y) ); + vec3[] y = x; + out0 = vec3(y[0].x, y[1].y, y[2].z); + ${OUTPUT} + } + "" + end + + case implicit_size_int_ivec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(5, 11, -1) ]; + output ivec3 out0 = [ ivec3(0, -2, 1) | ivec3(5, 1, 11) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + ivec3[] x = ivec3[] ( ivec3(in0.x, in0.y, -in0.z) , + ivec3(in0.y, -in0.z, in0.x) , + ivec3(-in0.z, in0.x, in0.y) ); + ivec3[] y = x; + out0 = ivec3(y[0].x, y[1].y, y[2].z); + ${OUTPUT} + } + "" + end + + case implicit_size_bool_bvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bvec3[] x = bvec3[] ( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x) , + bvec3(in0.z, in0.x, in0.y) ); + bvec3[] y = x; + out0 = bvec3(y[0].x, y[1].y, y[2].z); + ${OUTPUT} + } + "" + end + + case implicit_size_float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case implicit_size_int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case implicit_size_bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, false, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y) , + mat3( in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + + case constant_expression_array_size + version 310 es + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + const int a = 4; + + void main () + { + const int b = 5; + float[a] array1; + float[b] array2; + float[array1.length()] array3; + float[a+b] array4; + ${OUTPUT} + } + "" + end + + case constant_expression_array_access + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + const int a = 3; + + void main () + { + ${SETUP} + const int b = 2; + float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [a]; + float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [b+2]; + float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [5]; + out0 = vec3(x, y, z); + ${OUTPUT} + } + "" + end + + case dynamic_expression_array_access + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + input ivec2 in1 = ivec2(3, 2); + output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main () + { + ${SETUP} + float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x]; + float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.y+2]; + float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x+in1.y]; + out0 = vec3(x, y, z); + ${OUTPUT} + } + "" + end + + case multiple_declarations_single_statement_explicit + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(2.0, -1.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main () + { + ${SETUP} + float[] x = float[6] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x), + y = float[2] (in0.x, -in0.y); + out0 = vec3(x[2], y[1], x[0]); + ${OUTPUT} + } + "" + end + + case multiple_declarations_single_statement_implicit + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) ]; + output ivec3 out0 = [ ivec3(2, -1, 5) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main () + { + ${SETUP} + int[] x = int[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x), + y = int[] (in0.x, -in0.y); + out0 = ivec3(x[2], y[1], x[0]); + ${OUTPUT} + } + "" + end + +end # declaration + +group length "Array length method" + + case float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[] x = float[3] (in0.z, in0.x, in0.y); + float[] y = float[] (in0.z, in0.x, in0.y, in0.x, in0.y); + float[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + + case int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[] x = int[3] (in0.z, in0.x, in0.y); + int[] y = int[] (in0.z, in0.x, in0.y, in0.x, in0.y); + int[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + + case bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[] x = bool[3] (in0.z, in0.x, in0.y); + bool[] y = bool[] (in0.z, in0.x, in0.y, in0.x, in0.y); + bool[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + + case struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[] x = test[3] (a, b, c); + test[] y = test[] (c, a, b, b, a); + test[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + +end # length diff --git a/vulkan/glsl/es310/conditionals.test b/vulkan/glsl/es310/conditionals.test new file mode 100644 index 0000000..c0b2d60 --- /dev/null +++ b/vulkan/glsl/es310/conditionals.test @@ -0,0 +1,223 @@ +group if "If Statements" + + case single_statement + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + if (in0 >= 1.0) + out0 = 1.0; + ${OUTPUT} + } + "" + end + + case compound_statement + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (in0 >= 1.0) + { + out0 = 1.0; + out1 = 0.0; + } + ${OUTPUT} + } + "" + end + + case sequence_statements + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (in0 >= 1.0) + out0 = 1.0, out1 = 0.0; + ${OUTPUT} + } + "" + end + + case sequence_condition + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (false, in0 >= 1.0) + out0 = 1.0, out1 = 0.0; + ${OUTPUT} + } + "" + end + + case complex_condition + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (false || (in0 >= 1.0) && (in0 - 2.0*in0 < 0.0)) + out0 = 1.0, out1 = 0.0; + ${OUTPUT} + } + "" + end + + case if_else + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + if (in0 >= 1.0) + out0 = 1.0; + else + out0 = 0.0; + ${OUTPUT} + } + "" + end + + case if_elseif + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + if (in0 >= 2.0) + out0 = 2.0; + else if (in0 >= 1.0) + out0 = 1.0; + ${OUTPUT} + } + "" + end + + case if_elseif_else + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + if (in0 >= 2.0) + out0 = 2.0; + else if (in0 >= 1.0) + out0 = 1.0; + else + out0 = 0.0; + ${OUTPUT} + } + "" + end + + case mixed_if_elseif_else + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + if (in0 >= 2.0) + { + out0 = 2.0; + } + else if (in0 >= 1.0) + out0 = 2.0, out0 = 1.0; + else + out0 = 0.0; + ${OUTPUT} + } + "" + end + +end # if diff --git a/vulkan/glsl/es310/constant_expressions.test b/vulkan/glsl/es310/constant_expressions.test new file mode 100644 index 0000000..f80361e --- /dev/null +++ b/vulkan/glsl/es310/constant_expressions.test @@ -0,0 +1,483 @@ +group trivial "Trivial expressions" + + case float + version 310 es + values { output float out0 = 5.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = 5.0; + out0 = a; + ${OUTPUT} + } + "" + end + + case int + version 310 es + values { output int out0 = 5; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a = 5; + out0 = a; + ${OUTPUT} + } + "" + end + + case bool + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const bool a = true; + out0 = a; + ${OUTPUT} + } + "" + end + + case cast + version 310 es + values { output float out0 = 1.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = float(int(bool(true))); + out0 = a; + ${OUTPUT} + } + "" + end + +end # trivial + +group operators "Operators" + + case math_float + version 310 es + values { output float out0 = 2.19; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = 6.0/3.5 + 1.8*2.6 - 4.2; + out0 = a; + ${OUTPUT} + } + "" + end + + case math_vec + version 310 es + values { output float out0 = 15.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy; + out0 = a.x + a.y + a.z; + ${OUTPUT} + } + "" + end + + case math_int + version 310 es + values { output int out0 = 7; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const int a = 25%7 + 2*3 - 9/3; + out0 = a; + ${OUTPUT} + } + "" + end + + case math_ivec + version 310 es + values { output int out0 = 21; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const ivec3 a = ivec2(25%7, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz; + out0 = a.x + a.y + a.z; + ${OUTPUT} + } + "" + end + + case math_mat + version 310 es + values { output float out0 = 8.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const mat3 a = mat3(3.0) * mat3(4.0); + const mat4 b = mat4(a[1][1])*2.0; + const mat2 c = mat2(b[0][0]) / 3.0; + out0 = c[0][0]+c[1][0]; + ${OUTPUT} + } + "" + end + + case bitwise + version 310 es + values { output int out0 = 678332; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const int a = (((0xABBA<<4) ^ 0xCAFE) | (0xDCBA & (0xABCD>>2))) ^ (~0xDEAD & 0xBEEF); + out0 = a; + ${OUTPUT} + } + "" + end + + case logical + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const bool a = (!false || false) && (true ^^ false); + out0 = a; + ${OUTPUT} + } + "" + end + + case compare + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1)); + out0 = a; + ${OUTPUT} + } + "" + end + + case selection + version 310 es + values { output float out0 = 5.3; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = false ? 0.0 : (true ? 5.3 : 1.0); + out0 = a; + ${OUTPUT} + } + "" + end + +end # operators + +group complex_types "Arrays & Structs" + + case struct + version 310 es + values { output float out0 = 260.922; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct S + { + vec4 a; + int b; + }; + + void main() + { + const S s = S(vec4(1.5), 123); + out0 = length(s.a.xy)*float(s.b); + ${OUTPUT} + } + "" + end + + case nested_struct + version 310 es + values { output float out0 = 965.9; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct S + { + vec4 v; + int i; + }; + + struct T + { + S s; + bool b; + int i; + }; + + struct U + { + S s; + T t; + }; + + void main() + { + const S s = S(vec4(1.5), 123); + const T t = T(s, false, 3); + const U u = U(s, t); + const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6)); + out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3 + ${OUTPUT} + } + "" + end + + case array_size + version 310 es + values { output int out0 = 1; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a[max(-1, 1)] = int[1](1); + out0 = a[0]; + ${OUTPUT} + } + "" + end + + case array_length + version 310 es + values { output int out0 = 2; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a[1] = int[1](1); + out0 = a.length() + a[0]; + ${OUTPUT} + } + "" + end + + case array + version 310 es + values { output float out0 = 4.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a[1+2+5] = float[8](0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0); + const float f = a[1+2+4]; + out0 = f + float(a.length()-8); + ${OUTPUT} + } + "" + end + +end # complex_types + +group other "Other operations" + + case switch_case + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int _0 = 0; + const int _1 = 1; + const int _2 = 2; + const int _3 = 3; + const int _4 = 4; + + switch(int(in0)) + { + case _0: + out0 = 0; + break; + case _1: + out0 = 1; + break; + case _2: + out0 = 2; + break; + case _3: + out0 = 3; + break; + case _4: + out0 = 4; + break; + case 5: + out0 = 10; + break; + default: + out0 = 100; + + } + ${OUTPUT} + } + "" + end + + case nested_builtin_funcs + version 310 es + values { output float out0 = 3.05; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/); + out0 = a; + ${OUTPUT} + } + "" + end + + case complex + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct T + { + vec4 v; + }; + + struct S + { + T t; + int i; + bool b; + }; + + void main() + { + const T t = T(vec4(1.0)); + const S s = S(t, 42, true); + const int _0 = int(sin(0.0)); + const int _1 = int(1.0); + const int _2 = 2 + int(float(_0>_1)); + const int _3 = min(gl_MaxVertexAttribs, 16)/4 - 1; + const int _4 = min(gl_MaxDrawBuffers, 4); + const ivec4 nums = ivec4(0, 1, 2, 3); + + switch(int(in0)) + { + case int(float(_0)): + out0 = ((true!=false) && (!false)) ? 0 : 25; + break; + case ivec3(_1).x: + out0 = 3*18/9-5; + break; + case nums[_2]: + out0 = int(length(vec4(1.0))+0.001); + break; + case _3: + out0 = 3; + break; + case clamp(_4, 1, 6): + out0 = (s.i-2)/10; + break; + case max(3, 5): + out0 = 10; + break; + default: + out0 = 100; + + } + ${OUTPUT} + } + "" + end +end diff --git a/vulkan/glsl/es310/constants.test b/vulkan/glsl/es310/constants.test new file mode 100644 index 0000000..82c57c1 --- /dev/null +++ b/vulkan/glsl/es310/constants.test @@ -0,0 +1,838 @@ +case float_input + version 310 es + values + { + input float in0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 | -1.123 | -0.75 | 512.0 | -72.13 | -199.91 ]; + output float out0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 | -1.123 | -0.75 | 512.0 | -72.13 | -199.91 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = in0; + ${OUTPUT} + } + "" +end + +case float_uniform + version 310 es + values + { + uniform float uni0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 ]; + output float out0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = uni0; + ${OUTPUT} + } + "" +end + +case float_0 + version 310 es + values { output float out0 = 1.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = +1.123; + ${OUTPUT} + } + "" +end + +case float_1 + version 310 es + values { output float out0 = -1.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -1.123; + ${OUTPUT} + } + "" +end + +case float_2 + version 310 es + values { output float out0 = 123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 123.; + ${OUTPUT} + } + "" +end + +case float_3 + version 310 es + values { output float out0 = 0.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = .123; + ${OUTPUT} + } + "" +end + +case float_4 + version 310 es + values { output float out0 = 123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 1.23e+2; + ${OUTPUT} + } + "" +end + +case float_5 + version 310 es + values { output float out0 = -123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -1.23E+2; + ${OUTPUT} + } + "" +end + +case float_6 + version 310 es + values { output float out0 = -123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -1.23e2; + ${OUTPUT} + } + "" +end + +case float_7 + version 310 es + values { output float out0 = 0.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 1.23e-1; + ${OUTPUT} + } + "" +end + +case float_8 + version 310 es + values { output float out0 = 1000.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 1e3; + ${OUTPUT} + } + "" +end + +case float_f_suffix_0 + version 310 es + values { output float out0 = 1.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main () + { + ${SETUP} + float value = 1.0f; + out0 = value; + ${OUTPUT} + } + "" +end + +case float_f_suffix_1 + version 310 es + values { output float out0 = 1.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main () + { + ${SETUP} + float value = 1.0F; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_0 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 123; + ${OUTPUT} + } + "" +end + +case int_1 + version 310 es + values { output int out0 = -321; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -321; + ${OUTPUT} + } + "" +end + +case int_2 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0x7B; + ${OUTPUT} + } + "" +end + +case int_3 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0X7b; + ${OUTPUT} + } + "" +end + +case int_4 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0173; + ${OUTPUT} + } + "" +end + +case bool_0 + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = true; + ${OUTPUT} + } + "" +end + +case bool_1 + version 310 es + values { output bool out0 = false; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = false; + ${OUTPUT} + } + "" +end + +case const_float_global + version 310 es + values { output float out0 = 1000.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 1000.0; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_main + version 310 es + values { output float out0 = -1000.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant = -1000.0; + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_function + version 310 es + values { output float out0 = -0.012; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + float func() + { + const float theConstant = -0.012; + return theConstant; + } + void main() + { + out0 = func(); + ${OUTPUT} + } + "" +end + +case const_float_scope + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_1 + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant = 100.0; + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_2 + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 100.0; + void main() + { + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_3 + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 100.0; + void main() + { + const float theConstant = -100.0; + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_4 + version 310 es + values { output float out0 = 2.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 100.0; + float func() + { + const float theConstant = 2.0; + return theConstant; + } + void main() + { + const float theConstant = -100.0; + { + const float theConstant = 1.0; + out0 = func(); + } + ${OUTPUT} + } + "" +end + +case const_float_operations_with_const + version 310 es + values { output float out0 = 21.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theGlobalConstant = 10.0; + float func() + { + const float theConstant = 2.0; + return theConstant; + } + void main() + { + const float theConstant = -100.0; + { + const float theConstant = 1.0; + out0 = func() * theGlobalConstant + theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_assignment_1 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant1 = 10.0; + const float theConstant2 = theConstant1; + out0 = theConstant2; + ${OUTPUT} + } + "" +end + +case const_float_assignment_2 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant1 = 10.0; + { + const float theConstant2 = theConstant1; + out0 = theConstant2; + } + ${OUTPUT} + } + "" +end + +case const_float_assignment_3 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant1 = 10.0; + void main() + { + const float theConstant2 = theConstant1; + out0 = theConstant2; + ${OUTPUT} + } + "" +end + +case const_float_assignment_4 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant1 = 10.0; + float func() + { + const float theConstant2 = theConstant1; + return theConstant2; + } + void main() + { + out0 = func(); + ${OUTPUT} + } + "" +end + +case const_float_from_int + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = float(10); + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_from_vec2 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = vec2(1.0, 10.0).y; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_from_vec3 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = vec3(1.0, 10.0, 20.0).y; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_from_vec4 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = vec4(1.0, 10.0, 20.0, -10.0).y; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case int_decimal + version 310 es + values { output int out0 = 7; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 7; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_octal + version 310 es + values { output int out0 = 15; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 017; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_hexadecimal_0 + version 310 es + values { output int out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 0x2f; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_hexadecimal_1 + version 310 es + values { output int out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 0X2f; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_0 + version 310 es + values { output uint out0 = 7; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 7u; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_1 + version 310 es + values { output uint out0 = 7; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 7U; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_2 + version 310 es + values { output uint out0 = 0; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0u; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_3 + version 310 es + values { output uint out0 = 0; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0U; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_octal_0 + version 310 es + values { output uint out0 = 15; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 017u; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_octal_1 + version 310 es + values { output uint out0 = 15; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 017U; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_hexadecimal_0 + version 310 es + values { output uint out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0x2fU; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_hexadecimal_1 + version 310 es + values { output uint out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0X2fu; + out0 = value; + ${OUTPUT} + } + "" +end diff --git a/vulkan/glsl/es310/conversions.test b/vulkan/glsl/es310/conversions.test new file mode 100644 index 0000000..9f3239a --- /dev/null +++ b/vulkan/glsl/es310/conversions.test @@ -0,0 +1,13186 @@ +# WARNING: This file is auto-generated. Do NOT modify it manually, but rather +# modify the generating script file. Otherwise changes will be lost! + +group scalar_to_scalar "Scalar to Scalar Conversions" + + case float_to_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case float_to_int + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 0 | -8 | -20 | 36 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case float_to_bool + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bool out0 = [ false | true | true | true | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case int_to_float + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 | 5.0 | 8.0 | 11.0 | -12.0 | -66.0 | -192.0 | 255.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case int_to_int + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output int out0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case int_to_bool + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bool out0 = [ false | true | true | true | true | true | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uint_to_float + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output float out0 = [ 0.0 | 2.0 | 3.0 | 8.0 | 9.0 | 12.0 | 10.0 | 45.0 | 193.0 | 255.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uint_to_int + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output int out0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bool + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bool out0 = [ false | true | true | true | true | true | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bool_to_float + version 310 es + values + { + input bool in0 = [ true | false ]; + output float out0 = [ 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bool_to_int + version 310 es + values + { + input bool in0 = [ true | false ]; + output int out0 = [ 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case float_to_uint + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uint out0 = [ 0 | 1 | 2 | 3 | 0 | 8 | 20 | 36 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case int_to_uint + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uint out0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uint + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uint out0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uint + version 310 es + values + { + input bool in0 = [ true | false ]; + output uint out0 = [ 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + +end # scalar_to_scalar +group scalar_to_vector "Scalar to Vector Conversions" + + case float_to_vec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(3.5, 3.5) | vec2(-0.5, -0.5) | vec2(-8.25, -8.25) | vec2(-20.125, -20.125) | vec2(36.8125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_vec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(3.5, 3.5, 3.5) | vec3(-0.5, -0.5, -0.5) | vec3(-8.25, -8.25, -8.25) | vec3(-20.125, -20.125, -20.125) | vec3(36.8125, 36.8125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_vec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(3.5, 3.5, 3.5, 3.5) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-8.25, -8.25, -8.25, -8.25) | vec4(-20.125, -20.125, -20.125, -20.125) | vec4(36.8125, 36.8125, 36.8125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case float_to_ivec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(3, 3) | ivec2(0, 0) | ivec2(-8, -8) | ivec2(-20, -20) | ivec2(36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_ivec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(3, 3, 3) | ivec3(0, 0, 0) | ivec3(-8, -8, -8) | ivec3(-20, -20, -20) | ivec3(36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_ivec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(3, 3, 3, 3) | ivec4(0, 0, 0, 0) | ivec4(-8, -8, -8, -8) | ivec4(-20, -20, -20, -20) | ivec4(36, 36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case float_to_bvec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_bvec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_bvec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_vec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(5.0, 5.0) | vec2(8.0, 8.0) | vec2(11.0, 11.0) | vec2(-12.0, -12.0) | vec2(-66.0, -66.0) | vec2(-192.0, -192.0) | vec2(255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_vec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(5.0, 5.0, 5.0) | vec3(8.0, 8.0, 8.0) | vec3(11.0, 11.0, 11.0) | vec3(-12.0, -12.0, -12.0) | vec3(-66.0, -66.0, -66.0) | vec3(-192.0, -192.0, -192.0) | vec3(255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_vec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(5.0, 5.0, 5.0, 5.0) | vec4(8.0, 8.0, 8.0, 8.0) | vec4(11.0, 11.0, 11.0, 11.0) | vec4(-12.0, -12.0, -12.0, -12.0) | vec4(-66.0, -66.0, -66.0, -66.0) | vec4(-192.0, -192.0, -192.0, -192.0) | vec4(255.0, 255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_ivec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(5, 5) | ivec2(8, 8) | ivec2(11, 11) | ivec2(-12, -12) | ivec2(-66, -66) | ivec2(-192, -192) | ivec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_ivec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(5, 5, 5) | ivec3(8, 8, 8) | ivec3(11, 11, 11) | ivec3(-12, -12, -12) | ivec3(-66, -66, -66) | ivec3(-192, -192, -192) | ivec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_ivec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(5, 5, 5, 5) | ivec4(8, 8, 8, 8) | ivec4(11, 11, 11, 11) | ivec4(-12, -12, -12, -12) | ivec4(-66, -66, -66, -66) | ivec4(-192, -192, -192, -192) | ivec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_bvec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_bvec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_bvec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_vec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(2.0, 2.0) | vec2(3.0, 3.0) | vec2(8.0, 8.0) | vec2(9.0, 9.0) | vec2(12.0, 12.0) | vec2(10.0, 10.0) | vec2(45.0, 45.0) | vec2(193.0, 193.0) | vec2(255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_vec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(2.0, 2.0, 2.0) | vec3(3.0, 3.0, 3.0) | vec3(8.0, 8.0, 8.0) | vec3(9.0, 9.0, 9.0) | vec3(12.0, 12.0, 12.0) | vec3(10.0, 10.0, 10.0) | vec3(45.0, 45.0, 45.0) | vec3(193.0, 193.0, 193.0) | vec3(255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_vec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(3.0, 3.0, 3.0, 3.0) | vec4(8.0, 8.0, 8.0, 8.0) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(12.0, 12.0, 12.0, 12.0) | vec4(10.0, 10.0, 10.0, 10.0) | vec4(45.0, 45.0, 45.0, 45.0) | vec4(193.0, 193.0, 193.0, 193.0) | vec4(255.0, 255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_ivec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(2, 2) | ivec2(3, 3) | ivec2(8, 8) | ivec2(9, 9) | ivec2(12, 12) | ivec2(10, 10) | ivec2(45, 45) | ivec2(193, 193) | ivec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_ivec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(2, 2, 2) | ivec3(3, 3, 3) | ivec3(8, 8, 8) | ivec3(9, 9, 9) | ivec3(12, 12, 12) | ivec3(10, 10, 10) | ivec3(45, 45, 45) | ivec3(193, 193, 193) | ivec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_ivec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(2, 2, 2, 2) | ivec4(3, 3, 3, 3) | ivec4(8, 8, 8, 8) | ivec4(9, 9, 9, 9) | ivec4(12, 12, 12, 12) | ivec4(10, 10, 10, 10) | ivec4(45, 45, 45, 45) | ivec4(193, 193, 193, 193) | ivec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bvec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bvec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bvec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_vec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_vec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_vec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_ivec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case float_to_uvec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(2, 2) | uvec2(3, 3) | uvec2(0, 0) | uvec2(8, 8) | uvec2(20, 20) | uvec2(36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_uvec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(2, 2, 2) | uvec3(3, 3, 3) | uvec3(0, 0, 0) | uvec3(8, 8, 8) | uvec3(20, 20, 20) | uvec3(36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_uvec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(2, 2, 2, 2) | uvec4(3, 3, 3, 3) | uvec4(0, 0, 0, 0) | uvec4(8, 8, 8, 8) | uvec4(20, 20, 20, 20) | uvec4(36, 36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_uvec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(2, 2) | uvec2(5, 5) | uvec2(8, 8) | uvec2(11, 11) | uvec2(12, 12) | uvec2(66, 66) | uvec2(192, 192) | uvec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_uvec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(2, 2, 2) | uvec3(5, 5, 5) | uvec3(8, 8, 8) | uvec3(11, 11, 11) | uvec3(12, 12, 12) | uvec3(66, 66, 66) | uvec3(192, 192, 192) | uvec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_uvec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(2, 2, 2, 2) | uvec4(5, 5, 5, 5) | uvec4(8, 8, 8, 8) | uvec4(11, 11, 11, 11) | uvec4(12, 12, 12, 12) | uvec4(66, 66, 66, 66) | uvec4(192, 192, 192, 192) | uvec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uvec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(2, 2) | uvec2(3, 3) | uvec2(8, 8) | uvec2(9, 9) | uvec2(12, 12) | uvec2(10, 10) | uvec2(45, 45) | uvec2(193, 193) | uvec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uvec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(2, 2, 2) | uvec3(3, 3, 3) | uvec3(8, 8, 8) | uvec3(9, 9, 9) | uvec3(12, 12, 12) | uvec3(10, 10, 10) | uvec3(45, 45, 45) | uvec3(193, 193, 193) | uvec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uvec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(2, 2, 2, 2) | uvec4(3, 3, 3, 3) | uvec4(8, 8, 8, 8) | uvec4(9, 9, 9, 9) | uvec4(12, 12, 12, 12) | uvec4(10, 10, 10, 10) | uvec4(45, 45, 45, 45) | uvec4(193, 193, 193, 193) | uvec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uvec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output uvec3 out0 = [ uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uvec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output uvec4 out0 = [ uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + +end # scalar_to_vector +group vector_to_scalar "Vector to Scalar Conversions" + + case vec2_to_float + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_int + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_bool + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output bool out0 = [ false | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_float + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_int + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_bool + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output bool out0 = [ false | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_int + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bool + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bool out0 = [ false | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_float + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_int + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_bool + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_float + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_bool + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_float + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bool + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_float + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_int + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_bool + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_float + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_int + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_bool + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_float + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_int + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bool + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_float + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_int + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output int out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_bool + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_float + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_int + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output int out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_float + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_int + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output int out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bool + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_uint + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.5, 2.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_uint + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uint + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_uint + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_uint + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uint + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_uint + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_uint + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uint + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_uint + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output uint out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_uint + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output uint out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uint + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uint out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + +end # vector_to_scalar + +group vector_to_vector "Vector to Vector Conversions" + + case vec4_to_vec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_vec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_vec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_ivec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_ivec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_ivec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bvec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bvec4 out0 = [ bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bvec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bvec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_vec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, -2.0, -4.0, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_vec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_vec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_ivec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_ivec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_ivec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bvec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bvec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bvec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_vec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 2.0, 4.0, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_vec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 2.0, 4.0) | vec3(32.0, 64.0, 51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_vec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_ivec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_ivec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_ivec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bvec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bvec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bvec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_vec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output vec4 out0 = [ vec4(1.0, 0.0, 0.0, 1.0) | vec4(0.0, 0.0, 0.0, 1.0) | vec4(0.0, 1.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_vec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_vec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_ivec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output ivec4 out0 = [ ivec4(1, 0, 0, 1) | ivec4(0, 0, 0, 1) | ivec4(0, 1, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_ivec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_ivec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bvec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bvec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bvec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uvec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uvec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uvec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uvec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uvec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uvec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uvec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uvec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uvec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uvec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uvec4 out0 = [ uvec4(1, 0, 0, 1) | uvec4(0, 0, 0, 1) | uvec4(0, 1, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uvec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 1, 0) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uvec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_vec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_ivec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_ivec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_bvec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_bvec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_vec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_ivec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_ivec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_bvec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_bvec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_vec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 2.0, 4.0) | vec3(32.0, 64.0, 51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_vec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_ivec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_ivec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_bvec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_bvec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_vec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_ivec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_ivec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_bvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_bvec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_uvec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_uvec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_uvec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_uvec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_uvec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_uvec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_uvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 1, 0) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_uvec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_vec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_ivec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_bvec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_vec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_ivec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_bvec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_vec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_ivec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_bvec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_vec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_ivec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_bvec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_uvec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.5, 2.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_uvec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_uvec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_uvec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + +end # vector_to_vector +group scalar_to_matrix "Scalar to Matrix Conversions" + + case float_to_mat4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5) | mat4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5) | mat4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25) | mat4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125) | mat4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat4x3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0) | mat4x3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0) | mat4x3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0) | mat4x3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0) | mat4x3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat4x2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(3.5, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0) | mat4x2(-0.5, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0) | mat4x2(-8.25, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0) | mat4x2(-20.125, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0) | mat4x2(36.8125, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat3x4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0) | mat3x4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0) | mat3x4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0) | mat3x4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0) | mat3x4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 3.5) | mat3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, -0.5) | mat3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, -8.25) | mat3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, -20.125) | mat3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat3x2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(3.5, 0.0, 0.0, 3.5, 0.0, 0.0) | mat3x2(-0.5, 0.0, 0.0, -0.5, 0.0, 0.0) | mat3x2(-8.25, 0.0, 0.0, -8.25, 0.0, 0.0) | mat3x2(-20.125, 0.0, 0.0, -20.125, 0.0, 0.0) | mat3x2(36.8125, 0.0, 0.0, 36.8125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat2x4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0) | mat2x4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0) | mat2x4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0) | mat2x4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0) | mat2x4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat2x3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0) | mat2x3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0) | mat2x3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0) | mat2x3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0) | mat2x3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(3.5, 0.0, 0.0, 3.5) | mat2(-0.5, 0.0, 0.0, -0.5) | mat2(-8.25, 0.0, 0.0, -8.25) | mat2(-20.125, 0.0, 0.0, -20.125) | mat2(36.8125, 0.0, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0) | mat4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0) | mat4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0) | mat4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0) | mat4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0) | mat4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0) | mat4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat4x3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0) | mat4x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0) | mat4x3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0) | mat4x3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0) | mat4x3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0) | mat4x3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0) | mat4x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat4x2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(5.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(11.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-12.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-66.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-192.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat3x4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0) | mat3x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat3x4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0) | mat3x4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0) | mat3x4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0) | mat3x4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0) | mat3x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 5.0) | mat3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0) | mat3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 11.0) | mat3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, -12.0) | mat3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, -66.0) | mat3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, -192.0) | mat3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat3x2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(5.0, 0.0, 0.0, 5.0, 0.0, 0.0) | mat3x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat3x2(11.0, 0.0, 0.0, 11.0, 0.0, 0.0) | mat3x2(-12.0, 0.0, 0.0, -12.0, 0.0, 0.0) | mat3x2(-66.0, 0.0, 0.0, -66.0, 0.0, 0.0) | mat3x2(-192.0, 0.0, 0.0, -192.0, 0.0, 0.0) | mat3x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat2x4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0) | mat2x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat2x4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0) | mat2x4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0) | mat2x4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0) | mat2x4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0) | mat2x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat2x3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0) | mat2x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat2x3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0) | mat2x3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0) | mat2x3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0) | mat2x3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0) | mat2x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(5.0, 0.0, 0.0, 5.0) | mat2(8.0, 0.0, 0.0, 8.0) | mat2(11.0, 0.0, 0.0, 11.0) | mat2(-12.0, 0.0, 0.0, -12.0) | mat2(-66.0, 0.0, 0.0, -66.0) | mat2(-192.0, 0.0, 0.0, -192.0) | mat2(255.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0) | mat4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0) | mat4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0) | mat4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0) | mat4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0) | mat4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0) | mat4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0) | mat4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat4x3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0) | mat4x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0) | mat4x3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0) | mat4x3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0) | mat4x3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0) | mat4x3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0) | mat4x3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0) | mat4x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat4x2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(3.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(9.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(12.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(10.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(45.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(193.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat3x4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0) | mat3x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat3x4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0) | mat3x4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0) | mat3x4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0) | mat3x4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0) | mat3x4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0) | mat3x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0) | mat3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0) | mat3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 9.0) | mat3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 12.0) | mat3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 10.0) | mat3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 45.0) | mat3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 193.0) | mat3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat3x2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(3.0, 0.0, 0.0, 3.0, 0.0, 0.0) | mat3x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat3x2(9.0, 0.0, 0.0, 9.0, 0.0, 0.0) | mat3x2(12.0, 0.0, 0.0, 12.0, 0.0, 0.0) | mat3x2(10.0, 0.0, 0.0, 10.0, 0.0, 0.0) | mat3x2(45.0, 0.0, 0.0, 45.0, 0.0, 0.0) | mat3x2(193.0, 0.0, 0.0, 193.0, 0.0, 0.0) | mat3x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat2x4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0) | mat2x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat2x4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0) | mat2x4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0) | mat2x4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0) | mat2x4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0) | mat2x4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0) | mat2x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat2x3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0) | mat2x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat2x3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0) | mat2x3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0) | mat2x3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0) | mat2x3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0) | mat2x3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0) | mat2x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(3.0, 0.0, 0.0, 3.0) | mat2(8.0, 0.0, 0.0, 8.0) | mat2(9.0, 0.0, 0.0, 9.0) | mat2(12.0, 0.0, 0.0, 12.0) | mat2(10.0, 0.0, 0.0, 10.0) | mat2(45.0, 0.0, 0.0, 45.0) | mat2(193.0, 0.0, 0.0, 193.0) | mat2(255.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat4x3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat4x2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat3x4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat3x2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat2x4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat2x3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + +end # scalar_to_matrix +group matrix_to_matrix "Matrix to Matrix Conversions" + + case mat4_to_mat4 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat4x3 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat4x2 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat3x4 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat3 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat3x2 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat2x4 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat2x3 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat2 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat4 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0, 9.975, -6.542, 0.015625, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat4x3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat4x2 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat3x4 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat3x2 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat2x4 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat2x3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat2 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat4 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0, 9.975, -6.542, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat4x3 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0, 9.975, -6.542, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat4x2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat3x4 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat3 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat3x2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat2x4 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat2x3 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat4x3 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat4x2 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat3x4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat3 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat3x2 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat2x4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat2x3 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat2 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat4 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat4x3 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat4x2 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat3x4 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat3 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat3x2 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat2x4 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat2x3 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat2 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat4 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat4x3 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat4x2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat3x4 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat3 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat3x2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat2x4 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat2x3 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat4x3 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat4x2 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat3x4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat3 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat3x2 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat2x4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat2x3 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat2 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat4 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat4x3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat4x2 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat3x4 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat3x2 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat2x4 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat2x3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat2 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat4 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat4x3 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat4x2 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, -24.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.125, 0.03125, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0) | mat4x2(-18.725, -0.0125, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat3x4 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat3 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 1.0) | mat3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat3x2 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0) | mat3x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0) | mat3x2(8.0, -24.0, 16.0, -16.0, 0.0, 0.0) | mat3x2(0.125, 0.03125, 0.0625, 0.015625, 0.0, 0.0) | mat3x2(-18.725, -0.0125, -0.5, 19.975, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat2x4 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0) | mat2x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0) | mat2x4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0) | mat2x4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0) | mat2x4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat2x3 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0) | mat2x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0) | mat2x3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0) | mat2x3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0) | mat2x3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat2 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + +end # matrix_to_matrix +group vector_combine "Vector Combine Constructors" + + case vec2_vec2_to_vec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(-0.5, -2.25, -32.0, 64.0) | vec4(-32.0, 64.0, 1.0, 1.25) | vec4(1.0, 1.25, 0.0, 0.5) | vec4(0.0, 0.5, -0.5, -2.25) | vec4(-0.75, -0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_vec2_to_ivec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + output ivec4 out0 = [ ivec4(0, -2, -32, 64) | ivec4(-32, 64, 1, 1) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_vec2_to_bvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_vec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 1.0, 0.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(0.0, 1.0, 0.0, 1.0) | vec4(0.0, 0.0, 1.0, 1.0) | vec4(1.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_ivec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output ivec4 out0 = [ ivec4(0, 0, 1, 0) | ivec4(1, 0, 0, 0) | ivec4(0, 1, 0, 1) | ivec4(0, 0, 1, 1) | ivec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_bvec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, false, false, false) | bvec4(false, true, false, true) | bvec4(false, false, true, true) | bvec4(true, true, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_vec4 + version 310 es + values + { + input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ]; + input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ]; + input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ]; + input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ]; + output vec4 out0 = [ vec4(1.0, 0.0, 3.5, 3.5) | vec4(0.0, 36.8125, 36.8125, 36.8125) | vec4(-0.5, -8.25, -8.25, 1.0) | vec4(-8.25, 2.0, 1.0, -8.25) | vec4(3.5, 3.5, 2.0, 2.0) | vec4(-20.125, 1.0, 0.0, 0.0) | vec4(36.8125, -20.125, -20.125, -0.5) | vec4(2.0, -0.5, -0.5, -20.125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_ivec4 + version 310 es + values + { + input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ]; + input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ]; + input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ]; + input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ]; + output ivec4 out0 = [ ivec4(1, 0, 3, 3) | ivec4(0, 36, 36, 36) | ivec4(0, -8, -8, 1) | ivec4(-8, 2, 1, -8) | ivec4(3, 3, 2, 2) | ivec4(-20, 1, 0, 0) | ivec4(36, -20, -20, 0) | ivec4(2, 0, 0, -20) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_bvec4 + version 310 es + values + { + input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ]; + input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ]; + input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ]; + input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_vec4 + version 310 es + values + { + input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ]; + input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ]; + input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ]; + input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ]; + output vec4 out0 = [ vec4(-12.0, 2.0, 11.0, -192.0) | vec4(-66.0, 5.0, 255.0, -66.0) | vec4(2.0, -66.0, 5.0, 8.0) | vec4(5.0, 11.0, 8.0, -12.0) | vec4(8.0, -192.0, 2.0, 1.0) | vec4(-192.0, 8.0, -192.0, 2.0) | vec4(255.0, -12.0, -12.0, 0.0) | vec4(1.0, 1.0, -66.0, 255.0) | vec4(0.0, 255.0, 1.0, 5.0) | vec4(11.0, 0.0, 0.0, 11.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_ivec4 + version 310 es + values + { + input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ]; + input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ]; + input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ]; + input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ]; + output ivec4 out0 = [ ivec4(-12, 2, 11, -192) | ivec4(-66, 5, 255, -66) | ivec4(2, -66, 5, 8) | ivec4(5, 11, 8, -12) | ivec4(8, -192, 2, 1) | ivec4(-192, 8, -192, 2) | ivec4(255, -12, -12, 0) | ivec4(1, 1, -66, 255) | ivec4(0, 255, 1, 5) | ivec4(11, 0, 0, 11) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_bvec4 + version 310 es + values + { + input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ]; + input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ]; + input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ]; + input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_vec4 + version 310 es + values + { + input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ]; + input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ]; + input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ]; + input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ]; + output vec4 out0 = [ vec4(193.0, 12.0, 9.0, 3.0) | vec4(3.0, 45.0, 8.0, 9.0) | vec4(255.0, 193.0, 12.0, 12.0) | vec4(8.0, 2.0, 2.0, 2.0) | vec4(10.0, 8.0, 255.0, 255.0) | vec4(9.0, 255.0, 45.0, 193.0) | vec4(2.0, 0.0, 3.0, 0.0) | vec4(12.0, 3.0, 0.0, 10.0) | vec4(0.0, 9.0, 193.0, 45.0) | vec4(45.0, 10.0, 10.0, 8.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_ivec4 + version 310 es + values + { + input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ]; + input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ]; + input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ]; + input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ]; + output ivec4 out0 = [ ivec4(193, 12, 9, 3) | ivec4(3, 45, 8, 9) | ivec4(255, 193, 12, 12) | ivec4(8, 2, 2, 2) | ivec4(10, 8, 255, 255) | ivec4(9, 255, 45, 193) | ivec4(2, 0, 3, 0) | ivec4(12, 3, 0, 10) | ivec4(0, 9, 193, 45) | ivec4(45, 10, 10, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_bvec4 + version 310 es + values + { + input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ]; + input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ]; + input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ]; + input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, true, false) | bvec4(true, true, false, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_vec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + output vec4 out0 = [ vec4(1.0, 1.0, 0.0, 0.0) | vec4(0.0, 0.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + output ivec4 out0 = [ ivec4(1, 1, 0, 0) | ivec4(0, 0, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + output bvec4 out0 = [ bvec4(true, true, false, false) | bvec4(false, false, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_vec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | false | true | false | false | true | true ]; + input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ]; + input bool in3 = [ true | true | false | false | true | true | false | true | false | false ]; + output vec4 out0 = [ vec4(1.0, 36.8125, -66.0, 1.0) | vec4(1.0, 0.0, 2.0, 1.0) | vec4(0.0, -8.25, 255.0, 0.0) | vec4(0.0, 1.0, 11.0, 0.0) | vec4(0.0, -0.5, 1.0, 1.0) | vec4(1.0, 0.0, 8.0, 1.0) | vec4(0.0, 2.0, -192.0, 0.0) | vec4(0.0, -20.125, -12.0, 1.0) | vec4(1.0, 3.5, 0.0, 0.0) | vec4(1.0, 1.0, 5.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | false | true | false | false | true | true ]; + input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ]; + input bool in3 = [ true | true | false | false | true | true | false | true | false | false ]; + output ivec4 out0 = [ ivec4(1, 36, -66, 1) | ivec4(1, 0, 2, 1) | ivec4(0, -8, 255, 0) | ivec4(0, 1, 11, 0) | ivec4(0, 0, 1, 1) | ivec4(1, 0, 8, 1) | ivec4(0, 2, -192, 0) | ivec4(0, -20, -12, 1) | ivec4(1, 3, 0, 0) | ivec4(1, 1, 5, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | false | true | false | false | true | true ]; + input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ]; + input bool in3 = [ true | true | false | false | true | true | false | true | false | false ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(false, true, true, false) | bvec4(false, true, true, false) | bvec4(false, true, true, true) | bvec4(true, false, true, true) | bvec4(false, true, true, false) | bvec4(false, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_vec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(-0.75, -0.0322580645161, 0.0, -2.0) | vec4(-0.5, -2.25, 0.0, 0.0) | vec4(-32.0, 64.0, -32.0, 64.0) | vec4(1.0, 1.25, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_ivec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, 64) | ivec4(1, 1, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_bvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output bvec4 out0 = [ bvec4(false, true, false, false) | bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_vec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ]; + output vec4 out0 = [ vec4(-0.75, -0.0322580645161, 0.0, 1.0) | vec4(-32.0, 64.0, 0.0, 0.0) | vec4(1.0, 1.25, 0.0, 0.0) | vec4(0.0, 0.5, 1.0, 1.0) | vec4(-0.5, -2.25, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_ivec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 1) | ivec4(-32, 64, 0, 0) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 1, 1) | ivec4(0, -2, 1, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_bvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ]; + output bvec4 out0 = [ bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(true, true, false, false) | bvec4(false, true, true, true) | bvec4(true, true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_vec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ]; + output vec4 out0 = [ vec4(1.0, 0.0, 0.0, -0.5) | vec4(0.0, 0.0, 0.0, 3.5) | vec4(0.0, 1.0, 0.0, 2.0) | vec4(1.0, 1.0, 1.0, 0.0) | vec4(0.0, 0.0, 0.0, -8.25) | vec4(0.0, 0.0, 0.0, 1.0) | vec4(1.0, 0.0, 0.0, 36.8125) | vec4(0.0, 1.0, 0.0, -20.125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_ivec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ]; + output ivec4 out0 = [ ivec4(1, 0, 0, 0) | ivec4(0, 0, 0, 3) | ivec4(0, 1, 0, 2) | ivec4(1, 1, 1, 0) | ivec4(0, 0, 0, -8) | ivec4(0, 0, 0, 1) | ivec4(1, 0, 0, 36) | ivec4(0, 1, 0, -20) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_bvec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, true) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_vec4 + version 310 es + values + { + input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ]; + output vec4 out0 = [ vec4(-32.0, 64.0, -51.0, -0.5) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.0) | vec4(1.0, 1.25, 1.125, 3.5) | vec4(-0.5, -2.25, -4.875, -20.125) | vec4(0.0, 0.5, 0.75, 2.0) | vec4(-0.5, -2.25, -4.875, -8.25) | vec4(0.0, 0.5, 0.75, 1.0) | vec4(1.0, 1.25, 1.125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_ivec4 + version 310 es + values + { + input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ]; + output ivec4 out0 = [ ivec4(-32, 64, -51, 0) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 3) | ivec4(0, -2, -4, -20) | ivec4(0, 0, 0, 2) | ivec4(0, -2, -4, -8) | ivec4(0, 0, 0, 1) | ivec4(1, 1, 1, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_bvec4 + version 310 es + values + { + input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_vec4 + version 310 es + values + { + input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ]; + input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ]; + output vec4 out0 = [ vec4(-12.0, 0.0, -2.0, 1.0) | vec4(11.0, -32.0, 64.0, 11.0) | vec4(8.0, 0.0, 0.0, 2.0) | vec4(255.0, 0.0, -2.0, -66.0) | vec4(0.0, 1.0, 1.0, -192.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(-66.0, -32.0, 64.0, -12.0) | vec4(2.0, 1.0, 1.0, 255.0) | vec4(-192.0, 0.0, 0.0, 5.0) | vec4(5.0, 0.0, 0.0, 8.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_ivec4 + version 310 es + values + { + input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ]; + input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ]; + output ivec4 out0 = [ ivec4(-12, 0, -2, 1) | ivec4(11, -32, 64, 11) | ivec4(8, 0, 0, 2) | ivec4(255, 0, -2, -66) | ivec4(0, 1, 1, -192) | ivec4(1, 0, 0, 0) | ivec4(-66, -32, 64, -12) | ivec4(2, 1, 1, 255) | ivec4(-192, 0, 0, 5) | ivec4(5, 0, 0, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_bvec4 + version 310 es + values + { + input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ]; + input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_vec4 + version 310 es + values + { + input bool in0 = [ true | false | false | false | true | true | true | false ]; + input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, -32.0, 64.0) | vec4(0.0, 2.0, 0.0, 0.0) | vec4(0.0, 3.5, 0.0, 0.0) | vec4(1.0, -20.125, 0.0, -2.0) | vec4(1.0, -0.5, 0.0, -2.0) | vec4(1.0, 36.8125, 0.0, 0.0) | vec4(0.0, -8.25, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | false | false | false | true | true | true | false ]; + input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, -32, 64) | ivec4(0, 2, 0, 0) | ivec4(0, 3, 0, 0) | ivec4(1, -20, 0, -2) | ivec4(1, 0, 0, -2) | ivec4(1, 36, 0, 0) | ivec4(0, -8, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | false | false | false | true | true | true | false ]; + input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, true, true) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, true, false, true) | bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(false, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_vec4 + version 310 es + values + { + input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ]; + output vec4 out0 = [ vec4(1.0, 0.0, 0.0, 0.0) | vec4(-20.125, 0.0, 0.0, 0.0) | vec4(-8.25, 1.0, 1.0, 1.0) | vec4(-0.5, 0.0, 2.0, 4.0) | vec4(0.0, 0.0, 0.0, 0.0) | vec4(2.0, 1.0, 1.0, 1.0) | vec4(3.5, 0.0, 2.0, 4.0) | vec4(36.8125, 32.0, 64.0, 51.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_ivec4 + version 310 es + values + { + input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ]; + output ivec4 out0 = [ ivec4(1, 0, 0, 0) | ivec4(-20, 0, 0, 0) | ivec4(-8, 1, 1, 1) | ivec4(0, 0, 2, 4) | ivec4(0, 0, 0, 0) | ivec4(2, 1, 1, 1) | ivec4(3, 0, 2, 4) | ivec4(36, 32, 64, 51) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_bvec4 + version 310 es + values + { + input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ]; + output bvec4 out0 = [ bvec4(true, false, false, false) | bvec4(true, false, false, false) | bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_vec4 + version 310 es + values + { + input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + input bool in2 = [ false | false | true | true | true | true | true | false | false | false ]; + output vec4 out0 = [ vec4(1.0, 0.0, 2.0, 0.0) | vec4(-192.0, 1.0, 1.0, 0.0) | vec4(-66.0, 0.0, 0.0, 1.0) | vec4(-12.0, 0.0, 2.0, 1.0) | vec4(0.0, 32.0, 64.0, 1.0) | vec4(2.0, 0.0, 0.0, 1.0) | vec4(11.0, 32.0, 64.0, 1.0) | vec4(8.0, 0.0, 0.0, 0.0) | vec4(255.0, 1.0, 1.0, 0.0) | vec4(5.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_ivec4 + version 310 es + values + { + input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + input bool in2 = [ false | false | true | true | true | true | true | false | false | false ]; + output ivec4 out0 = [ ivec4(1, 0, 2, 0) | ivec4(-192, 1, 1, 0) | ivec4(-66, 0, 0, 1) | ivec4(-12, 0, 2, 1) | ivec4(0, 32, 64, 1) | ivec4(2, 0, 0, 1) | ivec4(11, 32, 64, 1) | ivec4(8, 0, 0, 0) | ivec4(255, 1, 1, 0) | ivec4(5, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_bvec4 + version 310 es + values + { + input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + input bool in2 = [ false | false | true | true | true | true | true | false | false | false ]; + output bvec4 out0 = [ bvec4(true, false, true, false) | bvec4(true, true, true, false) | bvec4(true, false, false, true) | bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(true, false, false, false) | bvec4(true, true, true, false) | bvec4(true, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_vec2_to_uvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.0, 0.5) | vec2(0.5, 2.25) | vec2(1.0, 1.25) ]; + input vec2 in1 = [ vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(32.0, 64.0) | vec2(0.0, 0.5) | vec2(0.75, 0.0322580645161) ]; + output uvec4 out0 = [ uvec4(32, 64, 0, 2) | uvec4(0, 0, 1, 1) | uvec4(0, 0, 32, 64) | uvec4(0, 2, 0, 0) | uvec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_uvec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, false) ]; + input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) ]; + output uvec4 out0 = [ uvec4(1, 0, 1, 1) | uvec4(0, 1, 0, 0) | uvec4(1, 1, 1, 0) | uvec4(0, 0, 0, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_uvec4 + version 310 es + values + { + input float in0 = [ 2.0 | 36.8125 | 0.0 | 20.125 | 1.0 | 0.5 | 8.25 | 3.5 ]; + input float in1 = [ 1.0 | 8.25 | 2.0 | 20.125 | 36.8125 | 0.0 | 0.5 | 3.5 ]; + input float in2 = [ 0.0 | 8.25 | 2.0 | 1.0 | 36.8125 | 20.125 | 0.5 | 3.5 ]; + input float in3 = [ 1.0 | 8.25 | 0.0 | 2.0 | 20.125 | 3.5 | 0.5 | 36.8125 ]; + output uvec4 out0 = [ uvec4(2, 1, 0, 1) | uvec4(36, 8, 8, 8) | uvec4(0, 2, 2, 0) | uvec4(20, 20, 1, 2) | uvec4(1, 36, 36, 20) | uvec4(0, 0, 20, 3) | uvec4(8, 0, 0, 0) | uvec4(3, 3, 3, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_uvec4 + version 310 es + values + { + input int in0 = [ 192 | 2 | 12 | 11 | 0 | 8 | 5 | 66 | 1 | 255 ]; + input int in1 = [ 66 | 12 | 5 | 1 | 0 | 192 | 8 | 255 | 11 | 2 ]; + input int in2 = [ 192 | 5 | 1 | 66 | 255 | 11 | 8 | 12 | 2 | 0 ]; + input int in3 = [ 255 | 5 | 11 | 12 | 2 | 1 | 66 | 0 | 8 | 192 ]; + output uvec4 out0 = [ uvec4(192, 66, 192, 255) | uvec4(2, 12, 5, 5) | uvec4(12, 5, 1, 11) | uvec4(11, 1, 66, 12) | uvec4(0, 0, 255, 2) | uvec4(8, 192, 11, 1) | uvec4(5, 8, 8, 66) | uvec4(66, 255, 12, 0) | uvec4(1, 11, 2, 8) | uvec4(255, 2, 0, 192) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_uvec4 + version 310 es + values + { + input uint in0 = [ 255 | 8 | 3 | 193 | 45 | 2 | 0 | 12 | 9 | 10 ]; + input uint in1 = [ 255 | 45 | 0 | 12 | 2 | 10 | 8 | 9 | 193 | 3 ]; + input uint in2 = [ 3 | 0 | 2 | 9 | 12 | 10 | 255 | 45 | 193 | 8 ]; + input uint in3 = [ 2 | 255 | 10 | 193 | 8 | 12 | 3 | 9 | 0 | 45 ]; + output uvec4 out0 = [ uvec4(255, 255, 3, 2) | uvec4(8, 45, 0, 255) | uvec4(3, 0, 2, 10) | uvec4(193, 12, 9, 193) | uvec4(45, 2, 12, 8) | uvec4(2, 10, 10, 12) | uvec4(0, 8, 255, 3) | uvec4(12, 9, 45, 9) | uvec4(9, 193, 193, 0) | uvec4(10, 3, 8, 45) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_uvec4 + version 310 es + values + { + input bool in0 = [ false | true ]; + input bool in1 = [ false | true ]; + input bool in2 = [ true | false ]; + input bool in3 = [ true | false ]; + output uvec4 out0 = [ uvec4(0, 0, 1, 1) | uvec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_uvec4 + version 310 es + values + { + input bool in0 = [ true | false | false | true | false | true | true | true | false | false ]; + input float in1 = [ 20.125 | 0.0 | 1.0 | 3.5 | 1.0 | 0.0 | 0.5 | 8.25 | 2.0 | 36.8125 ]; + input int in2 = [ 66 | 192 | 1 | 2 | 5 | 11 | 8 | 12 | 255 | 0 ]; + input bool in3 = [ true | true | true | true | false | true | false | false | false | false ]; + output uvec4 out0 = [ uvec4(1, 20, 66, 1) | uvec4(0, 0, 192, 1) | uvec4(0, 1, 1, 1) | uvec4(1, 3, 2, 1) | uvec4(0, 1, 5, 0) | uvec4(1, 0, 11, 1) | uvec4(1, 0, 8, 0) | uvec4(1, 8, 12, 0) | uvec4(0, 2, 255, 0) | uvec4(0, 36, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_uvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.0, 0.5) ]; + input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) | ivec2(0, 0) ]; + output uvec4 out0 = [ uvec4(0, 2, 1, 1) | uvec4(1, 1, 0, 2) | uvec4(32, 64, 32, 64) | uvec4(0, 0, 0, 0) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_uvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.5, 2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(true, true) ]; + output uvec4 out0 = [ uvec4(32, 64, 0, 0) | uvec4(0, 0, 0, 0) | uvec4(0, 2, 1, 0) | uvec4(0, 0, 0, 1) | uvec4(1, 1, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_uvec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, false, false) ]; + input float in1 = [ 2.0 | 0.0 | 36.8125 | 0.5 | 1.0 | 8.25 | 3.5 | 20.125 ]; + output uvec4 out0 = [ uvec4(1, 0, 0, 2) | uvec4(1, 1, 1, 0) | uvec4(0, 1, 0, 36) | uvec4(0, 0, 0, 0) | uvec4(0, 0, 0, 1) | uvec4(0, 1, 0, 8) | uvec4(1, 0, 0, 3) | uvec4(0, 0, 0, 20) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_uvec4 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 2.25, 4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(1.0, 1.25, 1.125) | vec3(0.75, 0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) ]; + input float in1 = [ 8.25 | 1.0 | 0.0 | 36.8125 | 2.0 | 0.5 | 20.125 | 3.5 ]; + output uvec4 out0 = [ uvec4(0, 2, 4, 8) | uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) | uvec4(0, 2, 4, 36) | uvec4(32, 64, 51, 2) | uvec4(1, 1, 1, 0) | uvec4(0, 0, 0, 20) | uvec4(0, 0, 0, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_uvec4 + version 310 es + values + { + input int in0 = [ 8 | 1 | 11 | 192 | 255 | 12 | 66 | 2 | 0 | 5 ]; + input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(32, 64) | ivec2(0, 2) | ivec2(0, 2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(32, 64) | ivec2(0, 0) ]; + input int in2 = [ 2 | 192 | 12 | 0 | 8 | 1 | 66 | 255 | 11 | 5 ]; + output uvec4 out0 = [ uvec4(8, 1, 1, 2) | uvec4(1, 0, 0, 192) | uvec4(11, 1, 1, 12) | uvec4(192, 32, 64, 0) | uvec4(255, 0, 2, 8) | uvec4(12, 0, 2, 1) | uvec4(66, 0, 0, 66) | uvec4(2, 0, 0, 255) | uvec4(0, 32, 64, 11) | uvec4(5, 0, 0, 5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_uvec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | false | true ]; + input float in1 = [ 8.25 | 0.5 | 2.0 | 20.125 | 0.0 | 36.8125 | 3.5 | 1.0 ]; + input ivec2 in2 = [ ivec2(32, 64) | ivec2(1, 1) | ivec2(0, 2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 2) | ivec2(1, 1) | ivec2(0, 0) ]; + output uvec4 out0 = [ uvec4(1, 8, 32, 64) | uvec4(1, 0, 1, 1) | uvec4(0, 2, 0, 2) | uvec4(0, 20, 0, 0) | uvec4(1, 0, 0, 0) | uvec4(0, 36, 0, 2) | uvec4(0, 3, 1, 1) | uvec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_uvec4 + version 310 es + values + { + input float in0 = [ 8.25 | 20.125 | 1.0 | 0.5 | 3.5 | 2.0 | 36.8125 | 0.0 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 2, 4) | uvec3(1, 1, 1) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + output uvec4 out0 = [ uvec4(8, 0, 0, 0) | uvec4(20, 0, 0, 0) | uvec4(1, 0, 2, 4) | uvec4(0, 32, 64, 51) | uvec4(3, 0, 2, 4) | uvec4(2, 1, 1, 1) | uvec4(36, 1, 1, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_uvec4 + version 310 es + values + { + input int in0 = [ 2 | 1 | 11 | 66 | 192 | 12 | 8 | 255 | 0 | 5 ]; + input uvec2 in1 = [ uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(1, 1) | uvec2(32, 64) | uvec2(0, 0) ]; + input bool in2 = [ true | false | false | false | false | true | true | true | false | true ]; + output uvec4 out0 = [ uvec4(2, 1, 1, 1) | uvec4(1, 0, 0, 0) | uvec4(11, 0, 0, 0) | uvec4(66, 0, 2, 0) | uvec4(192, 0, 0, 0) | uvec4(12, 0, 2, 1) | uvec4(8, 32, 64, 1) | uvec4(255, 1, 1, 1) | uvec4(0, 32, 64, 0) | uvec4(5, 0, 0, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_float_float_to_vec3 + version 310 es + values + { + input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ]; + input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ]; + input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ]; + output vec3 out0 = [ vec3(-0.5, 2.0, 1.0) | vec3(1.0, -20.125, 3.5) | vec3(3.5, 3.5, 2.0) | vec3(-8.25, 36.8125, -8.25) | vec3(36.8125, -8.25, -20.125) | vec3(0.0, 1.0, -0.5) | vec3(2.0, -0.5, 36.8125) | vec3(-20.125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_float_float_to_ivec3 + version 310 es + values + { + input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ]; + input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ]; + input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ]; + output ivec3 out0 = [ ivec3(0, 2, 1) | ivec3(1, -20, 3) | ivec3(3, 3, 2) | ivec3(-8, 36, -8) | ivec3(36, -8, -20) | ivec3(0, 1, 0) | ivec3(2, 0, 36) | ivec3(-20, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_float_float_to_bvec3 + version 310 es + values + { + input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ]; + input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ]; + input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_vec3 + version 310 es + values + { + input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ]; + input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ]; + input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ]; + output vec3 out0 = [ vec3(-192.0, 5.0, -192.0) | vec3(5.0, 1.0, 1.0) | vec3(-12.0, 8.0, 2.0) | vec3(0.0, 0.0, 5.0) | vec3(11.0, 2.0, -12.0) | vec3(8.0, -192.0, 8.0) | vec3(1.0, -12.0, 11.0) | vec3(-66.0, 255.0, 0.0) | vec3(255.0, -66.0, 255.0) | vec3(2.0, 11.0, -66.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_ivec3 + version 310 es + values + { + input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ]; + input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ]; + input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ]; + output ivec3 out0 = [ ivec3(-192, 5, -192) | ivec3(5, 1, 1) | ivec3(-12, 8, 2) | ivec3(0, 0, 5) | ivec3(11, 2, -12) | ivec3(8, -192, 8) | ivec3(1, -12, 11) | ivec3(-66, 255, 0) | ivec3(255, -66, 255) | ivec3(2, 11, -66) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_bvec3 + version 310 es + values + { + input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ]; + input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ]; + input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_vec3 + version 310 es + values + { + input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ]; + input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ]; + input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ]; + output vec3 out0 = [ vec3(8.0, 193.0, 12.0) | vec3(45.0, 2.0, 2.0) | vec3(2.0, 9.0, 193.0) | vec3(3.0, 8.0, 255.0) | vec3(255.0, 0.0, 8.0) | vec3(193.0, 255.0, 10.0) | vec3(12.0, 45.0, 45.0) | vec3(0.0, 3.0, 0.0) | vec3(9.0, 10.0, 3.0) | vec3(10.0, 12.0, 9.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_ivec3 + version 310 es + values + { + input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ]; + input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ]; + input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ]; + output ivec3 out0 = [ ivec3(8, 193, 12) | ivec3(45, 2, 2) | ivec3(2, 9, 193) | ivec3(3, 8, 255) | ivec3(255, 0, 8) | ivec3(193, 255, 10) | ivec3(12, 45, 45) | ivec3(0, 3, 0) | ivec3(9, 10, 3) | ivec3(10, 12, 9) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_bvec3 + version 310 es + values + { + input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ]; + input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ]; + input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_vec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_vec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | true | false | false | true ]; + input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ]; + input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ]; + output vec3 out0 = [ vec3(1.0, 0.0, 8.0) | vec3(1.0, 36.8125, -192.0) | vec3(0.0, 0.0, -66.0) | vec3(0.0, -8.25, 2.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 3.5, -12.0) | vec3(1.0, 1.0, 11.0) | vec3(0.0, -0.5, 255.0) | vec3(0.0, -20.125, 5.0) | vec3(1.0, 2.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | true | false | false | true ]; + input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ]; + input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ]; + output ivec3 out0 = [ ivec3(1, 0, 8) | ivec3(1, 36, -192) | ivec3(0, 0, -66) | ivec3(0, -8, 2) | ivec3(1, 1, 1) | ivec3(0, 3, -12) | ivec3(1, 1, 11) | ivec3(0, 0, 255) | ivec3(0, -20, 5) | ivec3(1, 2, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | true | false | false | true ]; + input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ]; + input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(false, true, true) | bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_vec3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ]; + input bool in1 = [ false | true | true | true | false ]; + output vec3 out0 = [ vec3(1.0, 1.25, 0.0) | vec3(-0.75, -0.0322580645161, 1.0) | vec3(-32.0, 64.0, 1.0) | vec3(-0.5, -2.25, 1.0) | vec3(0.0, 0.5, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_ivec3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ]; + input bool in1 = [ false | true | true | true | false ]; + output ivec3 out0 = [ ivec3(1, 1, 0) | ivec3(0, 0, 1) | ivec3(-32, 64, 1) | ivec3(0, -2, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_bvec3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ]; + input bool in1 = [ false | true | true | true | false ]; + output bvec3 out0 = [ bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_vec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ]; + output vec3 out0 = [ vec3(1.0, 0.0, -20.125) | vec3(0.0, 1.0, 2.0) | vec3(0.0, 1.0, 36.8125) | vec3(1.0, 0.0, 1.0) | vec3(0.0, 0.0, 3.5) | vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, -8.25) | vec3(0.0, 0.0, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_ivec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ]; + output ivec3 out0 = [ ivec3(1, 0, -20) | ivec3(0, 1, 2) | ivec3(0, 1, 36) | ivec3(1, 0, 1) | ivec3(0, 0, 3) | ivec3(0, 0, 0) | ivec3(1, 1, -8) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_bvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, true) | bvec3(false, true, true) | bvec3(true, false, true) | bvec3(false, false, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_vec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ]; + output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, -66.0) | vec3(0.0, 0.0, 255.0) | vec3(1.0, 0.0, 8.0) | vec3(0.0, 0.0, -192.0) | vec3(0.0, 1.0, 2.0) | vec3(1.0, 0.0, 5.0) | vec3(0.0, 1.0, 11.0) | vec3(0.0, 0.0, -12.0) | vec3(1.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_ivec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ]; + output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, -66) | ivec3(0, 0, 255) | ivec3(1, 0, 8) | ivec3(0, 0, -192) | ivec3(0, 1, 2) | ivec3(1, 0, 5) | ivec3(0, 1, 11) | ivec3(0, 0, -12) | ivec3(1, 1, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_bvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, false, true) | bvec3(false, false, true) | bvec3(false, true, true) | bvec3(true, false, true) | bvec3(false, true, true) | bvec3(false, false, true) | bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_vec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ]; + output vec3 out0 = [ vec3(1.0, 0.0, -2.0) | vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 1.0) | vec3(1.0, -32.0, 64.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ]; + output ivec3 out0 = [ ivec3(1, 0, -2) | ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 1) | ivec3(1, -32, 64) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_vec3 + version 310 es + values + { + input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ]; + output vec3 out0 = [ vec3(-20.125, 0.0, 0.0) | vec3(36.8125, 0.0, 2.0) | vec3(-8.25, 32.0, 64.0) | vec3(2.0, 0.0, 0.0) | vec3(-0.5, 0.0, 2.0) | vec3(0.0, 0.0, 0.0) | vec3(3.5, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_ivec3 + version 310 es + values + { + input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ]; + output ivec3 out0 = [ ivec3(-20, 0, 0) | ivec3(36, 0, 2) | ivec3(-8, 32, 64) | ivec3(2, 0, 0) | ivec3(0, 0, 2) | ivec3(0, 0, 0) | ivec3(3, 1, 1) | ivec3(1, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_bvec3 + version 310 es + values + { + input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(true, false, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_to_uvec3 + version 310 es + values + { + input float in0 = [ 8.25 | 20.125 | 2.0 | 3.5 | 0.5 | 36.8125 | 1.0 | 0.0 ]; + input float in1 = [ 1.0 | 0.0 | 3.5 | 36.8125 | 8.25 | 2.0 | 0.5 | 20.125 ]; + input float in2 = [ 20.125 | 0.5 | 8.25 | 36.8125 | 1.0 | 0.0 | 3.5 | 2.0 ]; + output uvec3 out0 = [ uvec3(8, 1, 20) | uvec3(20, 0, 0) | uvec3(2, 3, 8) | uvec3(3, 36, 36) | uvec3(0, 8, 1) | uvec3(36, 2, 0) | uvec3(1, 0, 3) | uvec3(0, 20, 2) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_uvec3 + version 310 es + values + { + input int in0 = [ 1 | 255 | 192 | 2 | 5 | 12 | 0 | 11 | 8 | 66 ]; + input int in1 = [ 192 | 66 | 5 | 8 | 11 | 1 | 0 | 255 | 12 | 2 ]; + input int in2 = [ 192 | 5 | 1 | 11 | 66 | 8 | 12 | 0 | 2 | 255 ]; + output uvec3 out0 = [ uvec3(1, 192, 192) | uvec3(255, 66, 5) | uvec3(192, 5, 1) | uvec3(2, 8, 11) | uvec3(5, 11, 66) | uvec3(12, 1, 8) | uvec3(0, 0, 12) | uvec3(11, 255, 0) | uvec3(8, 12, 2) | uvec3(66, 2, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_uvec3 + version 310 es + values + { + input uint in0 = [ 193 | 9 | 45 | 255 | 2 | 0 | 10 | 8 | 12 | 3 ]; + input uint in1 = [ 3 | 45 | 2 | 9 | 10 | 0 | 8 | 12 | 255 | 193 ]; + input uint in2 = [ 2 | 3 | 9 | 10 | 255 | 8 | 12 | 0 | 193 | 45 ]; + output uvec3 out0 = [ uvec3(193, 3, 2) | uvec3(9, 45, 3) | uvec3(45, 2, 9) | uvec3(255, 9, 10) | uvec3(2, 10, 255) | uvec3(0, 0, 8) | uvec3(10, 8, 12) | uvec3(8, 12, 0) | uvec3(12, 255, 193) | uvec3(3, 193, 45) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_uvec3 + version 310 es + values + { + input bool in0 = [ false | true ]; + input bool in1 = [ false | true ]; + input bool in2 = [ true | false ]; + output uvec3 out0 = [ uvec3(0, 0, 1) | uvec3(1, 1, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_uvec3 + version 310 es + values + { + input bool in0 = [ true | false | true | false | false | true | false | true | true | false ]; + input float in1 = [ 36.8125 | 20.125 | 1.0 | 0.0 | 3.5 | 1.0 | 2.0 | 0.5 | 0.0 | 8.25 ]; + input int in2 = [ 1 | 0 | 8 | 66 | 2 | 11 | 192 | 5 | 12 | 255 ]; + output uvec3 out0 = [ uvec3(1, 36, 1) | uvec3(0, 20, 0) | uvec3(1, 1, 8) | uvec3(0, 0, 66) | uvec3(0, 3, 2) | uvec3(1, 1, 11) | uvec3(0, 2, 192) | uvec3(1, 0, 5) | uvec3(1, 0, 12) | uvec3(0, 8, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_uvec3 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(32.0, 64.0) | vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(0.75, 0.0322580645161) ]; + input bool in1 = [ false | false | true | true | true ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(32, 64, 0) | uvec3(0, 2, 1) | uvec3(1, 1, 1) | uvec3(0, 0, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_uvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, false) ]; + input float in1 = [ 8.25 | 36.8125 | 20.125 | 2.0 | 0.0 | 1.0 | 0.5 | 3.5 ]; + output uvec3 out0 = [ uvec3(1, 1, 8) | uvec3(1, 0, 36) | uvec3(0, 1, 20) | uvec3(0, 0, 2) | uvec3(1, 0, 0) | uvec3(0, 1, 1) | uvec3(0, 0, 0) | uvec3(0, 0, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_uvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) ]; + input int in1 = [ 255 | 1 | 2 | 5 | 0 | 11 | 192 | 12 | 8 | 66 ]; + output uvec3 out0 = [ uvec3(1, 1, 255) | uvec3(0, 1, 1) | uvec3(0, 0, 2) | uvec3(1, 1, 5) | uvec3(0, 0, 0) | uvec3(1, 0, 11) | uvec3(0, 0, 192) | uvec3(0, 0, 12) | uvec3(0, 1, 8) | uvec3(1, 0, 66) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_uvec3 + version 310 es + values + { + input bool in0 = [ true | false | true | true | false ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(32, 64) ]; + output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 2) | uvec3(1, 1, 1) | uvec3(1, 0, 0) | uvec3(0, 32, 64) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_uvec3 + version 310 es + values + { + input float in0 = [ 2.0 | 8.25 | 20.125 | 3.5 | 0.0 | 0.5 | 36.8125 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + output uvec3 out0 = [ uvec3(2, 0, 2) | uvec3(8, 1, 1) | uvec3(20, 32, 64) | uvec3(3, 0, 0) | uvec3(0, 0, 2) | uvec3(0, 0, 0) | uvec3(36, 1, 1) | uvec3(1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_vec2 + version 310 es + values + { + input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ]; + input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ]; + output vec2 out0 = [ vec2(-0.5, 1.0) | vec2(-20.125, -20.125) | vec2(1.0, 0.0) | vec2(2.0, 3.5) | vec2(3.5, -8.25) | vec2(36.8125, 36.8125) | vec2(-8.25, -0.5) | vec2(0.0, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_ivec2 + version 310 es + values + { + input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ]; + input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ]; + output ivec2 out0 = [ ivec2(0, 1) | ivec2(-20, -20) | ivec2(1, 0) | ivec2(2, 3) | ivec2(3, -8) | ivec2(36, 36) | ivec2(-8, 0) | ivec2(0, 2) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_bvec2 + version 310 es + values + { + input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ]; + input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_vec2 + version 310 es + values + { + input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ]; + input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ]; + output vec2 out0 = [ vec2(2.0, -192.0) | vec2(-66.0, 8.0) | vec2(0.0, 1.0) | vec2(5.0, 0.0) | vec2(-12.0, 5.0) | vec2(8.0, -66.0) | vec2(-192.0, 2.0) | vec2(1.0, 255.0) | vec2(11.0, 11.0) | vec2(255.0, -12.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_ivec2 + version 310 es + values + { + input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ]; + input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ]; + output ivec2 out0 = [ ivec2(2, -192) | ivec2(-66, 8) | ivec2(0, 1) | ivec2(5, 0) | ivec2(-12, 5) | ivec2(8, -66) | ivec2(-192, 2) | ivec2(1, 255) | ivec2(11, 11) | ivec2(255, -12) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_bvec2 + version 310 es + values + { + input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ]; + input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_vec2 + version 310 es + values + { + input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ]; + input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ]; + output vec2 out0 = [ vec2(9.0, 8.0) | vec2(12.0, 9.0) | vec2(0.0, 45.0) | vec2(255.0, 2.0) | vec2(8.0, 12.0) | vec2(45.0, 193.0) | vec2(3.0, 255.0) | vec2(2.0, 0.0) | vec2(10.0, 3.0) | vec2(193.0, 10.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_ivec2 + version 310 es + values + { + input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ]; + input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ]; + output ivec2 out0 = [ ivec2(9, 8) | ivec2(12, 9) | ivec2(0, 45) | ivec2(255, 2) | ivec2(8, 12) | ivec2(45, 193) | ivec2(3, 255) | ivec2(2, 0) | ivec2(10, 3) | ivec2(193, 10) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_bvec2 + version 310 es + values + { + input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ]; + input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_vec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_ivec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_bvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_vec2 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ]; + input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ]; + output vec2 out0 = [ vec2(0.0, -66.0) | vec2(3.5, 1.0) | vec2(0.0, 255.0) | vec2(2.0, -192.0) | vec2(-8.25, 8.0) | vec2(36.8125, 2.0) | vec2(-20.125, 0.0) | vec2(1.0, 5.0) | vec2(1.0, -12.0) | vec2(-0.5, 11.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_ivec2 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ]; + input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ]; + output ivec2 out0 = [ ivec2(0, -66) | ivec2(3, 1) | ivec2(0, 255) | ivec2(2, -192) | ivec2(-8, 8) | ivec2(36, 2) | ivec2(-20, 0) | ivec2(1, 5) | ivec2(1, -12) | ivec2(0, 11) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_bvec2 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ]; + input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_vec2 + version 310 es + values + { + input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ]; + input bool in1 = [ false | true | true | false | false | true | false | true ]; + output vec2 out0 = [ vec2(2.0, 0.0) | vec2(3.5, 1.0) | vec2(1.0, 1.0) | vec2(-20.125, 0.0) | vec2(-8.25, 0.0) | vec2(0.0, 1.0) | vec2(-0.5, 0.0) | vec2(36.8125, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_ivec2 + version 310 es + values + { + input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ]; + input bool in1 = [ false | true | true | false | false | true | false | true ]; + output ivec2 out0 = [ ivec2(2, 0) | ivec2(3, 1) | ivec2(1, 1) | ivec2(-20, 0) | ivec2(-8, 0) | ivec2(0, 1) | ivec2(0, 0) | ivec2(36, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_bvec2 + version 310 es + values + { + input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ]; + input bool in1 = [ false | true | true | false | false | true | false | true ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, true) | bvec2(true, false) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_vec2 + version 310 es + values + { + input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ]; + input bool in1 = [ true | false | false | false | true | false | true | false | true | true ]; + output vec2 out0 = [ vec2(255.0, 1.0) | vec2(2.0, 0.0) | vec2(-12.0, 0.0) | vec2(1.0, 0.0) | vec2(-192.0, 1.0) | vec2(5.0, 0.0) | vec2(8.0, 1.0) | vec2(0.0, 0.0) | vec2(-66.0, 1.0) | vec2(11.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_ivec2 + version 310 es + values + { + input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ]; + input bool in1 = [ true | false | false | false | true | false | true | false | true | true ]; + output ivec2 out0 = [ ivec2(255, 1) | ivec2(2, 0) | ivec2(-12, 0) | ivec2(1, 0) | ivec2(-192, 1) | ivec2(5, 0) | ivec2(8, 1) | ivec2(0, 0) | ivec2(-66, 1) | ivec2(11, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_bvec2 + version 310 es + values + { + input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ]; + input bool in1 = [ true | false | false | false | true | false | true | false | true | true ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(true, false) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_vec2 + version 310 es + values + { + input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ]; + input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ]; + output vec2 out0 = [ vec2(-66.0, 193.0) | vec2(1.0, 0.0) | vec2(-192.0, 2.0) | vec2(-12.0, 10.0) | vec2(5.0, 255.0) | vec2(255.0, 12.0) | vec2(11.0, 45.0) | vec2(0.0, 8.0) | vec2(2.0, 9.0) | vec2(8.0, 3.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_ivec2 + version 310 es + values + { + input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ]; + input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ]; + output ivec2 out0 = [ ivec2(-66, 193) | ivec2(1, 0) | ivec2(-192, 2) | ivec2(-12, 10) | ivec2(5, 255) | ivec2(255, 12) | ivec2(11, 45) | ivec2(0, 8) | ivec2(2, 9) | ivec2(8, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_bvec2 + version 310 es + values + { + input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ]; + input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_vec2 + version 310 es + values + { + input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ]; + output vec2 out0 = [ vec2(12.0, -20.125) | vec2(0.0, 0.0) | vec2(8.0, 3.5) | vec2(193.0, -8.25) | vec2(3.0, 0.0) | vec2(10.0, 1.0) | vec2(9.0, 2.0) | vec2(2.0, 36.8125) | vec2(45.0, -0.5) | vec2(255.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_ivec2 + version 310 es + values + { + input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ]; + output ivec2 out0 = [ ivec2(12, -20) | ivec2(0, 0) | ivec2(8, 3) | ivec2(193, -8) | ivec2(3, 0) | ivec2(10, 1) | ivec2(9, 2) | ivec2(2, 36) | ivec2(45, 0) | ivec2(255, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_bvec2 + version 310 es + values + { + input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_uvec2 + version 310 es + values + { + input float in0 = [ 8.25 | 36.8125 | 1.0 | 0.5 | 20.125 | 0.0 | 2.0 | 3.5 ]; + input float in1 = [ 0.5 | 36.8125 | 0.0 | 2.0 | 8.25 | 20.125 | 1.0 | 3.5 ]; + output uvec2 out0 = [ uvec2(8, 0) | uvec2(36, 36) | uvec2(1, 0) | uvec2(0, 2) | uvec2(20, 8) | uvec2(0, 20) | uvec2(2, 1) | uvec2(3, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_uvec2 + version 310 es + values + { + input int in0 = [ 0 | 12 | 8 | 11 | 255 | 66 | 192 | 2 | 5 | 1 ]; + input int in1 = [ 11 | 12 | 2 | 5 | 66 | 192 | 255 | 0 | 1 | 8 ]; + output uvec2 out0 = [ uvec2(0, 11) | uvec2(12, 12) | uvec2(8, 2) | uvec2(11, 5) | uvec2(255, 66) | uvec2(66, 192) | uvec2(192, 255) | uvec2(2, 0) | uvec2(5, 1) | uvec2(1, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_uvec2 + version 310 es + values + { + input uint in0 = [ 3 | 9 | 10 | 193 | 8 | 0 | 255 | 45 | 2 | 12 ]; + input uint in1 = [ 0 | 2 | 12 | 3 | 10 | 9 | 45 | 193 | 255 | 8 ]; + output uvec2 out0 = [ uvec2(3, 0) | uvec2(9, 2) | uvec2(10, 12) | uvec2(193, 3) | uvec2(8, 10) | uvec2(0, 9) | uvec2(255, 45) | uvec2(45, 193) | uvec2(2, 255) | uvec2(12, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_uvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_uvec2 + version 310 es + values + { + input float in0 = [ 8.25 | 1.0 | 0.5 | 3.5 | 2.0 | 0.0 | 36.8125 | 1.0 | 0.0 | 20.125 ]; + input int in1 = [ 0 | 255 | 12 | 5 | 192 | 2 | 66 | 11 | 1 | 8 ]; + output uvec2 out0 = [ uvec2(8, 0) | uvec2(1, 255) | uvec2(0, 12) | uvec2(3, 5) | uvec2(2, 192) | uvec2(0, 2) | uvec2(36, 66) | uvec2(1, 11) | uvec2(0, 1) | uvec2(20, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_uvec2 + version 310 es + values + { + input float in0 = [ 3.5 | 1.0 | 8.25 | 0.5 | 2.0 | 36.8125 | 0.0 | 20.125 ]; + input bool in1 = [ true | false | true | false | true | false | false | true ]; + output uvec2 out0 = [ uvec2(3, 1) | uvec2(1, 0) | uvec2(8, 1) | uvec2(0, 0) | uvec2(2, 1) | uvec2(36, 0) | uvec2(0, 0) | uvec2(20, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_uvec2 + version 310 es + values + { + input int in0 = [ 12 | 11 | 0 | 5 | 8 | 255 | 2 | 1 | 66 | 192 ]; + input bool in1 = [ true | true | false | false | false | true | false | false | true | true ]; + output uvec2 out0 = [ uvec2(12, 1) | uvec2(11, 1) | uvec2(0, 0) | uvec2(5, 0) | uvec2(8, 0) | uvec2(255, 1) | uvec2(2, 0) | uvec2(1, 0) | uvec2(66, 1) | uvec2(192, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_uvec2 + version 310 es + values + { + input int in0 = [ 8 | 5 | 1 | 0 | 11 | 12 | 192 | 66 | 255 | 2 ]; + input uint in1 = [ 8 | 10 | 45 | 255 | 9 | 193 | 2 | 3 | 0 | 12 ]; + output uvec2 out0 = [ uvec2(8, 8) | uvec2(5, 10) | uvec2(1, 45) | uvec2(0, 255) | uvec2(11, 9) | uvec2(12, 193) | uvec2(192, 2) | uvec2(66, 3) | uvec2(255, 0) | uvec2(2, 12) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_uvec2 + version 310 es + values + { + input uint in0 = [ 9 | 45 | 8 | 3 | 10 | 2 | 193 | 12 | 255 | 0 ]; + input float in1 = [ 3.5 | 20.125 | 2.0 | 0.0 | 1.0 | 36.8125 | 8.25 | 1.0 | 0.0 | 0.5 ]; + output uvec2 out0 = [ uvec2(9, 3) | uvec2(45, 20) | uvec2(8, 2) | uvec2(3, 0) | uvec2(10, 1) | uvec2(2, 36) | uvec2(193, 8) | uvec2(12, 1) | uvec2(255, 0) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + +end # vector_combine +group matrix_combine "Matrix Combine Constructors" + + case vec2_vec2_to_mat2 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ]; + input vec2 in1 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) ]; + output mat2 out0 = [ mat2(1.0, 1.25, 0.0, 0.5) | mat2(-32.0, 64.0, 1.0, 1.25) | mat2(-0.5, -2.25, -0.75, -0.0322580645161) | mat2(-0.75, -0.0322580645161, -32.0, 64.0) | mat2(0.0, 0.5, -0.5, -2.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_mat2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, true) ]; + output mat2 out0 = [ mat2(0.0, 1.0, 0.0, 0.0) | mat2(1.0, 1.0, 1.0, 0.0) | mat2(1.0, 0.0, 0.0, 0.0) | mat2(0.0, 0.0, 1.0, 1.0) | mat2(0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_mat2 + version 310 es + values + { + input float in0 = [ -8.25 | 3.5 | 36.8125 | 2.0 | -20.125 | 1.0 | -0.5 | 0.0 ]; + input float in1 = [ 3.5 | -20.125 | 1.0 | 0.0 | -8.25 | 2.0 | 36.8125 | -0.5 ]; + input float in2 = [ 36.8125 | 3.5 | 0.0 | -20.125 | -0.5 | -8.25 | 1.0 | 2.0 ]; + input float in3 = [ -0.5 | 0.0 | -8.25 | -20.125 | 2.0 | 3.5 | 1.0 | 36.8125 ]; + output mat2 out0 = [ mat2(-8.25, 3.5, 36.8125, -0.5) | mat2(3.5, -20.125, 3.5, 0.0) | mat2(36.8125, 1.0, 0.0, -8.25) | mat2(2.0, 0.0, -20.125, -20.125) | mat2(-20.125, -8.25, -0.5, 2.0) | mat2(1.0, 2.0, -8.25, 3.5) | mat2(-0.5, 36.8125, 1.0, 1.0) | mat2(0.0, -0.5, 2.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_mat2 + version 310 es + values + { + input int in0 = [ 2 | 1 | -192 | 11 | -66 | 255 | 0 | 8 | -12 | 5 ]; + input int in1 = [ 11 | 255 | 5 | -66 | 8 | 2 | 0 | -12 | 1 | -192 ]; + input int in2 = [ 11 | 1 | -12 | 255 | 5 | 0 | 8 | -192 | 2 | -66 ]; + input int in3 = [ 2 | 1 | 0 | 8 | 255 | -66 | -192 | 11 | 5 | -12 ]; + output mat2 out0 = [ mat2(2.0, 11.0, 11.0, 2.0) | mat2(1.0, 255.0, 1.0, 1.0) | mat2(-192.0, 5.0, -12.0, 0.0) | mat2(11.0, -66.0, 255.0, 8.0) | mat2(-66.0, 8.0, 5.0, 255.0) | mat2(255.0, 2.0, 0.0, -66.0) | mat2(0.0, 0.0, 8.0, -192.0) | mat2(8.0, -12.0, -192.0, 11.0) | mat2(-12.0, 1.0, 2.0, 5.0) | mat2(5.0, -192.0, -66.0, -12.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_mat2 + version 310 es + values + { + input uint in0 = [ 193 | 9 | 12 | 45 | 10 | 2 | 8 | 3 | 255 | 0 ]; + input uint in1 = [ 0 | 255 | 12 | 193 | 3 | 2 | 45 | 9 | 8 | 10 ]; + input uint in2 = [ 3 | 9 | 10 | 2 | 12 | 193 | 255 | 0 | 8 | 45 ]; + input uint in3 = [ 45 | 12 | 9 | 3 | 2 | 255 | 10 | 8 | 193 | 0 ]; + output mat2 out0 = [ mat2(193.0, 0.0, 3.0, 45.0) | mat2(9.0, 255.0, 9.0, 12.0) | mat2(12.0, 12.0, 10.0, 9.0) | mat2(45.0, 193.0, 2.0, 3.0) | mat2(10.0, 3.0, 12.0, 2.0) | mat2(2.0, 2.0, 193.0, 255.0) | mat2(8.0, 45.0, 255.0, 10.0) | mat2(3.0, 9.0, 0.0, 8.0) | mat2(255.0, 8.0, 8.0, 193.0) | mat2(0.0, 10.0, 45.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_mat2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + input bool in3 = [ false | true ]; + output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 0.0) | mat2(0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_mat2 + version 310 es + values + { + input bool in0 = [ false | true | false | true | true | false | true | true | false | false ]; + input float in1 = [ 2.0 | -0.5 | 0.0 | 1.0 | 1.0 | 36.8125 | 3.5 | 0.0 | -8.25 | -20.125 ]; + input int in2 = [ 0 | -12 | 8 | -192 | 1 | -66 | 5 | 11 | 2 | 255 ]; + input bool in3 = [ true | false | true | false | true | false | false | true | true | false ]; + output mat2 out0 = [ mat2(0.0, 2.0, 0.0, 1.0) | mat2(1.0, -0.5, -12.0, 0.0) | mat2(0.0, 0.0, 8.0, 1.0) | mat2(1.0, 1.0, -192.0, 0.0) | mat2(1.0, 1.0, 1.0, 1.0) | mat2(0.0, 36.8125, -66.0, 0.0) | mat2(1.0, 3.5, 5.0, 0.0) | mat2(1.0, 0.0, 11.0, 1.0) | mat2(0.0, -8.25, 2.0, 1.0) | mat2(0.0, -20.125, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_mat2 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output mat2 out0 = [ mat2(1.0, 1.25, 0.0, -2.0) | mat2(-32.0, 64.0, 0.0, 0.0) | mat2(-0.5, -2.25, 0.0, 0.0) | mat2(-0.75, -0.0322580645161, -32.0, 64.0) | mat2(0.0, 0.5, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_mat2 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) ]; + output mat2 out0 = [ mat2(-0.5, -2.25, 0.0, 0.0) | mat2(-32.0, 64.0, 1.0, 0.0) | mat2(1.0, 1.25, 0.0, 0.0) | mat2(-0.75, -0.0322580645161, 0.0, 1.0) | mat2(0.0, 0.5, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_mat2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, false, false) ]; + input float in1 = [ 36.8125 | -8.25 | 1.0 | -0.5 | 2.0 | -20.125 | 0.0 | 3.5 ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 36.8125) | mat2(0.0, 1.0, 0.0, -8.25) | mat2(0.0, 0.0, 0.0, 1.0) | mat2(1.0, 1.0, 1.0, -0.5) | mat2(1.0, 0.0, 0.0, 2.0) | mat2(0.0, 1.0, 0.0, -20.125) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(0.0, 0.0, 0.0, 3.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_mat2 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input float in1 = [ -0.5 | -20.125 | 0.0 | 36.8125 | 3.5 | -8.25 | 2.0 | 1.0 ]; + output mat2 out0 = [ mat2(1.0, 1.25, 1.125, -0.5) | mat2(-0.5, -2.25, -4.875, -20.125) | mat2(-0.5, -2.25, -4.875, 0.0) | mat2(1.0, 1.25, 1.125, 36.8125) | mat2(0.0, 0.5, 0.75, 3.5) | mat2(-32.0, 64.0, -51.0, -8.25) | mat2(0.0, 0.5, 0.75, 2.0) | mat2(-0.75, -0.0322580645161, 0.0526315789474, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_mat2 + version 310 es + values + { + input int in0 = [ 8 | -192 | 2 | 0 | -66 | 255 | 5 | 1 | -12 | 11 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(1, 1) ]; + input int in2 = [ 2 | 1 | -12 | 0 | 11 | 8 | 255 | -192 | 5 | -66 ]; + output mat2 out0 = [ mat2(8.0, 0.0, -2.0, 2.0) | mat2(-192.0, 0.0, 0.0, 1.0) | mat2(2.0, -32.0, 64.0, -12.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(-66.0, 0.0, 0.0, 11.0) | mat2(255.0, -32.0, 64.0, 8.0) | mat2(5.0, 0.0, 0.0, 255.0) | mat2(1.0, 0.0, -2.0, -192.0) | mat2(-12.0, 1.0, 1.0, 5.0) | mat2(11.0, 1.0, 1.0, -66.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_mat2 + version 310 es + values + { + input bool in0 = [ true | true | true | false | false | true | false | false ]; + input float in1 = [ 1.0 | -0.5 | -20.125 | 36.8125 | 2.0 | 0.0 | -8.25 | 3.5 ]; + input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, -2) ]; + output mat2 out0 = [ mat2(1.0, 1.0, 0.0, 0.0) | mat2(1.0, -0.5, 0.0, 0.0) | mat2(1.0, -20.125, 1.0, 1.0) | mat2(0.0, 36.8125, 0.0, 0.0) | mat2(0.0, 2.0, 1.0, 1.0) | mat2(1.0, 0.0, 0.0, -2.0) | mat2(0.0, -8.25, -32.0, 64.0) | mat2(0.0, 3.5, 0.0, -2.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_mat2 + version 310 es + values + { + input float in0 = [ 36.8125 | 2.0 | -0.5 | 0.0 | -20.125 | 1.0 | 3.5 | -8.25 ]; + input uvec3 in1 = [ uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(32, 64, 51) | uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) ]; + output mat2 out0 = [ mat2(36.8125, 1.0, 1.0, 1.0) | mat2(2.0, 0.0, 2.0, 4.0) | mat2(-0.5, 0.0, 2.0, 4.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(-20.125, 32.0, 64.0, 51.0) | mat2(1.0, 0.0, 0.0, 0.0) | mat2(3.5, 0.0, 0.0, 0.0) | mat2(-8.25, 1.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_mat2 + version 310 es + values + { + input int in0 = [ 1 | -66 | 5 | -192 | 11 | 0 | 8 | 2 | -12 | 255 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(32, 64) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(0, 0) | uvec2(0, 0) | uvec2(32, 64) ]; + input bool in2 = [ true | false | true | false | false | false | true | true | true | false ]; + output mat2 out0 = [ mat2(1.0, 0.0, 2.0, 1.0) | mat2(-66.0, 32.0, 64.0, 0.0) | mat2(5.0, 1.0, 1.0, 1.0) | mat2(-192.0, 0.0, 0.0, 0.0) | mat2(11.0, 0.0, 0.0, 0.0) | mat2(0.0, 1.0, 1.0, 0.0) | mat2(8.0, 0.0, 2.0, 1.0) | mat2(2.0, 0.0, 0.0, 1.0) | mat2(-12.0, 0.0, 0.0, 1.0) | mat2(255.0, 32.0, 64.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_vec3_to_mat2x3 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) ]; + input vec3 in1 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output mat2x3 out0 = [ mat2x3(1.0, 1.25, 1.125, -32.0, 64.0, -51.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25, -4.875) | mat2x3(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75) | mat2x3(-32.0, 64.0, -51.0, 1.0, 1.25, 1.125) | mat2x3(0.0, 0.5, 0.75, -0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_bvec3_to_mat2x3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, false, false) ]; + input bvec3 in1 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(1.0, 1.0, 1.0, 1.0, 0.0, 0.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_float_float_to_mat2x3 + version 310 es + values + { + input float in0 = [ 1.0 | -8.25 | -20.125 | 36.8125 | -0.5 | 2.0 | 3.5 | 0.0 ]; + input float in1 = [ -0.5 | -20.125 | 36.8125 | -8.25 | 2.0 | 1.0 | 3.5 | 0.0 ]; + input float in2 = [ 3.5 | 1.0 | 36.8125 | -20.125 | -8.25 | -0.5 | 2.0 | 0.0 ]; + input float in3 = [ 1.0 | -8.25 | 0.0 | -20.125 | 2.0 | 3.5 | -0.5 | 36.8125 ]; + input float in4 = [ 1.0 | 0.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 ]; + input float in5 = [ 2.0 | -20.125 | -8.25 | -0.5 | 3.5 | 1.0 | 36.8125 | 0.0 ]; + output mat2x3 out0 = [ mat2x3(1.0, -0.5, 3.5, 1.0, 1.0, 2.0) | mat2x3(-8.25, -20.125, 1.0, -8.25, 0.0, -20.125) | mat2x3(-20.125, 36.8125, 36.8125, 0.0, 3.5, -8.25) | mat2x3(36.8125, -8.25, -20.125, -20.125, 2.0, -0.5) | mat2x3(-0.5, 2.0, -8.25, 2.0, -8.25, 3.5) | mat2x3(2.0, 1.0, -0.5, 3.5, -20.125, 1.0) | mat2x3(3.5, 3.5, 2.0, -0.5, -0.5, 36.8125) | mat2x3(0.0, 0.0, 0.0, 36.8125, 36.8125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case int_int_int_int_int_int_to_mat2x3 + version 310 es + values + { + input int in0 = [ 2 | 8 | -192 | 0 | 5 | -12 | 1 | 255 | -66 | 11 ]; + input int in1 = [ 1 | -192 | 8 | 0 | -12 | 2 | 11 | 255 | -66 | 5 ]; + input int in2 = [ -192 | 2 | -66 | 8 | 11 | 255 | 0 | 5 | -12 | 1 ]; + input int in3 = [ 2 | 11 | 255 | 0 | -66 | -12 | 5 | -192 | 8 | 1 ]; + input int in4 = [ 8 | 0 | -12 | -192 | 2 | -66 | 1 | 255 | 5 | 11 ]; + input int in5 = [ 0 | 11 | 5 | 8 | -12 | 255 | -192 | 2 | 1 | -66 ]; + output mat2x3 out0 = [ mat2x3(2.0, 1.0, -192.0, 2.0, 8.0, 0.0) | mat2x3(8.0, -192.0, 2.0, 11.0, 0.0, 11.0) | mat2x3(-192.0, 8.0, -66.0, 255.0, -12.0, 5.0) | mat2x3(0.0, 0.0, 8.0, 0.0, -192.0, 8.0) | mat2x3(5.0, -12.0, 11.0, -66.0, 2.0, -12.0) | mat2x3(-12.0, 2.0, 255.0, -12.0, -66.0, 255.0) | mat2x3(1.0, 11.0, 0.0, 5.0, 1.0, -192.0) | mat2x3(255.0, 255.0, 5.0, -192.0, 255.0, 2.0) | mat2x3(-66.0, -66.0, -12.0, 8.0, 5.0, 1.0) | mat2x3(11.0, 5.0, 1.0, 1.0, 11.0, -66.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_bool_bool_to_mat2x3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ false | true ]; + input bool in2 = [ false | true ]; + input bool in3 = [ true | false ]; + input bool in4 = [ true | false ]; + input bool in5 = [ true | false ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(0.0, 1.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_float_int_to_mat2x3 + version 310 es + values + { + input bool in0 = [ false | true | false | true | false | true | false | true | true | false ]; + input float in1 = [ 0.0 | -8.25 | 2.0 | -20.125 | 3.5 | 0.0 | -0.5 | 36.8125 | 1.0 | 1.0 ]; + input int in2 = [ -66 | -12 | 2 | 8 | 255 | 11 | -192 | 1 | 5 | 0 ]; + input bool in3 = [ true | false | true | false | false | true | true | false | true | false ]; + input float in4 = [ 1.0 | 0.0 | -8.25 | 1.0 | 3.5 | -20.125 | -0.5 | 0.0 | 2.0 | 36.8125 ]; + input int in5 = [ 255 | -192 | 1 | 2 | -12 | -66 | 8 | 0 | 11 | 5 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, -66.0, 1.0, 1.0, 255.0) | mat2x3(1.0, -8.25, -12.0, 0.0, 0.0, -192.0) | mat2x3(0.0, 2.0, 2.0, 1.0, -8.25, 1.0) | mat2x3(1.0, -20.125, 8.0, 0.0, 1.0, 2.0) | mat2x3(0.0, 3.5, 255.0, 0.0, 3.5, -12.0) | mat2x3(1.0, 0.0, 11.0, 1.0, -20.125, -66.0) | mat2x3(0.0, -0.5, -192.0, 1.0, -0.5, 8.0) | mat2x3(1.0, 36.8125, 1.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 1.0, 5.0, 1.0, 2.0, 11.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 36.8125, 5.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec3_ivec3_to_mat2x3 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input ivec3 in1 = [ ivec3(1, 1, 1) | ivec3(-32, 64, -51) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(0, 0, 0) ]; + output mat2x3 out0 = [ mat2x3(1.0, 1.25, 1.125, 1.0, 1.0, 1.0) | mat2x3(-0.5, -2.25, -4.875, -32.0, 64.0, -51.0) | mat2x3(-32.0, 64.0, -51.0, 0.0, -2.0, -4.0) | mat2x3(0.0, 0.5, 0.75, 0.0, 0.0, 0.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec4_to_mat2x3 + version 310 es + values + { + input vec2 in0 = [ vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ]; + input bvec4 in1 = [ bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output mat2x3 out0 = [ mat2x3(-32.0, 64.0, 1.0, 0.0, 0.0, 1.0) | mat2x3(0.0, 0.5, 0.0, 1.0, 0.0, 0.0) | mat2x3(-0.5, -2.25, 0.0, 0.0, 0.0, 1.0) | mat2x3(1.0, 1.25, 1.0, 1.0, 1.0, 1.0) | mat2x3(-0.75, -0.0322580645161, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_ivec2_to_mat2x3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ 1.0 | -8.25 | 36.8125 | 2.0 | 3.5 | -0.5 | -20.125 | 0.0 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(0.0, 0.0, 0.0, -8.25, 0.0, 0.0) | mat2x3(1.0, 1.0, 1.0, 36.8125, -32.0, 64.0) | mat2x3(1.0, 0.0, 0.0, 2.0, 0.0, -2.0) | mat2x3(0.0, 0.0, 0.0, 3.5, 1.0, 1.0) | mat2x3(0.0, 1.0, 0.0, -0.5, 0.0, -2.0) | mat2x3(1.0, 0.0, 0.0, -20.125, 0.0, 0.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_float_bvec2_to_mat2x3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ 0.0 | 36.8125 | 3.5 | -0.5 | -8.25 | 2.0 | 1.0 | -20.125 ]; + input bvec2 in2 = [ bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.5, 0.75, 0.0, 0.0, 0.0) | mat2x3(-0.5, -2.25, -4.875, 36.8125, 0.0, 1.0) | mat2x3(0.0, 0.5, 0.75, 3.5, 1.0, 0.0) | mat2x3(1.0, 1.25, 1.125, -0.5, 0.0, 1.0) | mat2x3(-0.5, -2.25, -4.875, -8.25, 0.0, 0.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, 2.0, 1.0, 0.0) | mat2x3(-32.0, 64.0, -51.0, 1.0, 1.0, 1.0) | mat2x3(1.0, 1.25, 1.125, -20.125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_vec3_vec2_to_mat2x4 + version 310 es + values + { + input vec3 in0 = [ vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) ]; + input vec3 in1 = [ vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ]; + input vec2 in2 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + output mat2x4 out0 = [ mat2x4(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75, -0.75, -0.0322580645161) | mat2x4(-0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25, -4.875, -32.0, 64.0) | mat2x4(0.0, 0.5, 0.75, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25) | mat2x4(1.0, 1.25, 1.125, -32.0, 64.0, -51.0, 0.0, 0.5) | mat2x4(-32.0, 64.0, -51.0, 1.0, 1.25, 1.125, -0.5, -2.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec3_ivec3_ivec2_to_mat2x4 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ]; + input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) ]; + output mat2x4 out0 = [ mat2x4(0.0, -2.0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, -2.0) | mat2x4(1.0, 1.0, 1.0, 0.0, -2.0, -4.0, 1.0, 1.0) | mat2x4(0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 0.0, 0.0) | mat2x4(-32.0, 64.0, -51.0, 0.0, 0.0, 0.0, -32.0, 64.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_int_bool_to_mat2x4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) ]; + input float in2 = [ -8.25 | -0.5 | 3.5 | 36.8125 | 0.0 | 0.0 | 2.0 | -20.125 | 1.0 | 1.0 ]; + input float in3 = [ 1.0 | 2.0 | -0.5 | 3.5 | 36.8125 | -8.25 | 1.0 | 0.0 | 0.0 | -20.125 ]; + input int in4 = [ 255 | 8 | 11 | -12 | -192 | 0 | 2 | 1 | -66 | 5 ]; + input bool in5 = [ true | false | false | true | false | true | true | false | true | false ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.5, 1.0, 1.0, -8.25, 1.0, 255.0, 1.0) | mat2x4(-32.0, 64.0, 0.0, -2.0, -0.5, 2.0, 8.0, 0.0) | mat2x4(-0.5, -2.25, -32.0, 64.0, 3.5, -0.5, 11.0, 0.0) | mat2x4(0.0, 0.5, 0.0, -2.0, 36.8125, 3.5, -12.0, 1.0) | mat2x4(-32.0, 64.0, 0.0, 0.0, 0.0, 36.8125, -192.0, 0.0) | mat2x4(1.0, 1.25, 0.0, 0.0, 0.0, -8.25, 0.0, 1.0) | mat2x4(-0.75, -0.0322580645161, -32.0, 64.0, 2.0, 1.0, 2.0, 1.0) | mat2x4(1.0, 1.25, 0.0, 0.0, -20.125, 0.0, 1.0, 0.0) | mat2x4(-0.5, -2.25, 0.0, 0.0, 1.0, 0.0, -66.0, 1.0) | mat2x4(-0.75, -0.0322580645161, 1.0, 1.0, 1.0, -20.125, 5.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec2_bool_bvec2_to_mat2x4 + version 310 es + values + { + input bool in0 = [ false | true | false | true | true | true | false | false | false | true ]; + input float in1 = [ 0.0 | -0.5 | -20.125 | -8.25 | 0.0 | 2.0 | 3.5 | 1.0 | 1.0 | 36.8125 ]; + input int in2 = [ 2 | 1 | 255 | 8 | -66 | 0 | -12 | 5 | -192 | 11 ]; + input vec2 in3 = [ vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input bool in4 = [ true | false | false | true | false | false | true | true | true | false ]; + input bvec2 in5 = [ bvec2(true, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 2.0, -32.0, 64.0, 1.0, 1.0, 0.0) | mat2x4(1.0, -0.5, 1.0, -0.5, -2.25, 0.0, 1.0, 1.0) | mat2x4(0.0, -20.125, 255.0, 1.0, 1.25, 0.0, 0.0, 1.0) | mat2x4(1.0, -8.25, 8.0, -0.75, -0.0322580645161, 1.0, 1.0, 1.0) | mat2x4(1.0, 0.0, -66.0, 0.0, 0.5, 0.0, 0.0, 0.0) | mat2x4(1.0, 2.0, 0.0, 1.0, 1.25, 0.0, 0.0, 1.0) | mat2x4(0.0, 3.5, -12.0, -32.0, 64.0, 1.0, 0.0, 0.0) | mat2x4(0.0, 1.0, 5.0, -0.5, -2.25, 1.0, 0.0, 0.0) | mat2x4(0.0, 1.0, -192.0, 0.0, 0.5, 1.0, 0.0, 0.0) | mat2x4(1.0, 36.8125, 11.0, -0.75, -0.0322580645161, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bvec2_int_vec4_to_mat2x4 + version 310 es + values + { + input bool in0 = [ true | true | true | false | false | false | false | false | true | true ]; + input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) ]; + input int in2 = [ 8 | 1 | 5 | -66 | -192 | 11 | 255 | 0 | -12 | 2 ]; + input vec4 in3 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) ]; + output mat2x4 out0 = [ mat2x4(1.0, 1.0, 1.0, 8.0, 0.0, 0.5, 0.75, 0.825) | mat2x4(1.0, 0.0, 0.0, 1.0, 0.0, 0.5, 0.75, 0.825) | mat2x4(1.0, 1.0, 0.0, 5.0, -32.0, 64.0, -51.0, 24.0) | mat2x4(0.0, 0.0, 0.0, -66.0, 1.0, 1.25, 1.125, 1.75) | mat2x4(0.0, 1.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0) | mat2x4(0.0, 1.0, 0.0, 11.0, 1.0, 1.25, 1.125, 1.75) | mat2x4(0.0, 0.0, 1.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat2x4(0.0, 0.0, 0.0, 0.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat2x4(1.0, 0.0, 1.0, -12.0, -0.5, -2.25, -4.875, 9.0) | mat2x4(1.0, 0.0, 0.0, 2.0, -32.0, 64.0, -51.0, 24.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec2_bool_to_mat2x4 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 2.0 | -8.25 | -20.125 | 36.8125 | 1.0 | -0.5 ]; + input bvec4 in1 = [ bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) ]; + input ivec2 in2 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) ]; + input bool in3 = [ true | true | false | true | false | false | false | true ]; + output mat2x4 out0 = [ mat2x4(0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0) | mat2x4(3.5, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, 1.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0) | mat2x4(-8.25, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x4(-20.125, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(36.8125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat2x4(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec3_vec3_to_mat3x2 + version 310 es + values + { + input vec3 in0 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ]; + input vec3 in1 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) ]; + output mat3x2 out0 = [ mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25, 1.125) | mat3x2(-0.5, -2.25, -4.875, -0.75, -0.0322580645161, 0.0526315789474) | mat3x2(0.0, 0.5, 0.75, -32.0, 64.0, -51.0) | mat3x2(-32.0, 64.0, -51.0, -0.5, -2.25, -4.875) | mat3x2(1.0, 1.25, 1.125, 0.0, 0.5, 0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_bvec3_to_mat3x2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + input bvec3 in1 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, false, false) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3x2(1.0, 1.0, 1.0, 0.0, 1.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_float_float_to_mat3x2 + version 310 es + values + { + input float in0 = [ -8.25 | 36.8125 | -20.125 | -0.5 | 3.5 | 1.0 | 2.0 | 0.0 ]; + input float in1 = [ 2.0 | 3.5 | -20.125 | 36.8125 | 1.0 | 0.0 | -8.25 | -0.5 ]; + input float in2 = [ -0.5 | 2.0 | 1.0 | 0.0 | -8.25 | 36.8125 | -20.125 | 3.5 ]; + input float in3 = [ 36.8125 | 0.0 | 1.0 | -0.5 | 2.0 | 3.5 | -20.125 | -8.25 ]; + input float in4 = [ 36.8125 | 2.0 | 0.0 | -0.5 | 3.5 | -20.125 | -8.25 | 1.0 ]; + input float in5 = [ 0.0 | 36.8125 | -20.125 | -0.5 | 3.5 | 2.0 | 1.0 | -8.25 ]; + output mat3x2 out0 = [ mat3x2(-8.25, 2.0, -0.5, 36.8125, 36.8125, 0.0) | mat3x2(36.8125, 3.5, 2.0, 0.0, 2.0, 36.8125) | mat3x2(-20.125, -20.125, 1.0, 1.0, 0.0, -20.125) | mat3x2(-0.5, 36.8125, 0.0, -0.5, -0.5, -0.5) | mat3x2(3.5, 1.0, -8.25, 2.0, 3.5, 3.5) | mat3x2(1.0, 0.0, 36.8125, 3.5, -20.125, 2.0) | mat3x2(2.0, -8.25, -20.125, -20.125, -8.25, 1.0) | mat3x2(0.0, -0.5, 3.5, -8.25, 1.0, -8.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case int_int_int_int_int_int_to_mat3x2 + version 310 es + values + { + input int in0 = [ 8 | -192 | 2 | 11 | 255 | -66 | 5 | -12 | 1 | 0 ]; + input int in1 = [ 1 | 2 | -12 | 5 | 0 | 255 | 8 | 11 | -192 | -66 ]; + input int in2 = [ -12 | 11 | 2 | 1 | 8 | -66 | -192 | 5 | 255 | 0 ]; + input int in3 = [ -192 | 0 | -12 | 11 | 1 | -66 | 8 | 255 | 2 | 5 ]; + input int in4 = [ -12 | 5 | 0 | -66 | 255 | 8 | -192 | 11 | 2 | 1 ]; + input int in5 = [ -66 | -12 | 8 | 2 | 255 | 0 | -192 | 11 | 1 | 5 ]; + output mat3x2 out0 = [ mat3x2(8.0, 1.0, -12.0, -192.0, -12.0, -66.0) | mat3x2(-192.0, 2.0, 11.0, 0.0, 5.0, -12.0) | mat3x2(2.0, -12.0, 2.0, -12.0, 0.0, 8.0) | mat3x2(11.0, 5.0, 1.0, 11.0, -66.0, 2.0) | mat3x2(255.0, 0.0, 8.0, 1.0, 255.0, 255.0) | mat3x2(-66.0, 255.0, -66.0, -66.0, 8.0, 0.0) | mat3x2(5.0, 8.0, -192.0, 8.0, -192.0, -192.0) | mat3x2(-12.0, 11.0, 5.0, 255.0, 11.0, 11.0) | mat3x2(1.0, -192.0, 255.0, 2.0, 2.0, 1.0) | mat3x2(0.0, -66.0, 0.0, 5.0, 1.0, 5.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_bool_bool_to_mat3x2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ false | true ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + input bool in4 = [ false | true ]; + input bool in5 = [ false | true ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 1.0, 1.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_float_int_to_mat3x2 + version 310 es + values + { + input bool in0 = [ true | false | true | true | false | true | false | true | false | false ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | 0.0 | 1.0 | -8.25 | 1.0 | 2.0 | 36.8125 | -0.5 ]; + input int in2 = [ 255 | -66 | 8 | -192 | 5 | 11 | 1 | 2 | 0 | -12 ]; + input bool in3 = [ true | false | false | true | false | true | true | false | false | true ]; + input float in4 = [ 0.0 | -20.125 | 1.0 | -8.25 | 0.0 | -0.5 | 2.0 | 3.5 | 1.0 | 36.8125 ]; + input int in5 = [ -192 | 8 | 2 | 255 | -66 | -12 | 11 | 0 | 5 | 1 ]; + output mat3x2 out0 = [ mat3x2(1.0, -20.125, 255.0, 1.0, 0.0, -192.0) | mat3x2(0.0, 0.0, -66.0, 0.0, -20.125, 8.0) | mat3x2(1.0, 3.5, 8.0, 0.0, 1.0, 2.0) | mat3x2(1.0, 0.0, -192.0, 1.0, -8.25, 255.0) | mat3x2(0.0, 1.0, 5.0, 0.0, 0.0, -66.0) | mat3x2(1.0, -8.25, 11.0, 1.0, -0.5, -12.0) | mat3x2(0.0, 1.0, 1.0, 1.0, 2.0, 11.0) | mat3x2(1.0, 2.0, 2.0, 0.0, 3.5, 0.0) | mat3x2(0.0, 36.8125, 0.0, 0.0, 1.0, 5.0) | mat3x2(0.0, -0.5, -12.0, 1.0, 36.8125, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec3_ivec3_to_mat3x2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) ]; + input ivec3 in1 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.5, 0.75, 1.0, 1.0, 1.0) | mat3x2(1.0, 1.25, 1.125, 0.0, 0.0, 0.0) | mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 0.0, -2.0, -4.0) | mat3x2(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3x2(-0.5, -2.25, -4.875, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec4_to_mat3x2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) ]; + input bvec4 in1 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.5, 1.0, 1.0, 1.0, 1.0) | mat3x2(-0.75, -0.0322580645161, 0.0, 0.0, 0.0, 1.0) | mat3x2(-32.0, 64.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(-0.5, -2.25, 1.0, 0.0, 0.0, 1.0) | mat3x2(1.0, 1.25, 0.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_ivec2_to_mat3x2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(true, false, false) ]; + input float in1 = [ -8.25 | 1.0 | 2.0 | -0.5 | -20.125 | 0.0 | 36.8125 | 3.5 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(-32, 64) ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, -8.25, 1.0, 1.0) | mat3x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) | mat3x2(0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, -0.5, 0.0, -2.0) | mat3x2(0.0, 1.0, 0.0, -20.125, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 0.0, 36.8125, 0.0, -2.0) | mat3x2(1.0, 0.0, 0.0, 3.5, -32.0, 64.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_float_bvec2_to_mat3x2 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input float in1 = [ -8.25 | 36.8125 | -0.5 | 3.5 | 2.0 | -20.125 | 0.0 | 1.0 ]; + input bvec2 in2 = [ bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) ]; + output mat3x2 out0 = [ mat3x2(1.0, 1.25, 1.125, -8.25, 1.0, 0.0) | mat3x2(1.0, 1.25, 1.125, 36.8125, 0.0, 0.0) | mat3x2(-0.5, -2.25, -4.875, -0.5, 1.0, 1.0) | mat3x2(-0.5, -2.25, -4.875, 3.5, 0.0, 0.0) | mat3x2(-32.0, 64.0, -51.0, 2.0, 0.0, 1.0) | mat3x2(0.0, 0.5, 0.75, -20.125, 0.0, 1.0) | mat3x2(0.0, 0.5, 0.75, 0.0, 1.0, 0.0) | mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_vec3_vec3_to_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input vec3 in1 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) ]; + input vec3 in2 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) ]; + output mat3 out0 = [ mat3(1.0, 1.25, 1.125, -0.75, -0.0322580645161, 0.0526315789474, -0.75, -0.0322580645161, 0.0526315789474) | mat3(-0.5, -2.25, -4.875, 1.0, 1.25, 1.125, -32.0, 64.0, -51.0) | mat3(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0, -0.5, -2.25, -4.875) | mat3(0.0, 0.5, 0.75, -0.5, -2.25, -4.875, 1.0, 1.25, 1.125) | mat3(-0.75, -0.0322580645161, 0.0526315789474, 0.0, 0.5, 0.75, 0.0, 0.5, 0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec3_ivec3_ivec3_to_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(1, 1, 1) ]; + input ivec3 in2 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, -2, -4) | ivec3(0, 0, 0) ]; + output mat3 out0 = [ mat3(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3(0.0, -2.0, -4.0, 0.0, -2.0, -4.0, 0.0, 0.0, 0.0) | mat3(0.0, 0.0, 0.0, -32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3(-32.0, 64.0, -51.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0) | mat3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_int_bool_bool_to_mat3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(-32, 64) ]; + input float in2 = [ -0.5 | 3.5 | 0.0 | -20.125 | 1.0 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 ]; + input float in3 = [ 3.5 | 0.0 | -20.125 | 36.8125 | 2.0 | -8.25 | -0.5 | 1.0 | 0.0 | 1.0 ]; + input int in4 = [ 0 | 11 | 5 | -192 | 8 | -66 | 1 | 2 | 255 | -12 ]; + input bool in5 = [ true | true | true | false | true | false | false | false | true | false ]; + input bool in6 = [ false | false | true | false | false | false | true | true | true | true ]; + output mat3 out0 = [ mat3(1.0, 1.25, 0.0, 0.0, -0.5, 3.5, 0.0, 1.0, 0.0) | mat3(-0.5, -2.25, 0.0, -2.0, 3.5, 0.0, 11.0, 1.0, 0.0) | mat3(0.0, 0.5, 1.0, 1.0, 0.0, -20.125, 5.0, 1.0, 1.0) | mat3(-0.75, -0.0322580645161, 0.0, -2.0, -20.125, 36.8125, -192.0, 0.0, 0.0) | mat3(-32.0, 64.0, 0.0, 0.0, 1.0, 2.0, 8.0, 1.0, 0.0) | mat3(-0.75, -0.0322580645161, 0.0, 0.0, -8.25, -8.25, -66.0, 0.0, 0.0) | mat3(-0.5, -2.25, 1.0, 1.0, 0.0, -0.5, 1.0, 0.0, 1.0) | mat3(1.0, 1.25, -32.0, 64.0, 1.0, 1.0, 2.0, 0.0, 1.0) | mat3(0.0, 0.5, 0.0, 0.0, 2.0, 0.0, 255.0, 1.0, 1.0) | mat3(-32.0, 64.0, -32.0, 64.0, 36.8125, 1.0, -12.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4, in5, in6); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec2_bool_bvec2_float_to_mat3 + version 310 es + values + { + input bool in0 = [ false | true | true | true | true | true | false | false | false | false ]; + input float in1 = [ -8.25 | 1.0 | -0.5 | 36.8125 | 0.0 | 3.5 | -20.125 | 1.0 | 0.0 | 2.0 ]; + input int in2 = [ 8 | -66 | 5 | 1 | 0 | 2 | -12 | -192 | 11 | 255 ]; + input vec2 in3 = [ vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ]; + input bool in4 = [ true | false | true | false | false | true | true | false | true | false ]; + input bvec2 in5 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) ]; + input float in6 = [ -0.5 | 1.0 | 1.0 | 0.0 | 36.8125 | 2.0 | 0.0 | 3.5 | -20.125 | -8.25 ]; + output mat3 out0 = [ mat3(0.0, -8.25, 8.0, 0.0, 0.5, 1.0, 0.0, 1.0, -0.5) | mat3(1.0, 1.0, -66.0, -32.0, 64.0, 0.0, 0.0, 0.0, 1.0) | mat3(1.0, -0.5, 5.0, 1.0, 1.25, 1.0, 1.0, 0.0, 1.0) | mat3(1.0, 36.8125, 1.0, -32.0, 64.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, -0.5, -2.25, 0.0, 1.0, 1.0, 36.8125) | mat3(1.0, 3.5, 2.0, -0.75, -0.0322580645161, 1.0, 0.0, 0.0, 2.0) | mat3(0.0, -20.125, -12.0, -0.5, -2.25, 1.0, 1.0, 0.0, 0.0) | mat3(0.0, 1.0, -192.0, 0.0, 0.5, 0.0, 0.0, 0.0, 3.5) | mat3(0.0, 0.0, 11.0, 1.0, 1.25, 1.0, 0.0, 1.0, -20.125) | mat3(0.0, 2.0, 255.0, -0.75, -0.0322580645161, 0.0, 1.0, 1.0, -8.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4, in5, in6); + ${OUTPUT} + } + "" + end + + case bool_bvec2_int_vec4_bool_to_mat3 + version 310 es + values + { + input bool in0 = [ true | false | true | true | false | false | true | false | false | true ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, false) ]; + input int in2 = [ -192 | 2 | 0 | 5 | 1 | -66 | 11 | -12 | 8 | 255 ]; + input vec4 in3 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + input bool in4 = [ false | true | false | true | false | false | false | true | true | true ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, -192.0, -32.0, 64.0, -51.0, 24.0, 0.0) | mat3(0.0, 0.0, 1.0, 2.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) | mat3(1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0) | mat3(1.0, 1.0, 1.0, 5.0, -32.0, 64.0, -51.0, 24.0, 1.0) | mat3(0.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75, 0.0) | mat3(0.0, 0.0, 0.0, -66.0, 0.0, 0.5, 0.75, 0.825, 0.0) | mat3(1.0, 0.0, 1.0, 11.0, 1.0, 1.25, 1.125, 1.75, 0.0) | mat3(0.0, 1.0, 0.0, -12.0, -0.5, -2.25, -4.875, 9.0, 1.0) | mat3(0.0, 1.0, 0.0, 8.0, -0.5, -2.25, -4.875, 9.0, 1.0) | mat3(1.0, 0.0, 0.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec2_bool_bool_to_mat3 + version 310 es + values + { + input float in0 = [ -8.25 | 2.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -20.125 | 0.0 ]; + input bvec4 in1 = [ bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(false, false, false, true) ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) ]; + input bool in3 = [ false | true | false | true | true | false | true | false ]; + input bool in4 = [ true | false | false | false | true | true | false | true ]; + output mat3 out0 = [ mat3(-8.25, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) | mat3(2.0, 0.0, 1.0, 0.0, 0.0, 0.0, -2.0, 1.0, 0.0) | mat3(36.8125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3(3.5, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, 1.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat3(-0.5, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat3(-20.125, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0, 0.0) | mat3(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4); + ${OUTPUT} + } + "" + end + + case vec4_vec4_vec4_to_mat3x4 + version 310 es + values + { + input vec4 in0 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in1 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) ]; + input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) ]; + output mat3x4 out0 = [ mat3x4(-0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -51.0, 24.0) | mat3x4(1.0, 1.25, 1.125, 1.75, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat3x4(-32.0, 64.0, -51.0, 24.0, 0.0, 0.5, 0.75, 0.825, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat3x4(-0.5, -2.25, -4.875, 9.0, -32.0, 64.0, -51.0, 24.0, -0.5, -2.25, -4.875, 9.0) | mat3x4(0.0, 0.5, 0.75, 0.825, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec4_ivec4_ivec4_to_mat3x4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) ]; + input ivec4 in1 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + input ivec4 in2 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ]; + output mat3x4 out0 = [ mat3x4(0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(-32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat3x4 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-0.5, -2.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, -2) ]; + input float in2 = [ 1.0 | -8.25 | 2.0 | 3.5 | -20.125 | 36.8125 | 0.0 | 1.0 | -0.5 | 0.0 ]; + input float in3 = [ -0.5 | 36.8125 | 1.0 | 1.0 | 0.0 | 3.5 | 2.0 | 0.0 | -8.25 | -20.125 ]; + input float in4 = [ -8.25 | 1.0 | 1.0 | 0.0 | 2.0 | 36.8125 | 0.0 | -20.125 | 3.5 | -0.5 ]; + input int in5 = [ 11 | 2 | 8 | 5 | 0 | -192 | 1 | -12 | 255 | -66 ]; + input int in6 = [ -12 | 5 | 8 | 1 | 0 | 255 | 11 | -192 | -66 | 2 ]; + input bool in7 = [ true | true | true | false | false | false | true | false | true | false ]; + input bool in8 = [ true | true | true | false | true | false | true | false | false | false ]; + input bool in9 = [ true | false | true | false | true | true | false | false | false | true ]; + output mat3x4 out0 = [ mat3x4(1.0, 1.25, 0.0, 0.0, 1.0, -0.5, -8.25, 11.0, -12.0, 1.0, 1.0, 1.0) | mat3x4(0.0, 0.5, 0.0, 0.0, -8.25, 36.8125, 1.0, 2.0, 5.0, 1.0, 1.0, 0.0) | mat3x4(0.0, 0.5, -32.0, 64.0, 2.0, 1.0, 1.0, 8.0, 8.0, 1.0, 1.0, 1.0) | mat3x4(-32.0, 64.0, 1.0, 1.0, 3.5, 1.0, 0.0, 5.0, 1.0, 0.0, 0.0, 0.0) | mat3x4(-32.0, 64.0, 1.0, 1.0, -20.125, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat3x4(-0.75, -0.0322580645161, -32.0, 64.0, 36.8125, 3.5, 36.8125, -192.0, 255.0, 0.0, 0.0, 1.0) | mat3x4(1.0, 1.25, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 11.0, 1.0, 1.0, 0.0) | mat3x4(-0.75, -0.0322580645161, 0.0, -2.0, 1.0, 0.0, -20.125, -12.0, -192.0, 0.0, 0.0, 0.0) | mat3x4(-0.5, -2.25, 0.0, 0.0, -0.5, -8.25, 3.5, 255.0, -66.0, 1.0, 0.0, 0.0) | mat3x4(-0.5, -2.25, 0.0, -2.0, 0.0, -20.125, -0.5, -66.0, 2.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5, in6, in7, in8, in9); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec3_bool_bvec3_float_bool_to_mat3x4 + version 310 es + values + { + input bool in0 = [ false | false | true | true | true | true | false | false | false | true ]; + input float in1 = [ 36.8125 | -8.25 | 1.0 | 0.0 | 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -20.125 ]; + input int in2 = [ -66 | -192 | 255 | 8 | 0 | -12 | 5 | 2 | 11 | 1 ]; + input vec3 in3 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) ]; + input bool in4 = [ false | true | true | true | false | false | true | true | false | false ]; + input bvec3 in5 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) ]; + input float in6 = [ -8.25 | 1.0 | -0.5 | 36.8125 | 0.0 | 2.0 | -20.125 | 1.0 | 0.0 | 3.5 ]; + input bool in7 = [ true | false | false | true | true | false | true | false | false | true ]; + output mat3x4 out0 = [ mat3x4(0.0, 36.8125, -66.0, -0.75, -0.0322580645161, 0.0526315789474, 0.0, 1.0, 0.0, 0.0, -8.25, 1.0) | mat3x4(0.0, -8.25, -192.0, -32.0, 64.0, -51.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(1.0, 1.0, 255.0, 0.0, 0.5, 0.75, 1.0, 0.0, 1.0, 0.0, -0.5, 0.0) | mat3x4(1.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 36.8125, 1.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) | mat3x4(1.0, 1.0, -12.0, -32.0, 64.0, -51.0, 0.0, 1.0, 1.0, 1.0, 2.0, 0.0) | mat3x4(0.0, 2.0, 5.0, 1.0, 1.25, 1.125, 1.0, 1.0, 1.0, 1.0, -20.125, 1.0) | mat3x4(0.0, 3.5, 2.0, 1.0, 1.25, 1.125, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.0, -0.5, 11.0, -0.5, -2.25, -4.875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, -20.125, 1.0, -0.5, -2.25, -4.875, 0.0, 0.0, 0.0, 0.0, 3.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5, in6, in7); + ${OUTPUT} + } + "" + end + + case bool_bvec4_int_vec4_bool_float_to_mat3x4 + version 310 es + values + { + input bool in0 = [ false | true | true | true | false | false | false | true | false | true ]; + input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) ]; + input int in2 = [ 255 | 2 | -192 | -12 | 11 | 1 | 0 | -66 | 8 | 5 ]; + input vec4 in3 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) ]; + input bool in4 = [ true | true | true | false | false | false | true | true | false | false ]; + input float in5 = [ 36.8125 | 2.0 | -8.25 | 0.0 | 1.0 | 1.0 | -0.5 | 3.5 | 0.0 | -20.125 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 255.0, -0.5, -2.25, -4.875, 9.0, 1.0, 36.8125) | mat3x4(1.0, 1.0, 0.0, 0.0, 1.0, 2.0, 1.0, 1.25, 1.125, 1.75, 1.0, 2.0) | mat3x4(1.0, 0.0, 1.0, 0.0, 0.0, -192.0, 1.0, 1.25, 1.125, 1.75, 1.0, -8.25) | mat3x4(1.0, 0.0, 0.0, 0.0, 1.0, -12.0, 0.0, 0.5, 0.75, 0.825, 0.0, 0.0) | mat3x4(0.0, 1.0, 1.0, 1.0, 1.0, 11.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, 1.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 1.0) | mat3x4(0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, -0.5) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.5, 0.75, 0.825, 1.0, 3.5) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, 0.0) | mat3x4(1.0, 1.0, 0.0, 0.0, 1.0, 5.0, -0.5, -2.25, -4.875, 9.0, 0.0, -20.125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec4_bool_bool_int_to_mat3x4 + version 310 es + values + { + input float in0 = [ 36.8125 | 1.0 | 0.0 | 3.5 | -8.25 | -20.125 | 2.0 | 0.0 | 1.0 | -0.5 ]; + input bvec4 in1 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(false, false, false, false) ]; + input ivec4 in2 = [ ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) ]; + input bool in3 = [ true | false | true | true | false | true | true | false | false | false ]; + input bool in4 = [ true | false | false | true | true | false | false | false | true | true ]; + input int in5 = [ 1 | 5 | -12 | 8 | -192 | 2 | -66 | 255 | 11 | 0 ]; + output mat3x4 out0 = [ mat3x4(36.8125, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 5.0) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, 0.0, -12.0) | mat3x4(3.5, 0.0, 0.0, 0.0, 1.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, 8.0) | mat3x4(-8.25, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -192.0) | mat3x4(-20.125, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 2.0) | mat3x4(2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -66.0) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 255.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 11.0) | mat3x4(-0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec3_vec3_vec2_to_mat4x2 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input vec3 in1 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input vec2 in2 = [ vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) ]; + output mat4x2 out0 = [ mat4x2(1.0, 1.25, 1.125, -32.0, 64.0, -51.0, 1.0, 1.25) | mat4x2(-32.0, 64.0, -51.0, -0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25) | mat4x2(0.0, 0.5, 0.75, -0.5, -2.25, -4.875, -0.75, -0.0322580645161) | mat4x2(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75, -32.0, 64.0) | mat4x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25, 1.125, 0.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec3_ivec3_ivec2_to_mat4x2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ]; + input ivec3 in1 = [ ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ]; + input ivec2 in2 = [ ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, -2.0, -4.0, -32.0, 64.0) | mat4x2(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.0, -2.0, -4.0, 1.0, 1.0, 1.0, 0.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat4x2(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0, 0.0, -2.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_int_bool_to_mat4x2 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) ]; + input float in2 = [ 3.5 | -8.25 | 2.0 | 36.8125 | -0.5 | 1.0 | 1.0 | 0.0 | -20.125 | 0.0 ]; + input float in3 = [ 0.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -8.25 | 2.0 | 0.0 | -20.125 | 1.0 ]; + input int in4 = [ -12 | -66 | 11 | 5 | 8 | 255 | -192 | 2 | 1 | 0 ]; + input bool in5 = [ true | true | false | true | false | true | false | true | false | false ]; + output mat4x2 out0 = [ mat4x2(-0.5, -2.25, 0.0, -2.0, 3.5, 0.0, -12.0, 1.0) | mat4x2(0.0, 0.5, 0.0, 0.0, -8.25, 36.8125, -66.0, 1.0) | mat4x2(1.0, 1.25, -32.0, 64.0, 2.0, 3.5, 11.0, 0.0) | mat4x2(0.0, 0.5, 1.0, 1.0, 36.8125, 1.0, 5.0, 1.0) | mat4x2(-32.0, 64.0, 1.0, 1.0, -0.5, -0.5, 8.0, 0.0) | mat4x2(-0.75, -0.0322580645161, 0.0, 0.0, 1.0, -8.25, 255.0, 1.0) | mat4x2(-0.75, -0.0322580645161, -32.0, 64.0, 1.0, 2.0, -192.0, 0.0) | mat4x2(-32.0, 64.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0) | mat4x2(-0.5, -2.25, 0.0, 0.0, -20.125, -20.125, 1.0, 0.0) | mat4x2(1.0, 1.25, 0.0, -2.0, 0.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec2_bool_bvec2_to_mat4x2 + version 310 es + values + { + input bool in0 = [ false | false | true | true | true | false | false | true | false | true ]; + input float in1 = [ 36.8125 | -8.25 | 3.5 | 1.0 | 2.0 | -0.5 | 0.0 | 1.0 | -20.125 | 0.0 ]; + input int in2 = [ -66 | 1 | -192 | 2 | 11 | 0 | 255 | 8 | 5 | -12 ]; + input vec2 in3 = [ vec2(-0.75, -0.0322580645161) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bool in4 = [ true | false | false | false | false | true | true | true | false | true ]; + input bvec2 in5 = [ bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) ]; + output mat4x2 out0 = [ mat4x2(0.0, 36.8125, -66.0, -0.75, -0.0322580645161, 1.0, 0.0, 0.0) | mat4x2(0.0, -8.25, 1.0, -0.75, -0.0322580645161, 0.0, 0.0, 1.0) | mat4x2(1.0, 3.5, -192.0, -32.0, 64.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 1.0, 2.0, 0.0, 0.5, 0.0, 1.0, 1.0) | mat4x2(1.0, 2.0, 11.0, 1.0, 1.25, 0.0, 1.0, 0.0) | mat4x2(0.0, -0.5, 0.0, 1.0, 1.25, 1.0, 0.0, 1.0) | mat4x2(0.0, 0.0, 255.0, -0.5, -2.25, 1.0, 0.0, 0.0) | mat4x2(1.0, 1.0, 8.0, -32.0, 64.0, 1.0, 1.0, 1.0) | mat4x2(0.0, -20.125, 5.0, 0.0, 0.5, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, -12.0, -0.5, -2.25, 1.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bvec2_int_vec4_to_mat4x2 + version 310 es + values + { + input bool in0 = [ false | false | true | false | true | false | true | true | true | false ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) ]; + input int in2 = [ -12 | 8 | 2 | 255 | 5 | -192 | 0 | 11 | 1 | -66 ]; + input vec4 in3 = [ vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + output mat4x2 out0 = [ mat4x2(0.0, 1.0, 0.0, -12.0, 1.0, 1.25, 1.125, 1.75) | mat4x2(0.0, 0.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4x2(1.0, 0.0, 0.0, 2.0, -32.0, 64.0, -51.0, 24.0) | mat4x2(0.0, 0.0, 0.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4x2(1.0, 1.0, 0.0, 5.0, -0.5, -2.25, -4.875, 9.0) | mat4x2(0.0, 0.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0) | mat4x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825) | mat4x2(1.0, 0.0, 1.0, 11.0, -32.0, 64.0, -51.0, 24.0) | mat4x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75) | mat4x2(0.0, 1.0, 1.0, -66.0, 0.0, 0.5, 0.75, 0.825) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec2_bool_to_mat4x2 + version 310 es + values + { + input float in0 = [ 1.0 | -8.25 | -20.125 | 3.5 | -0.5 | 2.0 | 36.8125 | 0.0 ]; + input bvec4 in1 = [ bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) ]; + input ivec2 in2 = [ ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) ]; + input bool in3 = [ true | true | false | true | true | false | false | false ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 0.0, 1.0, -32.0, 64.0, 1.0) | mat4x2(-8.25, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0) | mat4x2(-20.125, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0) | mat4x2(3.5, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4x2(-0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat4x2(2.0, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 0.0) | mat4x2(36.8125, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec4_vec4_vec4_to_mat4x3 + version 310 es + values + { + input vec4 in0 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) ]; + input vec4 in1 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output mat4x3 out0 = [ mat4x3(-0.5, -2.25, -4.875, 9.0, 0.0, 0.5, 0.75, 0.825, -32.0, 64.0, -51.0, 24.0) | mat4x3(1.0, 1.25, 1.125, 1.75, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat4x3(0.0, 0.5, 0.75, 0.825, -32.0, 64.0, -51.0, 24.0, -0.5, -2.25, -4.875, 9.0) | mat4x3(-0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) | mat4x3(-32.0, 64.0, -51.0, 24.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec4_ivec4_ivec4_to_mat4x3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + input ivec4 in1 = [ ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) ]; + input ivec4 in2 = [ ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) ]; + output mat4x3 out0 = [ mat4x3(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) | mat4x3(0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, -2.0, -4.0, 9.0) | mat4x3(0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0) | mat4x3(-32.0, 64.0, -51.0, 24.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat4x3 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + input float in2 = [ -20.125 | 3.5 | 2.0 | -0.5 | -8.25 | 0.0 | 1.0 | 0.0 | 1.0 | 36.8125 ]; + input float in3 = [ 0.0 | -8.25 | 36.8125 | 1.0 | 0.0 | -20.125 | 3.5 | 2.0 | -0.5 | 1.0 ]; + input float in4 = [ 0.0 | 1.0 | 3.5 | -20.125 | 0.0 | 36.8125 | 1.0 | -8.25 | 2.0 | -0.5 ]; + input int in5 = [ 2 | 8 | 1 | -192 | 0 | -12 | 11 | 255 | 5 | -66 ]; + input int in6 = [ 2 | -12 | 5 | 8 | 11 | 255 | 0 | -66 | 1 | -192 ]; + input bool in7 = [ true | true | false | true | false | false | false | true | false | true ]; + input bool in8 = [ true | false | false | true | true | false | true | true | false | false ]; + input bool in9 = [ false | true | false | false | false | false | true | true | true | true ]; + output mat4x3 out0 = [ mat4x3(-0.5, -2.25, 0.0, -2.0, -20.125, 0.0, 0.0, 2.0, 2.0, 1.0, 1.0, 0.0) | mat4x3(0.0, 0.5, -32.0, 64.0, 3.5, -8.25, 1.0, 8.0, -12.0, 1.0, 0.0, 1.0) | mat4x3(0.0, 0.5, 1.0, 1.0, 2.0, 36.8125, 3.5, 1.0, 5.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 1.25, -32.0, 64.0, -0.5, 1.0, -20.125, -192.0, 8.0, 1.0, 1.0, 0.0) | mat4x3(-0.75, -0.0322580645161, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 11.0, 0.0, 1.0, 0.0) | mat4x3(-0.5, -2.25, 0.0, 0.0, 0.0, -20.125, 36.8125, -12.0, 255.0, 0.0, 0.0, 0.0) | mat4x3(-32.0, 64.0, 0.0, 0.0, 1.0, 3.5, 1.0, 11.0, 0.0, 0.0, 1.0, 1.0) | mat4x3(1.0, 1.25, 0.0, -2.0, 0.0, 2.0, -8.25, 255.0, -66.0, 1.0, 1.0, 1.0) | mat4x3(-32.0, 64.0, 0.0, 0.0, 1.0, -0.5, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) | mat4x3(-0.75, -0.0322580645161, 1.0, 1.0, 36.8125, 1.0, -0.5, -66.0, -192.0, 1.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5, in6, in7, in8, in9); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec3_bool_bvec3_float_bool_to_mat4x3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | true | true | false | false | false ]; + input float in1 = [ -8.25 | 2.0 | 1.0 | -0.5 | 0.0 | 0.0 | 36.8125 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ 255 | 2 | 11 | 1 | 8 | -192 | 0 | -66 | -12 | 5 ]; + input vec3 in3 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input bool in4 = [ true | true | false | false | true | false | false | false | true | true ]; + input bvec3 in5 = [ bvec3(false, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(true, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) ]; + input float in6 = [ 1.0 | 0.0 | -0.5 | 36.8125 | 1.0 | -20.125 | 2.0 | 0.0 | -8.25 | 3.5 ]; + input bool in7 = [ true | true | false | false | false | false | true | true | false | true ]; + output mat4x3 out0 = [ mat4x3(1.0, -8.25, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat4x3(1.0, 2.0, 2.0, 0.0, 0.5, 0.75, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) | mat4x3(0.0, 1.0, 11.0, 0.0, 0.5, 0.75, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0) | mat4x3(0.0, -0.5, 1.0, -32.0, 64.0, -51.0, 0.0, 0.0, 1.0, 0.0, 36.8125, 0.0) | mat4x3(1.0, 0.0, 8.0, -0.5, -2.25, -4.875, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0) | mat4x3(1.0, 0.0, -192.0, 1.0, 1.25, 1.125, 0.0, 1.0, 0.0, 0.0, -20.125, 0.0) | mat4x3(1.0, 36.8125, 0.0, -32.0, 64.0, -51.0, 0.0, 1.0, 1.0, 1.0, 2.0, 1.0) | mat4x3(0.0, -20.125, -66.0, 1.0, 1.25, 1.125, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) | mat4x3(0.0, 3.5, -12.0, -0.5, -2.25, -4.875, 1.0, 0.0, 0.0, 0.0, -8.25, 0.0) | mat4x3(0.0, 1.0, 5.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 3.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5, in6, in7); + ${OUTPUT} + } + "" + end + + case bool_bvec4_int_vec4_bool_float_to_mat4x3 + version 310 es + values + { + input bool in0 = [ true | true | true | false | true | false | false | true | false | false ]; + input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, false, false, true) ]; + input int in2 = [ 5 | 11 | 0 | -192 | -66 | 255 | 1 | -12 | 8 | 2 ]; + input vec4 in3 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input bool in4 = [ false | true | true | false | true | false | true | true | false | false ]; + input float in5 = [ -20.125 | 0.0 | 1.0 | -0.5 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 0.0, 5.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, -20.125) | mat4x3(1.0, 0.0, 1.0, 0.0, 0.0, 11.0, -32.0, 64.0, -51.0, 24.0, 1.0, 0.0) | mat4x3(1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0, 0.0, -0.5) | mat4x3(1.0, 1.0, 1.0, 1.0, 1.0, -66.0, 1.0, 1.25, 1.125, 1.75, 1.0, 3.5) | mat4x3(0.0, 1.0, 0.0, 0.0, 1.0, 255.0, -32.0, 64.0, -51.0, 24.0, 0.0, -8.25) | mat4x3(0.0, 1.0, 0.0, 0.0, 1.0, 1.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, -12.0, -0.5, -2.25, -4.875, 9.0, 1.0, 1.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.5, 0.75, 0.825, 0.0, 2.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.5, 0.75, 0.825, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec4_bool_bool_int_to_mat4x3 + version 310 es + values + { + input float in0 = [ 36.8125 | -0.5 | 3.5 | 2.0 | 1.0 | -20.125 | 0.0 | 0.0 | -8.25 | 1.0 ]; + input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) ]; + input ivec4 in2 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, -2, -4, 9) ]; + input bool in3 = [ false | true | false | true | false | false | false | true | true | true ]; + input bool in4 = [ false | true | false | true | false | true | false | false | true | true ]; + input int in5 = [ 2 | 1 | 8 | 11 | 255 | 5 | 0 | -66 | -192 | -12 ]; + output mat4x3 out0 = [ mat4x3(36.8125, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 2.0) | mat4x3(-0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat4x3(3.5, 1.0, 0.0, 0.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 8.0) | mat4x3(2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 11.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 255.0) | mat4x3(-20.125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 5.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, -66.0) | mat4x3(-8.25, 0.0, 1.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, -192.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, -12.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec4_vec4_vec4_vec4_to_mat4 + version 310 es + values + { + input vec4 in0 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in1 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in3 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) ]; + output mat4 out0 = [ mat4(-0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0) | mat4(-32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4(-0.5, -2.25, -4.875, 9.0, -0.5, -2.25, -4.875, 9.0, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat4(1.0, 1.25, 1.125, 1.75, 1.0, 1.25, 1.125, 1.75, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) | mat4(0.0, 0.5, 0.75, 0.825, 0.0, 0.5, 0.75, 0.825, 0.0, 0.5, 0.75, 0.825, -0.5, -2.25, -4.875, 9.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case ivec4_ivec4_ivec4_ivec4_to_mat4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) ]; + input ivec4 in1 = [ ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + input ivec4 in2 = [ ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + input ivec4 in3 = [ ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ]; + output mat4 out0 = [ mat4(-32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0) | mat4(0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0) | mat4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bvec4_bvec4_bvec4_bvec4_to_mat4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(true, false, false, true) ]; + input bvec4 in1 = [ bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + input bvec4 in2 = [ bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(true, false, false, true) ]; + input bvec4 in3 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_ivec3_bvec3_vec4_ivec2_float_vec2_to_mat4 + version 310 es + values + { + input float in0 = [ 2.0 | 1.0 | 3.5 | 0.0 | -20.125 | 36.8125 | -0.5 | -8.25 ]; + input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(0, -2, -4) ]; + input bvec3 in2 = [ bvec3(true, false, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) ]; + input vec4 in3 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input ivec2 in4 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) ]; + input float in5 = [ 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 | -20.125 | 1.0 | -0.5 ]; + input vec2 in6 = [ vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(1.0, 1.25) ]; + output mat4 out0 = [ mat4(2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -0.5, -2.25, -4.875, 9.0, 0.0, 0.0, 2.0, 0.0, 0.5) | mat4(1.0, -32.0, 64.0, -51.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0, 3.5, -0.5, -2.25) | mat4(3.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0, -2.0, 36.8125, -32.0, 64.0) | mat4(0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, -0.5, -2.25, -4.875, 9.0, 0.0, 0.0, -8.25, 0.0, 0.5) | mat4(-20.125, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0, 0.0, -0.75, -0.0322580645161) | mat4(36.8125, 0.0, -2.0, -4.0, 0.0, 1.0, 0.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -20.125, -0.5, -2.25) | mat4(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 1.0, 1.0, 1.25) | mat4(-8.25, 0.0, -2.0, -4.0, 0.0, 1.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0, -2.0, -0.5, 1.0, 1.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3, in4, in5, in6); + ${OUTPUT} + } + "" + end + + +end # matrix_combine diff --git a/vulkan/glsl/es310/functions.test b/vulkan/glsl/es310/functions.test new file mode 100644 index 0000000..db087d4 --- /dev/null +++ b/vulkan/glsl/es310/functions.test @@ -0,0 +1,3151 @@ +# Tests todo: +# - inout with varyings, attributes, uniforms (and arrays of 'em) +# - inout with arrays, array elements +# - inout with array elements +# - inout by-value semantics (arrays & elements & structs) + +# Done: +# - control flow: return, return in loop, etc. + +group datatypes "Function Parameter Data Types" + + case float_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + return -a; + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_vec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 1.0) | vec2(2.0, 2.5) ]; + output float out0 = [ -1.0 | -4.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (vec2 a) + { + return -(a.x + a.y); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (vec3 a) + { + return -(a.x + a.y + a.z); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_vec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (vec4 a) + { + return -(a.x + a.y + a.z + a.w); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_mat2 + version 310 es + values + { + input mat2 in0 = [ mat2(0.0, 1.0, -2.0, 0.5) | mat2(2.0, 2.5, 4.0, -7.0) ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (mat2 a) + { + return -(a[0][0] + a[0][1] + a[1][0] + a[1][1]); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_mat3 + version 310 es + values + { + input mat3 in0 = [ mat3(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0) | mat3(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0) ]; + output float out0 = [ -4.5 | -5.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (mat3 a) + { + return -(a[0][0] + a[0][1] + a[0][2] + a[1][0] + a[1][1] + a[1][2] + a[2][0] + a[2][1] + a[2][2]); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_mat4 + version 310 es + values + { + input mat4 in0 = [ mat4(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -2.0, -2.0) | mat4(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0, 0.0, 2.0, -1.0, 1.0, 0.0, -1.0, 3.0) ]; + output float out0 = [ -5.5 | -9.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (mat4 a) + { + return -(a[0][0] + a[0][1] + a[0][2] + a[0][3] + a[1][0] + a[1][1] + a[1][2] + a[1][3] + a[2][0] + a[2][1] + a[2][2] + a[2][3] + a[3][0] + a[3][1] + a[3][2] + a[3][3]); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_int + version 310 es + values + { + input int in0 = [ -1 | 0 | 1 | 4 ]; + output int out0 = [ 1 | 0 | -1 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int a) + { + return -a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_ivec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(-1, 0) | ivec2(1, 4) ]; + output int out0 = [ 1 | -5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (ivec2 a) + { + return -(a.x + a.y); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_ivec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(-1, 0, 2) | ivec3(1, 4, -8) ]; + output int out0 = [ -1 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (ivec3 a) + { + return -(a.x + a.y + a.z); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_ivec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; + output int out0 = [ -3 | 1 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (ivec4 a) + { + return -(a.x + a.y + a.z + a.w); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uint + version 310 es + values + { + input uint in0 = [ 1 | 0 | 2 | 4 ]; + output uint out0 = [ 1 | 0 | 4 | 16 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uint a) + { + return a*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uvec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(1, 0) | uvec2(2, 4) ]; + output uint out0 = [ 1 | 6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uvec2 a) + { + return (a.x + a.y); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uvec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(1, 0, 2) | uvec3(1, 4, 8) ]; + output uint out0 = [ 3 | 13 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uvec3 a) + { + return (a.x + a.y + a.z); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uvec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(1, 0, 2, 2) | uvec4(1, 4, 8, 2) ]; + output uint out0 = [ 5 | 15 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uvec4 a) + { + return (a.x + a.y + a.z + a.w); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bool a) + { + return !a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bvec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, true) ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bvec2 a) + { + return !(a.x == a.y); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, true, false) | bvec3(true, false, false) ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bvec3 a) + { + return (a.x == a.y) == a.z; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bvec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, true, false) | bvec4(false, false, true, true) | bvec4(true, false, false, true) ]; + output bool out0 = [ false | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bvec4 a) + { + return ((a.x == a.y) == (a.z == a.w)); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case mat2 + version 310 es + values + { + input mat2 in0 = [ mat2(-2.0, 0.5, -1.0, 1.0) | mat2(1.0, -3.5, -3.5, 2.5) | mat2(-2.0, -2.0, 3.5, 0.0) ]; + output mat2 out0 = [ mat2(4.0, -1.0, 2.0, -2.0) | mat2(-2.0, 7.0, 7.0, -5.0) | mat2(4.0, 4.0, -7.0, -0.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat2 func (mat2 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat2x3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(2.5, 0.0, 1.0, -2.5, 1.0, 3.0) | mat2x3(0.0, 2.0, 1.5, -3.5, 2.0, 0.5) | mat2x3(-1.5, -3.5, 2.5, 0.0, 1.5, 3.0) ]; + output mat2x3 out0 = [ mat2x3(-5.0, -0.0, -2.0, 5.0, -2.0, -6.0) | mat2x3(-0.0, -4.0, -3.0, 7.0, -4.0, -1.0) | mat2x3(3.0, 7.0, -5.0, -0.0, -3.0, -6.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat2x3 func (mat2x3 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat2x4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.5, 3.0, -1.0, 2.5, -0.5, 3.5, 3.0, -3.0) | mat2x4(-2.5, -2.0, 3.5, -0.5, 1.0, -1.5, 0.0, -1.0) | mat2x4(-1.0, 0.5, 0.5, 3.0, 1.5, 3.0, 2.5, 3.5) ]; + output mat2x4 out0 = [ mat2x4(-3.0, -6.0, 2.0, -5.0, 1.0, -7.0, -6.0, 6.0) | mat2x4(5.0, 4.0, -7.0, 1.0, -2.0, 3.0, -0.0, 2.0) | mat2x4(2.0, -1.0, -1.0, -6.0, -3.0, -6.0, -5.0, -7.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat2x4 func (mat2x4 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat3x2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.5, -2.5, 2.5, 3.5, 3.0, 0.5) | mat3x2(1.5, -2.0, 2.5, 0.5, -1.5, -3.5) | mat3x2(2.5, 3.5, -3.0, 2.5, -0.5, -2.5) ]; + output mat3x2 out0 = [ mat3x2(-3.0, 5.0, -5.0, -7.0, -6.0, -1.0) | mat3x2(-3.0, 4.0, -5.0, -1.0, 3.0, 7.0) | mat3x2(-5.0, -7.0, 6.0, -5.0, 1.0, 5.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3x2 func (mat3x2 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat3 + version 310 es + values + { + input mat3 in0 = [ mat3(-1.5, 2.0, 3.0, -3.5, 1.0, -3.5, 1.5, -1.5, 3.0) | mat3(3.5, 0.0, 3.5, -1.5, -3.0, 0.5, -3.5, -2.5, -0.5) | mat3(1.0, -2.5, -3.5, 3.0, -1.5, 3.5, 3.0, -1.0, -0.5) ]; + output mat3 out0 = [ mat3(3.0, -4.0, -6.0, 7.0, -2.0, 7.0, -3.0, 3.0, -6.0) | mat3(-7.0, -0.0, -7.0, 3.0, 6.0, -1.0, 7.0, 5.0, 1.0) | mat3(-2.0, 5.0, 7.0, -6.0, 3.0, -7.0, -6.0, 2.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3 func (mat3 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat3x4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(0.0, 1.0, 0.5, 0.5, 1.0, 3.5, 0.0, -0.5, 1.5, -2.0, -1.5, 3.5) | mat3x4(0.0, 0.5, -3.5, -0.5, 0.5, -3.5, 1.0, 1.0, -3.5, 1.0, -0.5, 1.5) | mat3x4(-1.0, 1.5, 2.0, -3.5, -3.5, 1.5, 3.5, -2.0, -0.5, 0.5, -1.5, -1.0) ]; + output mat3x4 out0 = [ mat3x4(-0.0, -2.0, -1.0, -1.0, -2.0, -7.0, -0.0, 1.0, -3.0, 4.0, 3.0, -7.0) | mat3x4(-0.0, -1.0, 7.0, 1.0, -1.0, 7.0, -2.0, -2.0, 7.0, -2.0, 1.0, -3.0) | mat3x4(2.0, -3.0, -4.0, 7.0, 7.0, -3.0, -7.0, 4.0, 1.0, -1.0, 3.0, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3x4 func (mat3x4 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat4x2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(-1.5, -1.0, 0.5, -1.5, -1.0, 2.0, -3.5, 0.5) | mat4x2(2.0, -1.5, -2.0, 2.5, -2.0, -2.5, -0.5, 1.5) | mat4x2(-3.0, -1.5, -1.0, 2.5, -0.5, 2.5, -2.5, -1.0) ]; + output mat4x2 out0 = [ mat4x2(3.0, 2.0, -1.0, 3.0, 2.0, -4.0, 7.0, -1.0) | mat4x2(-4.0, 3.0, 4.0, -5.0, 4.0, 5.0, 1.0, -3.0) | mat4x2(6.0, 3.0, 2.0, -5.0, 1.0, -5.0, 5.0, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat4x2 func (mat4x2 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat4x3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 3.0, -0.5, -2.0, -3.0, 0.0, -2.5, 2.5, 2.5, -2.5, -1.5, 2.5) | mat4x3(1.0, 2.5, -1.0, -3.0, -1.5, 2.0, -1.5, -1.0, -0.5, -0.5, -0.5, 3.0) | mat4x3(-2.5, -3.5, 3.5, 3.0, 3.5, -0.5, 3.5, 3.0, -2.0, 2.0, 2.5, 1.0) ]; + output mat4x3 out0 = [ mat4x3(-2.0, -6.0, 1.0, 4.0, 6.0, -0.0, 5.0, -5.0, -5.0, 5.0, 3.0, -5.0) | mat4x3(-2.0, -5.0, 2.0, 6.0, 3.0, -4.0, 3.0, 2.0, 1.0, 1.0, 1.0, -6.0) | mat4x3(5.0, 7.0, -7.0, -6.0, -7.0, 1.0, -7.0, -6.0, 4.0, -4.0, -5.0, -2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat4x3 func (mat4x3 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat4 + version 310 es + values + { + input mat4 in0 = [ mat4(0.0, -1.5, -1.0, -2.0, -3.0, 0.5, -1.5, 2.5, -3.5, 3.0, 1.5, 3.0, 3.0, 3.0, 0.5, -3.5) | mat4(2.0, -2.5, -1.5, 1.0, 0.0, -0.5, 3.5, 1.0, -1.0, -2.0, 2.5, 0.0, 2.0, -1.0, -2.5, 0.5) | mat4(2.5, -2.5, 2.0, 3.0, 2.5, 2.5, -3.5, 1.0, 2.5, -3.5, -1.5, -1.5, 0.0, -0.5, 0.0, 2.0) ]; + output mat4 out0 = [ mat4(-0.0, 3.0, 2.0, 4.0, 6.0, -1.0, 3.0, -5.0, 7.0, -6.0, -3.0, -6.0, -6.0, -6.0, -1.0, 7.0) | mat4(-4.0, 5.0, 3.0, -2.0, -0.0, 1.0, -7.0, -2.0, 2.0, 4.0, -5.0, -0.0, -4.0, 2.0, 5.0, -1.0) | mat4(-5.0, 5.0, -4.0, -6.0, -5.0, -5.0, 7.0, -2.0, -5.0, 7.0, 3.0, 3.0, -0.0, 1.0, -0.0, -4.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat4 func (mat4 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + + float func (Pos p) + { + return -(p.a + p.b + p.c); + } + + void main() + { + Pos p = Pos(in0.x, in0.y, in0.z); + out0 = func(p); + ${OUTPUT} + } + "" + end + + case struct_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + + Pos func (Pos p) + { + return Pos(-p.a, -p.b, -p.c); + } + + void main() + { + Pos p = Pos(in0.x, in0.y, in0.z); + p = func(p); + out0 = p.a + p.b + p.c; + ${OUTPUT} + } + "" + end + + case struct_nested_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + struct Line { Pos start, end; }; + + Line func (Pos p) + { + return Line(p, Pos(-p.a, -p.b, -p.c)); + } + + float sum (Pos p) + { + return (p.a + p.b + p.c); + } + + void main() + { + Pos p = Pos(in0.x, in0.y, in0.z); + Line line = func(p); + out0 = sum(line.start) + (2.0 * sum(line.end)); + ${OUTPUT} + } + "" + end + + +end # datatypes + +group qualifiers "Function Parameter Qualifiers" + + case in_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (in float a) + { + a = -a; + return 2.0 * a; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out float a) + { + a = -1.0; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout float a) + { + a = -a; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_lowp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (in lowp float a) + { + a = -a; + return 2.0 * a; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_lowp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out lowp float a) + { + a = -1.0; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_lowp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout lowp float a) + { + a = -a; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_highp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (in highp float a) + { + a = -a; + return 2.0 * a; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_highp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out highp float a) + { + a = -1.0; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_highp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout highp float a) + { + a = -a; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case const_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (const float a) + { + float b = -a; + return 2.0 * b; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case const_in_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (const in float a) + { + float b = -a; + return 2.0 * b; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case in_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in int a) + { + a = -a; + return 2 * a; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out int a) + { + a = -1; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout int a) + { + a = -a; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_lowp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in lowp int a) + { + a = -a; + return 2 * a; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_lowp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out lowp int a) + { + a = -1; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_lowp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout lowp int a) + { + a = -a; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_highp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in highp int a) + { + a = -a; + return 2 * a; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_highp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out highp int a) + { + a = -1; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_highp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout highp int a) + { + a = -a; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case const_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (const int a) + { + int b = -a; + return 2 * b; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case const_in_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (const in int a) + { + int b = -a; + return 2 * b; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case in_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (in bool a) + { + a = !a; + return a; + } + + void main() + { + ${SETUP} + bool f = in0; + bool g = func(f); + out0 = (f != g); + ${OUTPUT} + } + "" + end + + case out_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out bool a) + { + a = false; + } + + void main() + { + ${SETUP} + bool f = true; + func(f); + out0 = (in0 == f); + ${OUTPUT} + } + "" + end + + case inout_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout bool a) + { + a = !a; + } + + void main() + { + ${SETUP} + bool f = true; + func(f); + out0 = (in0 == f); + ${OUTPUT} + } + "" + end + + case const_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (const bool a) + { + bool b = !a; + return b; + } + + void main() + { + ${SETUP} + bool f = in0; + bool g = func(f); + out0 = (f != g); + ${OUTPUT} + } + "" + end + +end # qualifiers + +group declarations "Function Declarations" + + case basic + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void); + + float func (void) + { + return -1.0; + } + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + "" + end + + case basic_arg + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float f); + + float func (float f) + { + return -f; + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case define_after_use + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void); + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + + float func (void) + { + return -1.0; + } + "" + end + + case double_declare + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void); + + float func (void); + + float func (void) + { + return -1.0; + } + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + "" + end + + case declare_after_define + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void) + { + return -1.0; + } + + float func (void); + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + "" + end + + case void_vs_no_void + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (); + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + + float func (void) + { + return -1.0; + } + "" + end + + case in_vs_no_in + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float f); + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + + float func (in float f) + { + return -f; + } + "" + end + + case default_vs_explicit_precision + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + precision mediump float; + + float func (float f); + + precision highp float; + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + + float func (mediump float f) + { + return -f; + } + "" + end + + +end # declarations + +group overloading "Function Overloading" + + case user_func_arg_type_simple + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (float a) + { + return -a; + } + + int func (int a) + { + return -a; + } + + void main() + { + out0 = func(in0) * float(func(-1)); + ${OUTPUT} + } + "" + end + + case user_func_arg_float_types + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (float a) { return -a; } + vec2 func (vec2 a) { return a.yx; } + vec3 func (vec3 a) { return a.xxx; } + vec4 func (vec4 a) { return a.wwww; } + + void main() + { + out0 = func(func(func(func(vec4(in0)).xyz).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_int_types + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int a) { return -a; } + ivec2 func (ivec2 a) { return a.yx; } + ivec3 func (ivec3 a) { return a.xxx; } + ivec4 func (ivec4 a) { return a.wwww; } + + void main() + { + ${SETUP} + out0 = func(func(func(func(ivec4(in0)).xyz).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_bool_types + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bool a) { return !a; } + bvec2 func (bvec2 a) { return a.yx; } + bvec3 func (bvec3 a) { return a.xxx; } + bvec4 func (bvec4 a) { return a.wwww; } + + void main() + { + ${SETUP} + out0 = func(func(func(func(bvec4(in0)).xyz).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_basic_types + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (float a) { return -a; } + vec2 func (vec2 a) { return a.yx; } + vec3 func (vec3 a) { return a.xxx; } + vec4 func (vec4 a) { return a.wwww; } + int func (int a) { return -a; } + ivec2 func (ivec2 a) { return a.yx; } + ivec3 func (ivec3 a) { return a.xxx; } + ivec4 func (ivec4 a) { return a.wwww; } + bool func (bool a) { return !a; } + bvec2 func (bvec2 a) { return a.yx; } + bvec3 func (bvec3 a) { return a.xxx; } + bvec4 func (bvec4 a) { return a.wwww; } + + void main() + { + ${SETUP} + if (func(func(bvec4(false)).x)) + out0 = func(in0) * float(func(-1)); + else + out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_complex_types + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + struct Line { Pos start, end; }; + + float func (float a) { return -a; } + float func (float a[4]) { return a[0] + a[3]; } + vec2 func (vec2 a) { return a.yx; } + vec3 func (vec3 a) { return a.xxx; } + vec4 func (vec4 a) { return a.wwww; } + vec4 func (vec4 a[4]) { return a[1] + a[2]; } + int func (int a) { return -a; } + ivec2 func (ivec2 a) { return a.yx; } + ivec3 func (ivec3 a) { return a.xxx; } + ivec4 func (ivec4 a) { return a.wwww; } + bool func (bool a) { return !a; } + bvec2 func (bvec2 a) { return a.yx; } + bvec3 func (bvec3 a) { return a.xxx; } + bvec4 func (bvec4 a) { return a.wwww; } + Pos func (Pos a) { return a; } + Line func (Line a) { return Line(a.end, a.start); } + + void main() + { + ${SETUP} + float arr[4]; + vec4 arr2[4]; + out0 = func(arr) + func(arr2).x; + if (func(func(bvec4(false)).x)) + out0 = func(in0) * float(func(-1)); + else + out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arguments + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + return -a; + } + + float func (float a, float b) + { + return a * b; + } + + void main() + { + out0 = func(in0) * func(-0.5, -2.0); + ${OUTPUT} + } + "" + end + + case array_size + version 310 es + values + { + output float out0 = [ 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float f[3]) + { + return f[0]; + } + + float func (float f[4]) + { + return f[1]; + } + + void main () + { + ${SETUP} + float[4] x = float[4] (-1.0, 1.0, 0.0, 0.0); + out0 = func(x); + ${OUTPUT} + } + "" + end + +end # overloading + +group array_arguments "Arrays as Arguments" + + case local_in_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (in float a[4]) + { + a[0] = -1.0; + a[2] = -4.0; + a[3] = -3.0 * a[1]; + return a[0]; + } + + void main() + { + float arr[4]; + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + float f = func(arr); + out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case global_in_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (in float a[4]) + { + a[0] = -1.0; + a[2] = -4.0; + a[3] = -3.0 * a[1]; + return a[0]; + } + + float arr[4]; + + void main() + { + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + float f = func(arr); + out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case local_in_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 1, 2, -4) | ivec4(-7, -11, 13, 19) ]; + output ivec4 out0 = [ ivec4(0, -1, -2, 4) | ivec4(7, 11, -13, -19) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in int a[4]) + { + a[0] = -1; + a[2] = -4; + a[3] = -3 * a[1]; + return a[0]; + } + + void main() + { + ${SETUP} + int arr[4]; + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + int f = func(arr); + out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case global_in_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 1, 2, 4) | ivec4(-7, -11, 13, 19) ]; + output ivec4 out0 = [ ivec4(0, -1, -2, -4) | ivec4(7, 11, -13, -19) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in int a[4]) + { + a[0] = -1; + a[2] = -4; + a[3] = -3 * a[1]; + return a[0]; + } + + int arr[4]; + + void main() + { + ${SETUP} + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + int f = func(arr); + out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + + "" + end + + case local_in_bool + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (in bool a[4]) + { + a[0] = false; + a[2] = true; + a[3] = !a[1]; + return a[0]; + } + + void main() + { + ${SETUP} + bool arr[4]; + arr[0] = !in0.x; + arr[1] = !in0.y; + arr[2] = !in0.z; + arr[3] = !in0.w; + func(arr); + out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case global_in_bool + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (in bool a[4]) + { + a[0] = false; + a[2] = true; + a[3] = !a[1]; + return a[0]; + } + + bool arr[4]; + + void main() + { + ${SETUP} + arr[0] = !in0.x; + arr[1] = !in0.y; + arr[2] = !in0.z; + arr[3] = !in0.w; + func(arr); + out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case test_helpers + version 310 es + desc "Check that helper functions are supported properly." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output float out0 = [ 1.0 | 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + void main() + { + float arr[4]; + set(arr, in0); + negate(arr); + out0 = float(test(arr, -in0)); + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_local_in_on_call + version 310 es + desc "Check that local 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (in float a[4], in float b[4]) + { + a[0] = 2.123; + a[2] = -4.123; + return isEqual(a, b) ? 1.0 : -1.0; + } + + void main() + { + float arr[4]; + set(arr, in0); + out0 = in0 * func(arr, arr); + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_global_in_on_call + version 310 es + desc "Check that global 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (in float a[4], in float b[4]) + { + a[0] = 2.123; + a[2] = -4.123; + return isEqual(a, b) ? 1.0 : -1.0; + } + + float arr[4]; + + void main() + { + set(arr, in0); + out0 = in0 * func(arr, arr); + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_local_inout_on_call + version 310 es + desc "Check that local 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (inout float a[4], inout float b[4]) + { + negate(a); + return isEqual(a, b) ? 1.0 : -1.0; + } + + void main() + { + float arr[4]; + set(arr, in0); + float m = func(arr, arr); // returns -1.0 + float n = float(test(arr, in0) || test(arr, -in0)); + out0 = in0 * m * n; + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_global_inout_on_call + version 310 es + desc "Check that global 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (in float a[4], in float b[4]) + { + negate(a); + return isEqual(a, b) ? 1.0 : -1.0; + } + + float arr[4]; + + void main() + { + set(arr, in0); + float m = func(arr, arr); // returns -1.0 + float n = float(test(arr, in0) || test(arr, -in0)); + out0 = in0 * m * n; + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + +# vec4 get (in float arr[4]); +# void set (out float arr[4], vec4 val); +# void negate (inout float arr[4]); +# bool test (in float arr[4], vec4 ref); +# bool isEqual (in float a[4], in float b[4]); + +# float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } +# vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } +# void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } +# void negate (inout float arr[4]) { set(arr, -get(arr)); } +# bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } +# bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + +end # array_arguments + +#group qualifiers "Function Parameter Qualifiers" +# +#end # qualifiers + +group control_flow "Control Flow In Functions" + + case simple_return + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + return -a; + a = a * -1.0; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_if + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + if (a != 0.0) + return -a; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_else + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + if (a == 0.0) + return 1.0; + else + return -a; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_loop + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + while (a < 100.0) + return -a; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_loop_if + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + while (a < 100.0) + { + a = -a; + if (a != 0.0) + return a; + else + return -1.0; + } + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_loop + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 5; i++) + a = -a; + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_break + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 6; i++) + { + a = -a; + if (i == 4) + break; + } + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_continue + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 6; i++) + { + if (i == 4) + continue; + a = -a; + } + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_nested_loop + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 6; i++) + { + a = -a; + for (int j = 0; j < 4; j++) + { + a = -a; + if (i == 1) + return a; + } + if (i == 4) + return 1.0; + } + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_loop_sequence + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + int i; + for (i = 0; i < 6; i++) // negate a + { + a = -a; + if (i == 4) + a = -a; + } + + for (; i < 10; i++) // keep a + { + if (i == 8) + continue; + else if (i == 9) + break; + a = -a; + } + + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case mixed_return_break_continue + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + int i; + for (i = 0; i < 6; i++) + { + if (i == 0) + continue; + else if (i == 1) + { + } + else if (i == 3) + break; + else + return a; + a = -a; + } + + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + +end # control_flow + +group misc "Miscellaneous" + + case multi_arg_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; + output float out0 = [ 0.5 | -1.5 ]; # -sum(in0) + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float sum(vec4 v) { return (v.x + v.y + v.z + v.w); } + + float func (float a, vec3 b, vec2 c, vec2 d, vec4 e) + { + return -sum(vec4(a, b) + vec4(c, d)) + sum(e); + } + + void main() + { + ${SETUP} + out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); + ${OUTPUT} + } + "" + end + + case multi_arg_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; + output int out0 = [ -3 | 1 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int sum(ivec4 v) { return (v.x + v.y + v.z + v.w); } + + int func (int a, ivec3 b, ivec2 c, ivec2 d, ivec4 e) + { + return -sum(ivec4(a, b) + ivec4(c, d)) + sum(e); + } + + void main() + { + ${SETUP} + out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); + ${OUTPUT} + } + "" + end + + case argument_eval_order_1 + version 310 es + values + { + input int in0 = [ 0 | 1 | 3 | 5 ]; + output int out0 = [ -1 | 5 | 11 | 17 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (float a, int b, bool c, int d) + { + if (c) + return b + int(a) + d; + else + return -1; + } + + void main () + { + ${SETUP} + float v0 = float(in0); + int v1 = in0; + out0 = func((v0 += 1.0), v1++, (v0 > 1.5), v1); + ${OUTPUT} + } + "" + end + + case argument_eval_order_2 + version 310 es + values + { + input int in0 = [ 0 | -1 | 3 | 5 ]; + output int out0 = [ 3 | -1 | 9 | 13 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int g; + + int modG (int v) + { + g += v; + return v; + } + + int func (float a, int b, bool c, int d) + { + if (c) + return b + int(a) + d; + else + return -1; + } + + void main () + { + ${SETUP} + out0 = func(float(g = in0), modG(2), --g > 0, g); + ${OUTPUT} + } + "" + end + +end # misc diff --git a/vulkan/glsl/es310/linkage.test b/vulkan/glsl/es310/linkage.test new file mode 100644 index 0000000..48402bb --- /dev/null +++ b/vulkan/glsl/es310/linkage.test @@ -0,0 +1,2179 @@ + +# Varying tests +group varying "Varying linkage" + + # Linking rules + group rules "Varying linking rules" + # declared in vertex shader, no reference in frag shader + case vertex_declare + version 310 es + desc "varying declared in vertex shader, no reference in fragment shader" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # declared in vertex shader, declared in frag shader + case both_declare + version 310 es + desc "varying declared in both vertex and fragment shader, but not used" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # vec4 vs vec3 + case legal_mismatch_vec4_vec3 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec4 to vec3)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec4 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + var.w = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump vec3 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var.x + var.y + var.z); + } + "" + end + + # vec4 vs vec2 + case legal_mismatch_vec4_vec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec4 to vec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec4 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + var.w = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump vec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var.x + var.y); + } + "" + end + + # vec4 vs float + case legal_mismatch_vec4_float + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec4 to float)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec4 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + var.w = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var); + } + "" + end + + # vec3 vs vec2 + case legal_mismatch_vec3_vec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec3 to vec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec3 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump vec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var.x + var.y); + } + "" + end + + # vec3 vs float + case legal_mismatch_vec3_float + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec3 to float)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec3 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var); + } + "" + end + + # vec2 vs float + case legal_mismatch_vec2_float + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec2 to float)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec2 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var); + } + "" + end + + # ivec4 vs ivec3 + case legal_mismatch_ivec4_ivec3 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec4 to ivec3)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec4 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + var.w = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat ivec3 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var.x + var.y + var.z == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec4 vs ivec2 + case legal_mismatch_ivec4_ivec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec4 to ivec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec4 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + var.w = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat ivec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var.x + var.y == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec4 vs int + case legal_mismatch_ivec4_int + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec4 to int)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec4 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + var.w = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat int var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec3 vs ivec2 + case legal_mismatch_ivec3_ivec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec3 to ivec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec3 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat ivec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var.x + var.y == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec3 vs int + case legal_mismatch_ivec3_int + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec3 to int)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec3 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat int var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec2 vs int + case legal_mismatch_ivec2_int + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec2 to int)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec2 var; + void main() + { + var.x = 0; + var.y = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat int var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # declared in vertex shader, static use in frag shader + case vertex_declare_fragment_use + version 310 es + desc "varying declared in both shaders, statically used in fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (u_false) + ${FRAG_COLOR} = vec4(var); + else + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # static use in vertex shader, no reference in fragment shader + case vertex_use_fragment_declare + version 310 es + desc "varying declared and statically used in vertex shader, no reference in fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + if (u_false) + var = 1.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # static use in vertex shader, declared in fragment shader + case vertex_use_declare_fragment + version 310 es + desc "varying declared and statically used in vertex shader, only declared in fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + if (u_false) + var = 1.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # static use in vertex shader, used in fragment shader + case vertex_use_fragment_use + version 310 es + desc "varying statically used in both vertex and fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + if (u_false) + var = 1.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mediump float var; + void main() + { + if (u_false) + ${FRAG_COLOR} = vec4(var); + else + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # different interpolation + case differing_interpolation_2 + version 310 es + desc "varying interpolation different (smooth vs. centroid)" + values + { + input float in0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; + } + + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) smooth out mediump float var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) centroid in mediump float var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + # differing name (linking is done by location only in SPIR-V) + case differing_name_1 + version 310 es + desc "varying declared with matching location but different name" + values + { + input float in0 = [ 2.0 | 5.0 | -3.0 | 4.0 ]; + input float in1 = [ 4.0 | 1.0 | -0.5 | 2.0 ]; + output float out0 = [ -2.0 | 4.0 | -2.5 | 2.0 ]; + } + + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out highp float vtxVarB; + layout(location = 2) out highp float vtxVarA; + void main() + { + vtxVarA = in0; + vtxVarB = in1; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 2) in highp float fragVarA; + layout(location = 0) in highp float fragVarB; + void main() + { + out0 = fragVarA - fragVarB; + ${FRAGMENT_OUTPUT} + } + "" + end + + # differing name (linking is done by location only in SPIR-V) + case differing_name_2 + version 310 es + desc "varying declared with matching location but different name" + values + { + input float in0 = [ 2.0 | 5.0 | -3.0 | 4.0 ]; + input float in1 = [ 4.0 | 1.0 | -0.5 | 2.0 ]; + output float out0 = [ -2.0 | 4.0 | -2.5 | 2.0 ]; + } + + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out highp float varA; + layout(location = 2) out highp float varB; + void main() + { + varA = in0; + varB = in1; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 2) in highp float varA; + layout(location = 0) in highp float varB; + void main() + { + out0 = varB - varA; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group basic_types "Basic varying types" + case float + version 310 es + desc "varying of type float" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out float var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in float var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec2 + version 310 es + desc "varying of type vec2" + values + { + input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out vec2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in vec2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec3 + version 310 es + desc "varying of type vec3" + values + { + input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out vec3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in vec3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec4 + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2 + version 310 es + desc "varying of type mat2" + values + { + input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x3 + version 310 es + desc "varying of type mat2x3" + values + { + input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat2x3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat2x3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x4 + version 310 es + desc "varying of type mat2x4" + values + { + input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat2x4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat2x4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x2 + version 310 es + desc "varying of type mat3x2" + values + { + input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat3x2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat3x2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3 + version 310 es + desc "varying of type mat3" + values + { + input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x4 + version 310 es + desc "varying of type mat3x4" + values + { + input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat3x4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat3x4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x2 + version 310 es + desc "varying of type mat4x2" + values + { + input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat4x2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat4x2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x3 + version 310 es + desc "varying of type mat4x3" + values + { + input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat4x3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat4x3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4 + version 310 es + desc "varying of type mat4" + values + { + input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case int + version 310 es + desc "varying of type int" + values + { + input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump int var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in int var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec2 + version 310 es + desc "varying of type ivec2" + values + { + input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump ivec2 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in ivec2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec3 + version 310 es + desc "varying of type ivec3" + values + { + input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump ivec3 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in ivec3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec4 + version 310 es + desc "varying of type ivec4" + values + { + input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump ivec4 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in ivec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uint + version 310 es + desc "varying of type int" + values + { + input uint in0 = [ 1 | 2 | 3 | 16 ]; + output uint out0 = [ 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uint var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uint var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec2 + version 310 es + desc "varying of type uvec2" + values + { + input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uvec2 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uvec2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec3 + version 310 es + desc "varying of type uvec3" + values + { + input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uvec3 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uvec3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec4 + version 310 es + desc "varying of type uvec4" + values + { + input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uvec4 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uvec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group struct "Structure varyings" + case float + version 310 es + desc "varying of type float inside struct" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump float a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump float a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec2 + version 310 es + desc "varying of type vec2 inside struct" + values + { + input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump vec2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump vec2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec3 + version 310 es + desc "varying of type vec3 inside struct" + values + { + input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump vec3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump vec3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec4 + version 310 es + desc "varying of type vec4 inside struct" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump vec4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump vec4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2 + version 310 es + desc "varying of type mat2 inside struct" + values + { + input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x3 + version 310 es + desc "varying of type mat2x3 inside struct" + values + { + input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat2x3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat2x3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x4 + version 310 es + desc "varying of type mat2x4 inside struct" + values + { + input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat2x4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat2x4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x2 + version 310 es + desc "varying of type mat3x2 inside struct" + values + { + input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat3x2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat3x2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3 + version 310 es + desc "varying of type mat3 inside struct" + values + { + input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x4 + version 310 es + desc "varying of type mat3x4 inside struct" + values + { + input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat3x4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat3x4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x2 + version 310 es + desc "varying of type mat4x2 inside struct" + values + { + input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat4x2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat4x2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x3 + version 310 es + desc "varying of type mat4x3 inside struct" + values + { + input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat4x3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat4x3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4 + version 310 es + desc "varying of type mat4 inside struct" + values + { + input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case int + version 310 es + desc "varying of type int inside struct" + values + { + input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump int a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump int a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec2 + version 310 es + desc "varying of type ivec2 inside struct" + values + { + input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump ivec2 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump ivec2 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec3 + version 310 es + desc "varying of type ivec3 inside struct" + values + { + input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump ivec3 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump ivec3 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec4 + version 310 es + desc "varying of type ivec4 inside struct" + values + { + input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump ivec4 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump ivec4 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uint + version 310 es + desc "varying of type uint in struct" + values + { + input uint in0 = [ 1 | 2 | 3 | 16 ]; + output uint out0 = [ 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uint a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uint a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec2 + version 310 es + desc "varying of type uvec2 inside struct" + values + { + input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uvec2 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uvec2 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec3 + version 310 es + desc "varying of type uvec3 inside struct" + values + { + input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uvec3 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uvec3 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec4 + version 310 es + desc "varying of type uvec4 inside struct" + values + { + input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uvec4 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uvec4 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case float_vec3 + version 310 es + desc "varyings of type float and vec3 inside struct" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + input vec3 in1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump float a; highp vec3 b; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + var.b = in1; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump float a; highp vec3 b; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + out1 = var.b; + ${FRAGMENT_OUTPUT} + } + "" + end + + case float_uvec2_vec3 + version 310 es + desc "varyings of type float and vec3 inside struct" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + input uvec2 in1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; + output uvec2 out1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; + input vec3 in2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump float a; highp uvec2 b; highp vec3 c; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + var.b = in1; + var.c = in2; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump float a; highp uvec2 b; highp vec3 c; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + out1 = var.b; + out2 = var.c; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group interpolation "Varying interpolation modes" + case smooth + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) smooth out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) smooth in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case centroid + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) centroid out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) centroid in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case flat + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group usage "Varying usage in shaders" + case readback_1 + version 310 es + desc "read back (an already written) varying in the vertex shader" + values + { + input float in0 = [ 1.0 | 0.0 | -2.0 | 10.0 ]; + output float out0 = [ 3.0 | 0.0 | -6.0 | 30.0 ]; + } + vertex "" + #version 310 es + precision highp float; + ${VERTEX_DECLARATIONS} + layout(location = 0) out float var1; + layout(location = 1) out float var2; + + void main() + { + var1 = in0; + var2 = var1 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in float var1; + layout(location = 1) in float var2; + + void main() + { + out0 = var1 + var2; + ${FRAGMENT_OUTPUT} + } + "" + end + end +end diff --git a/vulkan/glsl/es310/scoping.test b/vulkan/glsl/es310/scoping.test new file mode 100644 index 0000000..fd25c40 --- /dev/null +++ b/vulkan/glsl/es310/scoping.test @@ -0,0 +1,460 @@ +group valid "Valid scoping and name redeclaration cases" + + case local_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = -1; + + void main() + { + ${SETUP} + int a = in0; + + out0 = a; + ${OUTPUT} + } + "" + end + + case block_variable_hides_local_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + { + int a = -1; + } + out0 = a; + ${OUTPUT} + } + "" + end + + case block_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = -1; + + void main() + { + ${SETUP} + { + int a = in0; + + out0 = a; + } + ${OUTPUT} + } + "" + end + + case for_init_statement_variable_hides_local_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + for (int a = 0; a < 10; a++) + { + } + out0 = a; + ${OUTPUT} + } + "" + end + + case while_condition_variable_hides_local_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + int i = 0; + while (bool a = (i < 1)) + { + i++; + } + out0 = a; + ${OUTPUT} + } + "" + end + + case for_init_statement_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = 5; + + void main() + { + ${SETUP} + for (int a = 0; a < 10; a++) + { + } + out0 = in0 + a - 5; + ${OUTPUT} + } + "" + end + + case while_condition_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = 5; + + void main() + { + ${SETUP} + int i = 0; + while (bool a = (i < 1)) + { + i++; + } + out0 = in0 + a - 5; + ${OUTPUT} + } + "" + end + + case variable_in_if_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = 1; + + void main() + { + ${SETUP} + if (true) + int a = 42; + out0 = a*in0; + ${OUTPUT} + } + "" + end + + case variable_from_outer_scope_visible_in_initializer + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + { + int a = a+5, b = a-5; + out0 = b; + a = 42; + } + out0 = out0 + a - in0; + ${OUTPUT} + } + "" + end + + case local_int_variable_hides_struct_type + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct S { int val; }; + + void main() + { + ${SETUP} + int S = S(in0).val; + out0 = S; + ${OUTPUT} + } + "" + end + + case local_struct_variable_hides_struct_type + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct S { int val; }; + + void main() + { + ${SETUP} + S S = S(in0); + out0 = S.val; + ${OUTPUT} + } + "" + end + + case local_variable_hides_function + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int foo (int x) { return x; } + + void main() + { + ${SETUP} + int foo = in0; + out0 = foo; + ${OUTPUT} + } + "" + end + + case function_parameter_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = -1; + + int func (int a) { return a; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case function_parameter_hides_struct_type + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct S { int x; }; + + int func (int S) { return S; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case function_parameter_hides_function + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int func) { return func; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case local_variable_in_inner_scope_hides_function_parameter + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + int func (int inp, int x) { { int x = 5; return inp + x - 5; } } + + void main() + { + ${SETUP} + out0 = func(in0, 42); + ${OUTPUT} + } + "" + end + + case redeclare_function + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int x); + int func (int); + int func (int inp) { return inp; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + +end diff --git a/vulkan/glsl/es310/swizzles.test b/vulkan/glsl/es310/swizzles.test new file mode 100644 index 0000000..234ef95 --- /dev/null +++ b/vulkan/glsl/es310/swizzles.test @@ -0,0 +1,7783 @@ +# WARNING: This file is auto-generated. Do NOT modify it manually, but rather +# modify the generating script file. Otherwise changes will be lost! + +group vector_swizzles "Vector Swizzles" + + case mediump_vec2_x + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_vec2_xx + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(-0.5, -0.5) | vec2(-32.0, -32.0) | vec2(-0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xx; + ${OUTPUT} + } + "" + end + + case mediump_vec2_xy + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xy; + ${OUTPUT} + } + "" + end + + case mediump_vec2_yx + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.5, 0.0) | vec2(1.25, 1.0) | vec2(-2.25, -0.5) | vec2(64.0, -32.0) | vec2(-0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yx; + ${OUTPUT} + } + "" + end + + case mediump_vec2_yxy + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_vec2_xyxx + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_vec2_yyyy + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_vec2_s + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_vec2_ss + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(-0.5, -0.5) | vec2(-32.0, -32.0) | vec2(-0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ss; + ${OUTPUT} + } + "" + end + + case mediump_vec2_st + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.st; + ${OUTPUT} + } + "" + end + + case mediump_vec2_ts + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.5, 0.0) | vec2(1.25, 1.0) | vec2(-2.25, -0.5) | vec2(64.0, -32.0) | vec2(-0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ts; + ${OUTPUT} + } + "" + end + + case mediump_vec2_tst + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_vec2_stss + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_vec2_tttt + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_vec2_r + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_vec2_rr + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(-0.5, -0.5) | vec2(-32.0, -32.0) | vec2(-0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rr; + ${OUTPUT} + } + "" + end + + case mediump_vec2_rg + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rg; + ${OUTPUT} + } + "" + end + + case mediump_vec2_gr + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.5, 0.0) | vec2(1.25, 1.0) | vec2(-2.25, -0.5) | vec2(64.0, -32.0) | vec2(-0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gr; + ${OUTPUT} + } + "" + end + + case mediump_vec2_grg + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_vec2_rgrr + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_vec2_gggg + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_vec3_x + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_vec3_z + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.75 | 1.125 | -4.875 | -51.0 | 0.0526315789474 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.z; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.75) | vec2(1.0, 1.125) | vec2(-0.5, -4.875) | vec2(-32.0, -51.0) | vec2(-0.75, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.75, 0.75) | vec2(1.125, 1.125) | vec2(-4.875, -4.875) | vec2(-51.0, -51.0) | vec2(0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xyz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zyx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.5, 0.0) | vec3(1.125, 1.25, 1.0) | vec3(-4.875, -2.25, -0.5) | vec3(-51.0, 64.0, -32.0) | vec3(0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zyx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xxx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(-0.5, -0.5, -0.5) | vec3(-32.0, -32.0, -32.0) | vec3(-0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zzz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.75) | vec3(1.125, 1.125, 1.125) | vec3(-4.875, -4.875, -4.875) | vec3(-51.0, -51.0, -51.0) | vec3(0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zzy + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.5) | vec3(1.125, 1.125, 1.25) | vec3(-4.875, -4.875, -2.25) | vec3(-51.0, -51.0, 64.0) | vec3(0.0526315789474, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzy; + ${OUTPUT} + } + "" + end + + case mediump_vec3_yxy + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xzx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.75, 0.0) | vec3(1.0, 1.125, 1.0) | vec3(-0.5, -4.875, -0.5) | vec3(-32.0, -51.0, -32.0) | vec3(-0.75, 0.0526315789474, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xzx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xyyx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.5, 0.0) | vec4(1.0, 1.25, 1.25, 1.0) | vec4(-0.5, -2.25, -2.25, -0.5) | vec4(-32.0, 64.0, 64.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyyx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zzzz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.75, 0.75) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-4.875, -4.875, -4.875, -4.875) | vec4(-51.0, -51.0, -51.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzzz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_s + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_vec3_p + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.75 | 1.125 | -4.875 | -51.0 | 0.0526315789474 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.p; + ${OUTPUT} + } + "" + end + + case mediump_vec3_sp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.75) | vec2(1.0, 1.125) | vec2(-0.5, -4.875) | vec2(-32.0, -51.0) | vec2(-0.75, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_pp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.75, 0.75) | vec2(1.125, 1.125) | vec2(-4.875, -4.875) | vec2(-51.0, -51.0) | vec2(0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_stp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_pts + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.5, 0.0) | vec3(1.125, 1.25, 1.0) | vec3(-4.875, -2.25, -0.5) | vec3(-51.0, 64.0, -32.0) | vec3(0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pts; + ${OUTPUT} + } + "" + end + + case mediump_vec3_sss + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(-0.5, -0.5, -0.5) | vec3(-32.0, -32.0, -32.0) | vec3(-0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sss; + ${OUTPUT} + } + "" + end + + case mediump_vec3_ppp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.75) | vec3(1.125, 1.125, 1.125) | vec3(-4.875, -4.875, -4.875) | vec3(-51.0, -51.0, -51.0) | vec3(0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_ppt + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.5) | vec3(1.125, 1.125, 1.25) | vec3(-4.875, -4.875, -2.25) | vec3(-51.0, -51.0, 64.0) | vec3(0.0526315789474, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppt; + ${OUTPUT} + } + "" + end + + case mediump_vec3_tst + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_vec3_sps + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.75, 0.0) | vec3(1.0, 1.125, 1.0) | vec3(-0.5, -4.875, -0.5) | vec3(-32.0, -51.0, -32.0) | vec3(-0.75, 0.0526315789474, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sps; + ${OUTPUT} + } + "" + end + + case mediump_vec3_stts + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.5, 0.0) | vec4(1.0, 1.25, 1.25, 1.0) | vec4(-0.5, -2.25, -2.25, -0.5) | vec4(-32.0, 64.0, 64.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stts; + ${OUTPUT} + } + "" + end + + case mediump_vec3_pppp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.75, 0.75) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-4.875, -4.875, -4.875, -4.875) | vec4(-51.0, -51.0, -51.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pppp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_r + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_vec3_b + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.75 | 1.125 | -4.875 | -51.0 | 0.0526315789474 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.b; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.75) | vec2(1.0, 1.125) | vec2(-0.5, -4.875) | vec2(-32.0, -51.0) | vec2(-0.75, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.75, 0.75) | vec2(1.125, 1.125) | vec2(-4.875, -4.875) | vec2(-51.0, -51.0) | vec2(0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rgb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bgr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.5, 0.0) | vec3(1.125, 1.25, 1.0) | vec3(-4.875, -2.25, -0.5) | vec3(-51.0, 64.0, -32.0) | vec3(0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bgr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rrr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(-0.5, -0.5, -0.5) | vec3(-32.0, -32.0, -32.0) | vec3(-0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bbb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.75) | vec3(1.125, 1.125, 1.125) | vec3(-4.875, -4.875, -4.875) | vec3(-51.0, -51.0, -51.0) | vec3(0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bbg + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.5) | vec3(1.125, 1.125, 1.25) | vec3(-4.875, -4.875, -2.25) | vec3(-51.0, -51.0, 64.0) | vec3(0.0526315789474, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbg; + ${OUTPUT} + } + "" + end + + case mediump_vec3_grg + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rbr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.75, 0.0) | vec3(1.0, 1.125, 1.0) | vec3(-0.5, -4.875, -0.5) | vec3(-32.0, -51.0, -32.0) | vec3(-0.75, 0.0526315789474, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rbr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rggr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.5, 0.0) | vec4(1.0, 1.25, 1.25, 1.0) | vec4(-0.5, -2.25, -2.25, -0.5) | vec4(-32.0, 64.0, 64.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rggr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bbbb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.75, 0.75) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-4.875, -4.875, -4.875, -4.875) | vec4(-51.0, -51.0, -51.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbbb; + ${OUTPUT} + } + "" + end + + case mediump_vec4_x + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_vec4_w + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.825 | 1.75 | 9.0 | 24.0 | 0.25 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.w; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.0) | vec2(1.75, 1.0) | vec2(9.0, -0.5) | vec2(24.0, -32.0) | vec2(0.25, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wz + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.75) | vec2(1.75, 1.125) | vec2(9.0, -4.875) | vec2(24.0, -51.0) | vec2(0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wz; + ${OUTPUT} + } + "" + end + + case mediump_vec4_www + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.825, 0.825) | vec3(1.75, 1.75, 1.75) | vec3(9.0, 9.0, 9.0) | vec3(24.0, 24.0, 24.0) | vec3(0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.www; + ${OUTPUT} + } + "" + end + + case mediump_vec4_yyw + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.5, 0.5, 0.825) | vec3(1.25, 1.25, 1.75) | vec3(-2.25, -2.25, 9.0) | vec3(64.0, 64.0, 24.0) | vec3(-0.0322580645161, -0.0322580645161, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyw; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wzy + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.75, 0.5) | vec3(1.75, 1.125, 1.25) | vec3(9.0, -4.875, -2.25) | vec3(24.0, -51.0, 64.0) | vec3(0.25, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzy; + ${OUTPUT} + } + "" + end + + case mediump_vec4_xyzw + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyzw; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wzyx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.5, 0.0) | vec4(1.75, 1.125, 1.25, 1.0) | vec4(9.0, -4.875, -2.25, -0.5) | vec4(24.0, -51.0, 64.0, -32.0) | vec4(0.25, 0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzyx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_xxxx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-32.0, -32.0, -32.0, -32.0) | vec4(-0.75, -0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxxx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_yyyy + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wwww + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.825) | vec4(1.75, 1.75, 1.75, 1.75) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(24.0, 24.0, 24.0, 24.0) | vec4(0.25, 0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwww; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wzzw + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.75, 0.825) | vec4(1.75, 1.125, 1.125, 1.75) | vec4(9.0, -4.875, -4.875, 9.0) | vec4(24.0, -51.0, -51.0, 24.0) | vec4(0.25, 0.0526315789474, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzzw; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wwwy + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.5) | vec4(1.75, 1.75, 1.75, 1.25) | vec4(9.0, 9.0, 9.0, -2.25) | vec4(24.0, 24.0, 24.0, 64.0) | vec4(0.25, 0.25, 0.25, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwwy; + ${OUTPUT} + } + "" + end + + case mediump_vec4_xyxx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_zzwz + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.825, 0.75) | vec4(1.125, 1.125, 1.75, 1.125) | vec4(-4.875, -4.875, 9.0, -4.875) | vec4(-51.0, -51.0, 24.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzwz; + ${OUTPUT} + } + "" + end + + case mediump_vec4_s + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_vec4_q + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.825 | 1.75 | 9.0 | 24.0 | 0.25 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.q; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qs + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.0) | vec2(1.75, 1.0) | vec2(9.0, -0.5) | vec2(24.0, -32.0) | vec2(0.25, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qs; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qp + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.75) | vec2(1.75, 1.125) | vec2(9.0, -4.875) | vec2(24.0, -51.0) | vec2(0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qp; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qqq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.825, 0.825) | vec3(1.75, 1.75, 1.75) | vec3(9.0, 9.0, 9.0) | vec3(24.0, 24.0, 24.0) | vec3(0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ttq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.5, 0.5, 0.825) | vec3(1.25, 1.25, 1.75) | vec3(-2.25, -2.25, 9.0) | vec3(64.0, 64.0, 24.0) | vec3(-0.0322580645161, -0.0322580645161, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ttq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qpt + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.75, 0.5) | vec3(1.75, 1.125, 1.25) | vec3(9.0, -4.875, -2.25) | vec3(24.0, -51.0, 64.0) | vec3(0.25, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpt; + ${OUTPUT} + } + "" + end + + case mediump_vec4_stpq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stpq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qpts + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.5, 0.0) | vec4(1.75, 1.125, 1.25, 1.0) | vec4(9.0, -4.875, -2.25, -0.5) | vec4(24.0, -51.0, 64.0, -32.0) | vec4(0.25, 0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpts; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ssss + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-32.0, -32.0, -32.0, -32.0) | vec4(-0.75, -0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ssss; + ${OUTPUT} + } + "" + end + + case mediump_vec4_tttt + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qqqq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.825) | vec4(1.75, 1.75, 1.75, 1.75) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(24.0, 24.0, 24.0, 24.0) | vec4(0.25, 0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qppq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.75, 0.825) | vec4(1.75, 1.125, 1.125, 1.75) | vec4(9.0, -4.875, -4.875, 9.0) | vec4(24.0, -51.0, -51.0, 24.0) | vec4(0.25, 0.0526315789474, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qppq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qqqt + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.5) | vec4(1.75, 1.75, 1.75, 1.25) | vec4(9.0, 9.0, 9.0, -2.25) | vec4(24.0, 24.0, 24.0, 64.0) | vec4(0.25, 0.25, 0.25, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqt; + ${OUTPUT} + } + "" + end + + case mediump_vec4_stss + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ppqp + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.825, 0.75) | vec4(1.125, 1.125, 1.75, 1.125) | vec4(-4.875, -4.875, 9.0, -4.875) | vec4(-51.0, -51.0, 24.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppqp; + ${OUTPUT} + } + "" + end + + case mediump_vec4_r + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_vec4_a + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.825 | 1.75 | 9.0 | 24.0 | 0.25 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.a; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ar + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.0) | vec2(1.75, 1.0) | vec2(9.0, -0.5) | vec2(24.0, -32.0) | vec2(0.25, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ar; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ab + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.75) | vec2(1.75, 1.125) | vec2(9.0, -4.875) | vec2(24.0, -51.0) | vec2(0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ab; + ${OUTPUT} + } + "" + end + + case mediump_vec4_aaa + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.825, 0.825) | vec3(1.75, 1.75, 1.75) | vec3(9.0, 9.0, 9.0) | vec3(24.0, 24.0, 24.0) | vec3(0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaa; + ${OUTPUT} + } + "" + end + + case mediump_vec4_gga + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.5, 0.5, 0.825) | vec3(1.25, 1.25, 1.75) | vec3(-2.25, -2.25, 9.0) | vec3(64.0, 64.0, 24.0) | vec3(-0.0322580645161, -0.0322580645161, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gga; + ${OUTPUT} + } + "" + end + + case mediump_vec4_abg + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.75, 0.5) | vec3(1.75, 1.125, 1.25) | vec3(9.0, -4.875, -2.25) | vec3(24.0, -51.0, 64.0) | vec3(0.25, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abg; + ${OUTPUT} + } + "" + end + + case mediump_vec4_rgba + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgba; + ${OUTPUT} + } + "" + end + + case mediump_vec4_abgr + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.5, 0.0) | vec4(1.75, 1.125, 1.25, 1.0) | vec4(9.0, -4.875, -2.25, -0.5) | vec4(24.0, -51.0, 64.0, -32.0) | vec4(0.25, 0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abgr; + ${OUTPUT} + } + "" + end + + case mediump_vec4_rrrr + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-32.0, -32.0, -32.0, -32.0) | vec4(-0.75, -0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrrr; + ${OUTPUT} + } + "" + end + + case mediump_vec4_gggg + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_vec4_aaaa + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.825) | vec4(1.75, 1.75, 1.75, 1.75) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(24.0, 24.0, 24.0, 24.0) | vec4(0.25, 0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaaa; + ${OUTPUT} + } + "" + end + + case mediump_vec4_abba + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.75, 0.825) | vec4(1.75, 1.125, 1.125, 1.75) | vec4(9.0, -4.875, -4.875, 9.0) | vec4(24.0, -51.0, -51.0, 24.0) | vec4(0.25, 0.0526315789474, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abba; + ${OUTPUT} + } + "" + end + + case mediump_vec4_aaag + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.5) | vec4(1.75, 1.75, 1.75, 1.25) | vec4(9.0, 9.0, 9.0, -2.25) | vec4(24.0, 24.0, 24.0, 64.0) | vec4(0.25, 0.25, 0.25, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaag; + ${OUTPUT} + } + "" + end + + case mediump_vec4_rgrr + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_vec4_bbab + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.825, 0.75) | vec4(1.125, 1.125, 1.75, 1.125) | vec4(-4.875, -4.875, 9.0, -4.875) | vec4(-51.0, -51.0, 24.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbab; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_x + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_xx + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xx; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_xy + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xy; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_yx + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-2, 0) | ivec2(64, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yx; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_yxy + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_xyxx + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_yyyy + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_s + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_ss + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ss; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_st + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.st; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_ts + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-2, 0) | ivec2(64, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ts; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_tst + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_stss + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_tttt + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_r + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_rr + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rr; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_rg + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rg; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_gr + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-2, 0) | ivec2(64, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gr; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_grg + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_rgrr + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_gggg + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_x + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_z + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | -4 | -51 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.z; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -4) | ivec2(-32, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-4, -4) | ivec2(-51, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xyz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zyx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -2, 0) | ivec3(-51, 64, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zyx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xxx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, -32, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zzz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -4) | ivec3(-51, -51, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zzy + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -2) | ivec3(-51, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzy; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_yxy + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xzx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -4, 0) | ivec3(-32, -51, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xzx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xyyx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -2, 0) | ivec4(-32, 64, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyyx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zzzz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, -4, -4) | ivec4(-51, -51, -51, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzzz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_s + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_p + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | -4 | -51 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.p; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_sp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -4) | ivec2(-32, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_pp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-4, -4) | ivec2(-51, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_stp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_pts + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -2, 0) | ivec3(-51, 64, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pts; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_sss + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, -32, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sss; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_ppp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -4) | ivec3(-51, -51, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_ppt + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -2) | ivec3(-51, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppt; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_tst + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_sps + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -4, 0) | ivec3(-32, -51, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sps; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_stts + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -2, 0) | ivec4(-32, 64, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stts; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_pppp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, -4, -4) | ivec4(-51, -51, -51, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pppp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_r + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_b + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | -4 | -51 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.b; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -4) | ivec2(-32, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-4, -4) | ivec2(-51, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rgb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bgr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -2, 0) | ivec3(-51, 64, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bgr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rrr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, -32, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bbb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -4) | ivec3(-51, -51, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bbg + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -2) | ivec3(-51, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbg; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_grg + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rbr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -4, 0) | ivec3(-32, -51, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rbr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rggr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -2, 0) | ivec4(-32, 64, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rggr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bbbb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, -4, -4) | ivec4(-51, -51, -51, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbbb; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_x + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_w + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 9 | 24 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.w; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, 0) | ivec2(24, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wz + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, -4) | ivec2(24, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wz; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_www + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, 9, 9) | ivec3(24, 24, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.www; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_yyw + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, -2, 9) | ivec3(64, 64, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyw; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wzy + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, -4, -2) | ivec3(24, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzy; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_xyzw + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyzw; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wzyx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -2, 0) | ivec4(24, -51, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzyx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_xxxx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, -32, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_yyyy + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wwww + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, 9) | ivec4(24, 24, 24, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwww; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wzzw + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -4, 9) | ivec4(24, -51, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzzw; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wwwy + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, -2) | ivec4(24, 24, 24, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwwy; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_xyxx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_zzwz + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, 9, -4) | ivec4(-51, -51, 24, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzwz; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_s + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_q + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 9 | 24 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.q; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qs + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, 0) | ivec2(24, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qs; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qp + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, -4) | ivec2(24, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qp; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qqq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, 9, 9) | ivec3(24, 24, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ttq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, -2, 9) | ivec3(64, 64, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ttq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qpt + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, -4, -2) | ivec3(24, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpt; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_stpq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stpq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qpts + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -2, 0) | ivec4(24, -51, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpts; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ssss + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, -32, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ssss; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_tttt + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qqqq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, 9) | ivec4(24, 24, 24, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qppq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -4, 9) | ivec4(24, -51, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qppq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qqqt + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, -2) | ivec4(24, 24, 24, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqt; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_stss + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ppqp + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, 9, -4) | ivec4(-51, -51, 24, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppqp; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_r + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_a + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 9 | 24 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.a; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ar + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, 0) | ivec2(24, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ar; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ab + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, -4) | ivec2(24, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ab; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_aaa + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, 9, 9) | ivec3(24, 24, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaa; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_gga + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, -2, 9) | ivec3(64, 64, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gga; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_abg + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, -4, -2) | ivec3(24, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abg; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_rgba + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgba; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_abgr + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -2, 0) | ivec4(24, -51, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abgr; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_rrrr + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, -32, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_gggg + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_aaaa + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, 9) | ivec4(24, 24, 24, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaaa; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_abba + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -4, 9) | ivec4(24, -51, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abba; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_aaag + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, -2) | ivec4(24, 24, 24, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaag; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_rgrr + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_bbab + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, 9, -4) | ivec4(-51, -51, 24, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbab; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_x + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_xx + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xx; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_xy + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xy; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_yx + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yx; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_yxy + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_xyxx + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_yyyy + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_s + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_ss + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ss; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_st + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.st; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_ts + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ts; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_tst + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_stss + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_tttt + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_r + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_rr + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rr; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_rg + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rg; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_gr + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gr; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_grg + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_rgrr + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_gggg + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_x + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_z + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ false | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.z; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xyz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zyx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zyx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xxx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zzz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zzy + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzy; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_yxy + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xzx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xzx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xyyx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyyx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zzzz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzzz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_s + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_p + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ false | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.p; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_sp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_pp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_stp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_pts + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pts; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_sss + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sss; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_ppp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_ppt + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppt; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_tst + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_sps + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sps; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_stts + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stts; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_pppp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pppp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_r + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_b + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ false | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.b; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rgb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bgr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bgr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rrr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bbb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bbg + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbg; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_grg + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rbr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rbr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rggr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rggr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bbbb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbbb; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_x + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_w + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.w; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wz + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wz; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_www + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.www; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_yyw + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyw; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wzy + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzy; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_xyzw + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyzw; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wzyx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, false) | bvec4(false, false, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzyx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_xxxx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_yyyy + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wwww + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwww; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wzzw + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzzw; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wwwy + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, false) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwwy; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_xyxx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_zzwz + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(false, false, true, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzwz; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_s + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_q + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.q; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qs + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qs; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qp + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qp; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qqq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ttq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ttq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qpt + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpt; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_stpq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stpq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qpts + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, false) | bvec4(false, false, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpts; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ssss + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ssss; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_tttt + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qqqq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qppq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qppq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qqqt + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, false) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqt; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_stss + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ppqp + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(false, false, true, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppqp; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_r + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_a + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.a; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ar + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ar; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ab + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ab; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_aaa + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaa; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_gga + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gga; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_abg + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abg; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_rgba + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgba; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_abgr + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, false) | bvec4(false, false, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abgr; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_rrrr + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_gggg + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_aaaa + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaaa; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_abba + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abba; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_aaag + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, false) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaag; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_rgrr + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_bbab + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(false, false, true, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbab; + ${OUTPUT} + } + "" + end + + +end # vector_swizzles