| #!amber |
| # Copyright 2021 Google LLC. |
| # Copyright 2021 The Khronos Group Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Matrix 4x4 inverse precision test float32_t |
| |
| SHADER compute compute_shader GLSL |
| #version 450 |
| #extension GL_EXT_shader_explicit_arithmetic_types_float32 : enable |
| |
| const int NUMMATRICES = 10; |
| |
| layout(set = 0, binding = 0) buffer block0 |
| { |
| f32mat4 matIns[NUMMATRICES]; |
| }; |
| |
| layout(set = 0, binding = 1) buffer block1 |
| { |
| f32mat4 invOutM[NUMMATRICES]; |
| }; |
| |
| void main() |
| { |
| for (int ndx = 0; ndx < NUMMATRICES; ndx++) |
| { |
| f32mat4 matIn = matIns[ndx]; |
| invOutM[ndx] = inverse(matIn); |
| } |
| } |
| END |
| |
| BUFFER bufIn DATA_TYPE mat4x4<float> DATA |
| -1.0 1.0 4.0 2.0 |
| 2.0 -1.0 2.0 5.0 |
| 1.0 2.0 3.0 4.0 |
| 3.0 4.0 -1.0 2.0 |
| |
| 1.0 0.0 0.0 0.0 |
| 0.0 0.0 1.0 0.0 |
| 0.0 1.0 0.0 0.0 |
| 0.0 0.0 0.0 1.0 |
| |
| -0.0883788988 0.156982005 0.00129985996 0.245116994 |
| 0.0380859002 0.712401986 -0.00320053007 0.911132991 |
| 0.0759887993 0.097778298 -1.06054997 1.90429997 |
| -0.496825993 1.59570003 0.0130997002 -2.69531012 |
| |
| 42.0 0.300049007 -0.0480041988 -270.0 |
| 15.0 4.80077982 -4.89843988 -41.0 |
| -0.180053994 -0.700195014 -0.0229950007 0.370117009 |
| -0.000500202004 -0.00279998989 -0.799804986 -0.290039003 |
| |
| 500.0 -3.5999999 -15.0 37.0 |
| 2.9000001 -0.469999999 3.20000005 4.69999981 |
| 0.100000001 0.0439999998 0.00499999989 -0.0280000009 |
| -48.0 19.0 -1.10000002 0.0379999988 |
| |
| -17.0 -1100.0 -100.0 -0.0180054009 |
| 6.0 43.0 -3.09961009 20.0 |
| -2.30078006 0.00270081009 -0.000500202004 -1.90039003 |
| 0.360107005 0.310059011 -0.00479889009 0.026992799 |
| |
| 19.62337494 16.39533043 23.82426262 16.65323257 |
| -28.07434273 -23.81944656 24.1329422 52.97018814 |
| -19.42151833 -22.75625992 -17.65433121 -18.97532654 |
| 16.58400154 19.6275444 18.86455917 20.07055855 |
| |
| -0.00622151 -0.006746047 -0.002207905 -0.02056567 |
| -0.030076593 -0.0267689 0.01095024 -0.09132 |
| -0.01297636 0.04533594 -0.01379582 -0.01475323 |
| -0.004602736 -0.01200175 0.01090538 0.02836178 |
| |
| -0.0119948 -0.03789127 -0.00611719 0.0448515 |
| 0.04644695 -0.02320256 -0.03514489 -1.3571429 |
| -0.03181969 0.008329804 0.13061533 0.287190083 |
| -0.0098646 -0.587016575 0.040482634 -0.66131907 |
| |
| -49.9153838 -21.0593973 -46.518005 59.6618775 |
| -32.0837048 -15.4093261 22.1520919 32.4487472 |
| -18.0335364 19.6343962 40.2818031 -16.6847517 |
| 30.3650256 430.773516 335.057641 84.5618449 |
| END |
| |
| BUFFER bufOut DATA_TYPE mat4x4<float> SIZE 10 FILL 0.0 |
| |
| PIPELINE compute pipeline |
| ATTACH compute_shader |
| |
| BIND BUFFER bufIn AS storage DESCRIPTOR_SET 0 BINDING 0 |
| BIND BUFFER bufOut AS storage DESCRIPTOR_SET 0 BINDING 1 |
| END |
| |
| RUN pipeline 1 1 1 |
| |
| # Decimals between 2.0 and 4.0: 2.384185791e-07 |
| EXPECT bufOut IDX 0 TOLERANCE 0.0000002384185791015625 EQ 2.15384626 1.15384614 -3.19230771 1.34615386 -0.384615391 -0.384615391 0.730769277 -0.115384623 1.69230771 0.692307711 -2.11538458 0.807692349 -1.6153847 -0.615384638 2.26923084 -0.884615421 |
| |
| # Decimal between 0.5 and 1.0: 1.192092896e-07 |
| EXPECT bufOut IDX 64 TOLERANCE 0.00000011920928955078125 EQ 1.0 0.0 -0.0 0.0 -0.0 -0.0 1.0 -0.0 -0.0 1.0 -0.0 0.0 0.0 -0.0 0.0 1.0 |
| |
| # Decimals between 8.0 and 16.0: 9.536743164e-07 |
| EXPECT bufOut IDX 128 TOLERANCE 0.00000095367432 EQ -9.75322056 2.37362671 -0.0203394517 -0.0989581347 -1.01313901 1.04449189 -0.00118096021 0.260112733 1.37084019 0.596282601 -0.947263181 -0.343027145 1.20466483 0.183736786 -0.00155386783 -0.200446919 |
| |
| # Decimals between 1.0 and 2.0: 1.192092896e-07 |
| EXPECT bufOut IDX 192 TOLERANCE 0.0000019073486328125 EQ -0.0168082286 0.12384747 0.845064819 -0.781796575 0.000907236419 -0.0214464739 -1.57553554 0.176593229 0.00229837489 -0.00698044337 -0.0420508794 -1.2064817 -0.00631771749 0.0192425679 0.129711106 -0.121202044 |
| |
| # Decimals between 16.0 and 32.0: 0.00000762939453125 |
| EXPECT bufOut IDX 256 TOLERANCE 0.00000762939453125 EQ 0.00122987852 0.00145957421 1.86470127 -0.00404912047 0.00249933568 0.0158962216 6.0246582 0.0395465195 -0.0102730356 0.213239029 22.1535034 -0.0479744636 0.00648548035 0.0682709441 -15.6313314 0.039116513 |
| |
| # Decimals between 8.0 and 16.0: 4.768371582e-07 |
| EXPECT bufOut IDX 320 TOLERANCE 0.0000019073486328125 EQ 0.000238085719 -0.0114304526 -0.0857740417 2.43061924 -0.000347720925 0.0103370408 0.116703264 0.556987405 -0.00621549273 -0.111766778 -1.26907849 -6.53953838 -0.000287105795 0.0138828233 -0.421862274 -2.94020963 |
| |
| # Decimals between 1.0 and 2.0: 1.192092896e-07 |
| EXPECT bufOut IDX 384 TOLERANCE 0.0000152587890625 EQ 0.221975565 0.06277982891 -1.124607801 -1.41310823 -0.1992791891 -0.05785009637 0.7983245254 1.072786927 -0.03421511874 -0.04426704347 0.7961731553 0.8979454637 0.04362447187 0.04630630091 -0.5997895598 -0.6756432652 |
| |
| # Decimal between 128.0 and 256.0: 1.525878906e-05 |
| EXPECT bufOut IDX 448 TOLERANCE 0.000030517578125 EQ -97.8582306683738 7.50313409032798 -26.11700244793 -60.3856322136104 -82.695723129405 12.73964545836 14.21707270207 -11.54937328259 -212.810493696114 47.112979745172 -5.26643151068 -5.356855156269 30.9525814487582 -11.506751754761 3.802741640015 22.63139785364 |
| |
| # Decimal between 64.0 and 128.0: 0.000030517578125 |
| EXPECT bufOut IDX 512 TOLERANCE 0.000030517578125 EQ -97.2800533563974 -8.23035776027672 -8.778950323977 6.4800607683722 3.742999521995 1.33217195402 1.1478907969 -1.981502984114 -17.471227158394 0.211605306995 6.51915413939 1.211891597268 -2.9408727618766 -1.046773821906 -0.488897983374 0.22426761655 |
| |
| # Decimal between 0.015625 and 0.03125: 3.814697266e-06 |
| EXPECT bufOut IDX 576 TOLERANCE 0.00000762939453125 EQ -0.0144786923213 0.00890167299754 -0.029597616043 0.0009596401839 0.010619435818 -0.0196777493 0.00855626442 0.001746674163 -0.012082393287 0.020359445256 -0.00236542194 0.000245421422 -0.001024429515 0.016375778305 -0.023586607469 0.00161076438 |