Compare commits
	
		
			618 Commits
		
	
	
		
			mesa-20.3.
			...
			mesa-7.0.3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d89cf0649e | ||
| 
						 | 
					31e9d9d4f8 | ||
| 
						 | 
					ea9c6d3d9e | ||
| 
						 | 
					eaac94c35a | ||
| 
						 | 
					9291506af0 | ||
| 
						 | 
					4716670de9 | ||
| 
						 | 
					33c5b38034 | ||
| 
						 | 
					5737d6c565 | ||
| 
						 | 
					08a7f56c6a | ||
| 
						 | 
					7916f2b4aa | ||
| 
						 | 
					193d303ac7 | ||
| 
						 | 
					e70609b7b8 | ||
| 
						 | 
					da476ff02d | ||
| 
						 | 
					77e3b5d28b | ||
| 
						 | 
					bf97ca448c | ||
| 
						 | 
					c5f8ff8b32 | ||
| 
						 | 
					50465766d1 | ||
| 
						 | 
					7d8df58a63 | ||
| 
						 | 
					762c074012 | ||
| 
						 | 
					51f2ee3bfb | ||
| 
						 | 
					b5cd34aa21 | ||
| 
						 | 
					ae5c6dcd42 | ||
| 
						 | 
					97196d0c8c | ||
| 
						 | 
					f6de56b88a | ||
| 
						 | 
					d64ea43b76 | ||
| 
						 | 
					2deaf93d24 | ||
| 
						 | 
					a107ec8300 | ||
| 
						 | 
					120a1f9508 | ||
| 
						 | 
					bb84007a57 | ||
| 
						 | 
					86234e55a6 | ||
| 
						 | 
					61972077cd | ||
| 
						 | 
					5a7feb8ea2 | ||
| 
						 | 
					4b4c131cd0 | ||
| 
						 | 
					67617c8f89 | ||
| 
						 | 
					0fd23f01c6 | ||
| 
						 | 
					557b0d9df7 | ||
| 
						 | 
					888f4380cf | ||
| 
						 | 
					3266c5e95a | ||
| 
						 | 
					834decdaae | ||
| 
						 | 
					18b2d83173 | ||
| 
						 | 
					30c65c3c62 | ||
| 
						 | 
					04fcc4cf1e | ||
| 
						 | 
					09504dde1f | ||
| 
						 | 
					c04885f072 | ||
| 
						 | 
					48ae5cf09d | ||
| 
						 | 
					45cdb6eb45 | ||
| 
						 | 
					b9f3f732aa | ||
| 
						 | 
					17006ddd6b | ||
| 
						 | 
					b77a354df3 | ||
| 
						 | 
					71d46beebf | ||
| 
						 | 
					454e296eb1 | ||
| 
						 | 
					f9b696be2b | ||
| 
						 | 
					c923edbc71 | ||
| 
						 | 
					e20c1d987f | ||
| 
						 | 
					cd354eb10f | ||
| 
						 | 
					e9ac27ee23 | ||
| 
						 | 
					3f9dc9f5b6 | ||
| 
						 | 
					ba709875ae | ||
| 
						 | 
					80f8397b35 | ||
| 
						 | 
					b45fa27fa1 | ||
| 
						 | 
					b59480645d | ||
| 
						 | 
					148cb36979 | ||
| 
						 | 
					c1eb78f7ff | ||
| 
						 | 
					8aa0fd6b20 | ||
| 
						 | 
					a1b3a908f5 | ||
| 
						 | 
					f9e70d951a | ||
| 
						 | 
					41ed6be1da | ||
| 
						 | 
					27de28fc3e | ||
| 
						 | 
					dd2f01c229 | ||
| 
						 | 
					deb5c56c77 | ||
| 
						 | 
					9fd22f0e3f | ||
| 
						 | 
					942372dcdf | ||
| 
						 | 
					b7f901088b | ||
| 
						 | 
					c02990525c | ||
| 
						 | 
					0107acded0 | ||
| 
						 | 
					2ac5e08d1d | ||
| 
						 | 
					1837b8c214 | ||
| 
						 | 
					03d2bc1774 | ||
| 
						 | 
					385bddbde0 | ||
| 
						 | 
					c135426267 | ||
| 
						 | 
					4be0c98120 | ||
| 
						 | 
					e760aebd5a | ||
| 
						 | 
					1f6e7d9c29 | ||
| 
						 | 
					c6d421af05 | ||
| 
						 | 
					952df5e493 | ||
| 
						 | 
					45acb8b058 | ||
| 
						 | 
					e8997c0183 | ||
| 
						 | 
					169e62f563 | ||
| 
						 | 
					1b43babfb1 | ||
| 
						 | 
					43e902f774 | ||
| 
						 | 
					b0a800e249 | ||
| 
						 | 
					73d5f232ad | ||
| 
						 | 
					f7209541e4 | ||
| 
						 | 
					397a32dca7 | ||
| 
						 | 
					e0719d7122 | ||
| 
						 | 
					3f18c0a9f2 | ||
| 
						 | 
					b14be61938 | ||
| 
						 | 
					440d620308 | ||
| 
						 | 
					8dd9df0f3e | ||
| 
						 | 
					6b9534eaf5 | ||
| 
						 | 
					c91d374ad7 | ||
| 
						 | 
					1cab4160bc | ||
| 
						 | 
					718d2dfbbd | ||
| 
						 | 
					0967e1270d | ||
| 
						 | 
					a08c02f1a8 | ||
| 
						 | 
					bdfd9afead | ||
| 
						 | 
					1c91a590d6 | ||
| 
						 | 
					65bd7968bf | ||
| 
						 | 
					6ccd23b87b | ||
| 
						 | 
					823409b7d0 | ||
| 
						 | 
					c85d31f4a0 | ||
| 
						 | 
					24af5c44da | ||
| 
						 | 
					75efacf8eb | ||
| 
						 | 
					825e810247 | ||
| 
						 | 
					e20723cfc1 | ||
| 
						 | 
					9f39a67c1d | ||
| 
						 | 
					2044f3f791 | ||
| 
						 | 
					30d4e8c422 | ||
| 
						 | 
					92d552f6a2 | ||
| 
						 | 
					5adfcbbc4f | ||
| 
						 | 
					69969b3819 | ||
| 
						 | 
					edfee04fcb | ||
| 
						 | 
					ae0bf74db9 | ||
| 
						 | 
					1bf7ce97c0 | ||
| 
						 | 
					4971a009e0 | ||
| 
						 | 
					e1613ab80d | ||
| 
						 | 
					28c9930888 | ||
| 
						 | 
					e3a35a123e | ||
| 
						 | 
					412168f2e8 | ||
| 
						 | 
					fc0fa0d636 | ||
| 
						 | 
					caf283329b | ||
| 
						 | 
					5cedd4a43e | ||
| 
						 | 
					0595d32d8a | ||
| 
						 | 
					e339b4e8da | ||
| 
						 | 
					11c827c588 | ||
| 
						 | 
					8a40b670c3 | ||
| 
						 | 
					d9fa5cbfc9 | ||
| 
						 | 
					1c21564292 | ||
| 
						 | 
					6cc96bf156 | ||
| 
						 | 
					29afd4bbc4 | ||
| 
						 | 
					4e3db063ec | ||
| 
						 | 
					6560744c38 | ||
| 
						 | 
					572ad87881 | ||
| 
						 | 
					2ab75d6cfa | ||
| 
						 | 
					041a8eb5ec | ||
| 
						 | 
					c1c13bdcfa | ||
| 
						 | 
					403edd34dd | ||
| 
						 | 
					f279e48416 | ||
| 
						 | 
					bf854d8d27 | ||
| 
						 | 
					f334121679 | ||
| 
						 | 
					b88e2be609 | ||
| 
						 | 
					08229c8bb8 | ||
| 
						 | 
					c984017f71 | ||
| 
						 | 
					00e7dd8a13 | ||
| 
						 | 
					d11b375b16 | ||
| 
						 | 
					d1afa8146f | ||
| 
						 | 
					31d4ba8a93 | ||
| 
						 | 
					1a7640958c | ||
| 
						 | 
					2e2a5a450b | ||
| 
						 | 
					574fd63ff0 | ||
| 
						 | 
					1063d47526 | ||
| 
						 | 
					b59a892d3e | ||
| 
						 | 
					6e5d5d77df | ||
| 
						 | 
					a6319d18cf | ||
| 
						 | 
					5103e883fd | ||
| 
						 | 
					98c4ea4b24 | ||
| 
						 | 
					29b8cac7d7 | ||
| 
						 | 
					cdb02d43fe | ||
| 
						 | 
					50cecddc4a | ||
| 
						 | 
					177f6398e5 | ||
| 
						 | 
					887bd6a46f | ||
| 
						 | 
					9af5153410 | ||
| 
						 | 
					0e2103689e | ||
| 
						 | 
					2c496d8e46 | ||
| 
						 | 
					8f0ba02e44 | ||
| 
						 | 
					524c56e417 | ||
| 
						 | 
					773f3a266c | ||
| 
						 | 
					882ada0d22 | ||
| 
						 | 
					6229005f93 | ||
| 
						 | 
					6c63b35ef7 | ||
| 
						 | 
					fb85e50e09 | ||
| 
						 | 
					5e5f908d0c | ||
| 
						 | 
					c09e2143c7 | ||
| 
						 | 
					74ced1e67f | ||
| 
						 | 
					dd02c1609e | ||
| 
						 | 
					cdf4880a79 | ||
| 
						 | 
					2ec8e8547d | ||
| 
						 | 
					b7c36d1d33 | ||
| 
						 | 
					8913402b74 | ||
| 
						 | 
					c00dfefd6f | ||
| 
						 | 
					c3de7b5ade | ||
| 
						 | 
					76556f8264 | ||
| 
						 | 
					970d18a708 | ||
| 
						 | 
					9456e7f0ff | ||
| 
						 | 
					a5db24adc2 | ||
| 
						 | 
					17664e2620 | ||
| 
						 | 
					43a0eb0253 | ||
| 
						 | 
					bcdaed2c0a | ||
| 
						 | 
					78c6637db5 | ||
| 
						 | 
					44214a98fd | ||
| 
						 | 
					9cc6d2310c | ||
| 
						 | 
					1a045954be | ||
| 
						 | 
					b3fc9a1585 | ||
| 
						 | 
					2a86a449ca | ||
| 
						 | 
					44f032db61 | ||
| 
						 | 
					5a520729ee | ||
| 
						 | 
					36fbe78c60 | ||
| 
						 | 
					029bb17770 | ||
| 
						 | 
					7958bee6be | ||
| 
						 | 
					0b9bb21ce4 | ||
| 
						 | 
					cfcc5b794e | ||
| 
						 | 
					925ff408a6 | ||
| 
						 | 
					f40ca444f5 | ||
| 
						 | 
					638a5e0382 | ||
| 
						 | 
					6d777bf055 | ||
| 
						 | 
					ae6d4e8bc0 | ||
| 
						 | 
					f2728724d3 | ||
| 
						 | 
					bc95b34cce | ||
| 
						 | 
					9eb89616af | ||
| 
						 | 
					f7713a6d81 | ||
| 
						 | 
					1cec9b727a | ||
| 
						 | 
					18a4730f5b | ||
| 
						 | 
					1342aefcdd | ||
| 
						 | 
					1fd4b1e702 | ||
| 
						 | 
					32dff44c28 | ||
| 
						 | 
					e7c2ae476a | ||
| 
						 | 
					a66301f83d | ||
| 
						 | 
					a5f7d56221 | ||
| 
						 | 
					140080c1ec | ||
| 
						 | 
					ef43af6d43 | ||
| 
						 | 
					949d0532f0 | ||
| 
						 | 
					96efc76d74 | ||
| 
						 | 
					6ca0d63692 | ||
| 
						 | 
					95fc2485e2 | ||
| 
						 | 
					d6ce1e4834 | ||
| 
						 | 
					2cc2b12fc7 | ||
| 
						 | 
					2259f81cf7 | ||
| 
						 | 
					791f12880f | ||
| 
						 | 
					7aa7373a64 | ||
| 
						 | 
					2f186a190f | ||
| 
						 | 
					357893a873 | ||
| 
						 | 
					a17881da5f | ||
| 
						 | 
					4872ee83a9 | ||
| 
						 | 
					5ec222a832 | ||
| 
						 | 
					40438b3440 | ||
| 
						 | 
					e0b80660c8 | ||
| 
						 | 
					a2016301f5 | ||
| 
						 | 
					7ec6729fb6 | ||
| 
						 | 
					837a2cf72e | ||
| 
						 | 
					0adca14536 | ||
| 
						 | 
					57b0f66c6d | ||
| 
						 | 
					e47e7a9571 | ||
| 
						 | 
					68ca01560f | ||
| 
						 | 
					64f1c91fcb | ||
| 
						 | 
					7d33f94198 | ||
| 
						 | 
					369cda3752 | ||
| 
						 | 
					846078d06f | ||
| 
						 | 
					b18500d56e | ||
| 
						 | 
					7d92c50490 | ||
| 
						 | 
					d69a596193 | ||
| 
						 | 
					8aa4ae638e | ||
| 
						 | 
					3069f34841 | ||
| 
						 | 
					b3788a0e4f | ||
| 
						 | 
					582bc029ab | ||
| 
						 | 
					e9e3099433 | ||
| 
						 | 
					4fc561cc7b | ||
| 
						 | 
					ad3e3a0b99 | ||
| 
						 | 
					bfb8c849cb | ||
| 
						 | 
					09dd25b5d1 | ||
| 
						 | 
					c48efb1dbe | ||
| 
						 | 
					5408acb6b7 | ||
| 
						 | 
					15481160f9 | ||
| 
						 | 
					00ccff03a5 | ||
| 
						 | 
					21594921b1 | ||
| 
						 | 
					42c91eebc9 | ||
| 
						 | 
					88273e08b4 | ||
| 
						 | 
					08f7fb45ef | ||
| 
						 | 
					75ebda3ce6 | ||
| 
						 | 
					53ff15fcbf | ||
| 
						 | 
					72adb70ee2 | ||
| 
						 | 
					960d41fcfe | ||
| 
						 | 
					0c4e35b070 | ||
| 
						 | 
					c53f1cb813 | ||
| 
						 | 
					f6696cc15e | ||
| 
						 | 
					fef9a41fe4 | ||
| 
						 | 
					e279a0a076 | ||
| 
						 | 
					88c8aaed96 | ||
| 
						 | 
					34beaefe1c | ||
| 
						 | 
					10b828f193 | ||
| 
						 | 
					43e6260ed0 | ||
| 
						 | 
					62cbbd7226 | ||
| 
						 | 
					f7cbe7fcee | ||
| 
						 | 
					d8e4ff9079 | ||
| 
						 | 
					510ff27eda | ||
| 
						 | 
					5abf055100 | ||
| 
						 | 
					4bb5721f6b | ||
| 
						 | 
					c41ab70d3a | ||
| 
						 | 
					a05e403bf2 | ||
| 
						 | 
					2f57e0f71d | ||
| 
						 | 
					95a2eb9767 | ||
| 
						 | 
					55175daed7 | ||
| 
						 | 
					ae16a51e95 | ||
| 
						 | 
					4398d67546 | ||
| 
						 | 
					c93738687c | ||
| 
						 | 
					799492e606 | ||
| 
						 | 
					f33ff071bb | ||
| 
						 | 
					99e854743c | ||
| 
						 | 
					6f79062d91 | ||
| 
						 | 
					2f682c3995 | ||
| 
						 | 
					067370e68f | ||
| 
						 | 
					2aa439a6a4 | ||
| 
						 | 
					b477182dc3 | ||
| 
						 | 
					a8964ca89e | ||
| 
						 | 
					4f0e92d07c | ||
| 
						 | 
					577f4e8a5f | ||
| 
						 | 
					0586d9fe56 | ||
| 
						 | 
					1f0d9bf05e | ||
| 
						 | 
					8bcae2a527 | ||
| 
						 | 
					35ca9aae91 | ||
| 
						 | 
					6cdd2bf8d7 | ||
| 
						 | 
					ce7d175adb | ||
| 
						 | 
					1904fd095f | ||
| 
						 | 
					897d0ac5cc | ||
| 
						 | 
					e262d0182f | ||
| 
						 | 
					aa5b748c10 | ||
| 
						 | 
					c6728df4a3 | ||
| 
						 | 
					3c182c5bc8 | ||
| 
						 | 
					1b5677847b | ||
| 
						 | 
					1be59a9dbe | ||
| 
						 | 
					55c2178ad4 | ||
| 
						 | 
					3e3d392e1c | ||
| 
						 | 
					593de57fa2 | ||
| 
						 | 
					04b0e43ea6 | ||
| 
						 | 
					04eee290c8 | ||
| 
						 | 
					756a7a4e4b | ||
| 
						 | 
					121b4ac220 | ||
| 
						 | 
					cdbd5db3af | ||
| 
						 | 
					b2240f6ad4 | ||
| 
						 | 
					33814a55f8 | ||
| 
						 | 
					a57c5a417b | ||
| 
						 | 
					ff1a28de17 | ||
| 
						 | 
					772f57f99b | ||
| 
						 | 
					dacee32b8b | ||
| 
						 | 
					fa1a3eb06d | ||
| 
						 | 
					bd4817ca54 | ||
| 
						 | 
					d3a160e217 | ||
| 
						 | 
					c5837f2791 | ||
| 
						 | 
					490bd43f18 | ||
| 
						 | 
					005eea249c | ||
| 
						 | 
					9747de8ec6 | ||
| 
						 | 
					849a9799d0 | ||
| 
						 | 
					e32ae4fe33 | ||
| 
						 | 
					4595389c4c | ||
| 
						 | 
					e8ccc7cc49 | ||
| 
						 | 
					673d21047a | ||
| 
						 | 
					6186261589 | ||
| 
						 | 
					45310e219c | ||
| 
						 | 
					250f6b2c88 | ||
| 
						 | 
					fdefc2bbda | ||
| 
						 | 
					2079df8527 | ||
| 
						 | 
					b53659452c | ||
| 
						 | 
					46f1d6653e | ||
| 
						 | 
					c1938a60f7 | ||
| 
						 | 
					d65110f352 | ||
| 
						 | 
					9fa3bbcb5a | ||
| 
						 | 
					19e51ecbe6 | ||
| 
						 | 
					99d62f2922 | ||
| 
						 | 
					284743cafe | ||
| 
						 | 
					08d7307b2a | ||
| 
						 | 
					ef6a64abe6 | ||
| 
						 | 
					18bfa52ef7 | ||
| 
						 | 
					d62be2652c | ||
| 
						 | 
					31f3433635 | ||
| 
						 | 
					639eaceee7 | ||
| 
						 | 
					ea53ff80af | ||
| 
						 | 
					feeca1bcbc | ||
| 
						 | 
					12e7278c08 | ||
| 
						 | 
					45b5c44eb9 | ||
| 
						 | 
					e3456c1028 | ||
| 
						 | 
					327fb38573 | ||
| 
						 | 
					1d25d9e15f | ||
| 
						 | 
					cc7cee3f48 | ||
| 
						 | 
					d7062710cd | ||
| 
						 | 
					3e21f52796 | ||
| 
						 | 
					9bfba734d8 | ||
| 
						 | 
					0511d9a9d2 | ||
| 
						 | 
					aaebf2f47e | ||
| 
						 | 
					23f8d77b38 | ||
| 
						 | 
					498b4dbba4 | ||
| 
						 | 
					ecc42e79ae | ||
| 
						 | 
					0bf8ed523d | ||
| 
						 | 
					87d22ee0fe | ||
| 
						 | 
					52e25f63d4 | ||
| 
						 | 
					f3fb67972b | ||
| 
						 | 
					6400756364 | ||
| 
						 | 
					d71d04bf6f | ||
| 
						 | 
					af90259e09 | ||
| 
						 | 
					7c9762f698 | ||
| 
						 | 
					b2e67fdb7c | ||
| 
						 | 
					d59f0314bd | ||
| 
						 | 
					131baefac3 | ||
| 
						 | 
					a450078b67 | ||
| 
						 | 
					f6b041bf6c | ||
| 
						 | 
					4f340d181a | ||
| 
						 | 
					74a11701f3 | ||
| 
						 | 
					b58e38e936 | ||
| 
						 | 
					8713cb48a8 | ||
| 
						 | 
					277c5e57ed | ||
| 
						 | 
					b3d62d5af5 | ||
| 
						 | 
					9c0f0c8d81 | ||
| 
						 | 
					18a0a2a7ac | ||
| 
						 | 
					8b99d9e33c | ||
| 
						 | 
					01e7e153e3 | ||
| 
						 | 
					0ad4ca24d2 | ||
| 
						 | 
					724a155552 | ||
| 
						 | 
					e1b0715dd6 | ||
| 
						 | 
					a5c6598966 | ||
| 
						 | 
					d38b74a316 | ||
| 
						 | 
					54cab4b47b | ||
| 
						 | 
					c093666bc5 | ||
| 
						 | 
					04972f6761 | ||
| 
						 | 
					67f8234622 | ||
| 
						 | 
					201d6dbd9c | ||
| 
						 | 
					1865ef6fd4 | ||
| 
						 | 
					fbcac5aa83 | ||
| 
						 | 
					2b72ab8f8f | ||
| 
						 | 
					0ea97b9408 | ||
| 
						 | 
					28683ac7c0 | ||
| 
						 | 
					c72e3e210f | ||
| 
						 | 
					a8c856d43c | ||
| 
						 | 
					1953cfc954 | ||
| 
						 | 
					8e7bac950e | ||
| 
						 | 
					03cdacfb6a | ||
| 
						 | 
					30f3c3dfad | ||
| 
						 | 
					dee1b0d5bb | ||
| 
						 | 
					6f2b0fe463 | ||
| 
						 | 
					0c69176498 | ||
| 
						 | 
					4e7a0385b5 | ||
| 
						 | 
					4adbd94b10 | ||
| 
						 | 
					4a2905b645 | ||
| 
						 | 
					0638c6b530 | ||
| 
						 | 
					7dd35ce013 | ||
| 
						 | 
					c8629c3178 | ||
| 
						 | 
					77ccf51cb3 | ||
| 
						 | 
					01197f0c77 | ||
| 
						 | 
					69c86ff4fd | ||
| 
						 | 
					9a42ffad81 | ||
| 
						 | 
					0d8633bf8c | ||
| 
						 | 
					d79e80a3d0 | ||
| 
						 | 
					d890ebdd25 | ||
| 
						 | 
					5ee9b3ce72 | ||
| 
						 | 
					031b539a09 | ||
| 
						 | 
					47c3c706e8 | ||
| 
						 | 
					0d830a616c | ||
| 
						 | 
					e219bf8338 | ||
| 
						 | 
					6c0fba2480 | ||
| 
						 | 
					f4cc159f53 | ||
| 
						 | 
					04c002abc2 | ||
| 
						 | 
					78fd17907e | ||
| 
						 | 
					47edc83080 | ||
| 
						 | 
					33e34f5bf4 | ||
| 
						 | 
					3832ecadae | ||
| 
						 | 
					285ed128ab | ||
| 
						 | 
					048144074b | ||
| 
						 | 
					856ae782c7 | ||
| 
						 | 
					12e3f97541 | ||
| 
						 | 
					30f6fe0710 | ||
| 
						 | 
					0aa8f1df3c | ||
| 
						 | 
					d39147a8a1 | ||
| 
						 | 
					7991f7e936 | ||
| 
						 | 
					10011efcd7 | ||
| 
						 | 
					0058815c8f | ||
| 
						 | 
					02048984b7 | ||
| 
						 | 
					544601e9f4 | ||
| 
						 | 
					2634f06c20 | ||
| 
						 | 
					7549426a16 | ||
| 
						 | 
					6dcb9a3434 | ||
| 
						 | 
					e5a31c00ec | ||
| 
						 | 
					00295242fd | ||
| 
						 | 
					21b6ed7c29 | ||
| 
						 | 
					01894cbf10 | ||
| 
						 | 
					28cad2b9d9 | ||
| 
						 | 
					71d7b7dbe7 | ||
| 
						 | 
					4563723db1 | ||
| 
						 | 
					0bce6a1899 | ||
| 
						 | 
					e71d6dbd9c | ||
| 
						 | 
					132ecd19f3 | ||
| 
						 | 
					a404143f4c | ||
| 
						 | 
					44467ca45e | ||
| 
						 | 
					f70ea0747d | ||
| 
						 | 
					c619abf18a | ||
| 
						 | 
					6da1323437 | ||
| 
						 | 
					1dd29785cf | ||
| 
						 | 
					5681987ee4 | ||
| 
						 | 
					6eeb18fc68 | ||
| 
						 | 
					01c90575b4 | ||
| 
						 | 
					32e9cb0275 | ||
| 
						 | 
					017bade93c | ||
| 
						 | 
					c9c79e7cae | ||
| 
						 | 
					777d41dd07 | ||
| 
						 | 
					6238c30913 | ||
| 
						 | 
					db164ab514 | ||
| 
						 | 
					c72ef17731 | ||
| 
						 | 
					8dbee7867f | ||
| 
						 | 
					f403108f5f | ||
| 
						 | 
					223a97f92a | ||
| 
						 | 
					bb44a8ae1f | ||
| 
						 | 
					b5a5062176 | ||
| 
						 | 
					50faa32ce3 | ||
| 
						 | 
					b6caed527c | ||
| 
						 | 
					d5ef77353b | ||
| 
						 | 
					336beba81b | ||
| 
						 | 
					5d23a7905c | ||
| 
						 | 
					143dfcc904 | ||
| 
						 | 
					e076cd42f0 | ||
| 
						 | 
					5bed38974e | ||
| 
						 | 
					35bc4b82ff | ||
| 
						 | 
					4e5d870f72 | ||
| 
						 | 
					83def94db5 | ||
| 
						 | 
					9d74c1ef2a | ||
| 
						 | 
					6023d4bdb5 | ||
| 
						 | 
					5e38f566f2 | ||
| 
						 | 
					b57341a78b | ||
| 
						 | 
					910c32c0e9 | ||
| 
						 | 
					e49456d8d8 | ||
| 
						 | 
					c46becc9b3 | ||
| 
						 | 
					b6e637106f | ||
| 
						 | 
					787cffe3d0 | ||
| 
						 | 
					9d914e6809 | ||
| 
						 | 
					4e183c66e9 | ||
| 
						 | 
					b1630fcbe8 | ||
| 
						 | 
					cd44f730cc | ||
| 
						 | 
					ce5a39559e | ||
| 
						 | 
					ccffaef603 | ||
| 
						 | 
					ae41f3a3ee | ||
| 
						 | 
					c7e576d6bf | ||
| 
						 | 
					f069b2812e | ||
| 
						 | 
					f20ff6213e | ||
| 
						 | 
					24ff74bdcb | ||
| 
						 | 
					230e79916f | ||
| 
						 | 
					9f14b4db35 | ||
| 
						 | 
					ec916398e7 | ||
| 
						 | 
					6befad112e | ||
| 
						 | 
					55ce23b8db | ||
| 
						 | 
					1292ec1ecf | ||
| 
						 | 
					65a324062f | ||
| 
						 | 
					c9db617e0b | ||
| 
						 | 
					b43137d0cc | ||
| 
						 | 
					eeca642778 | ||
| 
						 | 
					5cef6ca36a | ||
| 
						 | 
					be2b518f7b | ||
| 
						 | 
					1b0d29afbc | ||
| 
						 | 
					55cf480c0b | ||
| 
						 | 
					84db6912f0 | ||
| 
						 | 
					7495cc28a0 | ||
| 
						 | 
					87744f786b | ||
| 
						 | 
					5bcfa4c859 | ||
| 
						 | 
					8ef731bcd1 | ||
| 
						 | 
					8d02f3c68a | ||
| 
						 | 
					b1f8b49e8b | ||
| 
						 | 
					75733e4237 | ||
| 
						 | 
					6e318e2cd1 | ||
| 
						 | 
					01e6b84b14 | ||
| 
						 | 
					69705d22be | ||
| 
						 | 
					b16d1dcff5 | ||
| 
						 | 
					10c5b5d5ba | ||
| 
						 | 
					d9c5c170f6 | ||
| 
						 | 
					32c7138d86 | ||
| 
						 | 
					d29244d872 | ||
| 
						 | 
					0fca6eda1e | ||
| 
						 | 
					1ddf606332 | ||
| 
						 | 
					bc8084da74 | ||
| 
						 | 
					5eed400862 | ||
| 
						 | 
					a37a0959ac | ||
| 
						 | 
					53845c52e5 | ||
| 
						 | 
					d429f0b14f | ||
| 
						 | 
					02339187ad | ||
| 
						 | 
					827f778525 | ||
| 
						 | 
					d3fc85eea9 | ||
| 
						 | 
					9a62963129 | ||
| 
						 | 
					a0b2543ba1 | ||
| 
						 | 
					387acaac69 | ||
| 
						 | 
					952b775dbe | ||
| 
						 | 
					eadb76b3f8 | ||
| 
						 | 
					b3f7313ae4 | ||
| 
						 | 
					0c97d48027 | ||
| 
						 | 
					c4a678de9e | ||
| 
						 | 
					2c834f4d29 | ||
| 
						 | 
					b93d290c9f | ||
| 
						 | 
					32266bb21a | ||
| 
						 | 
					cab39103b7 | ||
| 
						 | 
					5c56a80ac9 | ||
| 
						 | 
					d0bac31721 | ||
| 
						 | 
					9258e54cfa | ||
| 
						 | 
					ccb68495e0 | ||
| 
						 | 
					db4236fe0b | ||
| 
						 | 
					a4e43427f8 | ||
| 
						 | 
					829190abdd | ||
| 
						 | 
					99688cd051 | ||
| 
						 | 
					1ba0a92702 | ||
| 
						 | 
					065d5a8d17 | ||
| 
						 | 
					3b53c0ac19 | ||
| 
						 | 
					ed56fe4e82 | ||
| 
						 | 
					1fbbe807ed | ||
| 
						 | 
					c3dccfa05b | ||
| 
						 | 
					7703d9293f | ||
| 
						 | 
					bcf560e4b8 | ||
| 
						 | 
					9d944b501a | ||
| 
						 | 
					cf013a5384 | ||
| 
						 | 
					2f367491c4 | ||
| 
						 | 
					e7d93b62ec | ||
| 
						 | 
					a5b309c0c9 | ||
| 
						 | 
					df46b96ab0 | ||
| 
						 | 
					bda1e332ce | ||
| 
						 | 
					53b2ad5fd0 | ||
| 
						 | 
					b44d9c657d | ||
| 
						 | 
					92ef7527d1 | ||
| 
						 | 
					c37d6b4ca8 | 
@@ -1,66 +0,0 @@
 | 
			
		||||
goto %1
 | 
			
		||||
 | 
			
		||||
:install
 | 
			
		||||
rem Check pip
 | 
			
		||||
python --version
 | 
			
		||||
python -m pip install --upgrade pip
 | 
			
		||||
python -m pip --version
 | 
			
		||||
if "%buildsystem%" == "scons" (
 | 
			
		||||
    rem Install Mako
 | 
			
		||||
    python -m pip install Mako==1.1.3
 | 
			
		||||
    rem Install pywin32 extensions, needed by SCons
 | 
			
		||||
    python -m pip install pypiwin32
 | 
			
		||||
    rem Install python wheels, necessary to install SCons via pip
 | 
			
		||||
    python -m pip install wheel
 | 
			
		||||
    rem Install SCons
 | 
			
		||||
    python -m pip install scons==3.1.2
 | 
			
		||||
    call scons --version
 | 
			
		||||
) else (
 | 
			
		||||
    python -m pip install Mako meson
 | 
			
		||||
    meson --version
 | 
			
		||||
 | 
			
		||||
    rem Install pkg-config, which meson requires even on windows
 | 
			
		||||
    cinst -y pkgconfiglite
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
rem Install flex/bison
 | 
			
		||||
set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip
 | 
			
		||||
if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%"
 | 
			
		||||
7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul
 | 
			
		||||
set Path=%CD%\winflexbison;%Path%
 | 
			
		||||
win_flex --version
 | 
			
		||||
win_bison --version
 | 
			
		||||
rem Download and extract LLVM
 | 
			
		||||
if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%"
 | 
			
		||||
7z x -y "%LLVM_ARCHIVE%" > nul
 | 
			
		||||
if "%buildsystem%" == "scons" (
 | 
			
		||||
    mkdir llvm\bin
 | 
			
		||||
    set LLVM=%CD%\llvm
 | 
			
		||||
) else (
 | 
			
		||||
    move llvm subprojects\
 | 
			
		||||
    copy .appveyor\llvm-wrap.meson subprojects\llvm\meson.build
 | 
			
		||||
)
 | 
			
		||||
goto :eof
 | 
			
		||||
 | 
			
		||||
:build_script
 | 
			
		||||
if "%buildsystem%" == "scons" (
 | 
			
		||||
    call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.2 machine=x86 llvm=1
 | 
			
		||||
) else (
 | 
			
		||||
    call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=x86
 | 
			
		||||
    rem We use default-library as static to affect any wraps (such as expat and zlib)
 | 
			
		||||
    rem it would be better if we could set subprojects buildtype independently,
 | 
			
		||||
    rem but I haven't written that patch yet :)
 | 
			
		||||
    call meson builddir --backend=vs2017 --default-library=static -Dbuild-tests=true -Db_vscrt=mtd --buildtype=release -Dllvm=true -Dgallium-drivers=swrast -Dosmesa=gallium
 | 
			
		||||
    pushd builddir
 | 
			
		||||
    call msbuild mesa.sln /m
 | 
			
		||||
    popd
 | 
			
		||||
)
 | 
			
		||||
goto :eof
 | 
			
		||||
 | 
			
		||||
:test_script
 | 
			
		||||
if "%buildsystem%" == "scons" (
 | 
			
		||||
    call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.2 machine=x86 llvm=1 check
 | 
			
		||||
) else (
 | 
			
		||||
    call meson test -C builddir
 | 
			
		||||
)
 | 
			
		||||
goto :eof
 | 
			
		||||
@@ -1,36 +0,0 @@
 | 
			
		||||
# A meson.build file for binary wrapping the LLVM used in the appvyeor CI
 | 
			
		||||
project('llvm', ['cpp'])
 | 
			
		||||
 | 
			
		||||
cpp = meson.get_compiler('cpp')
 | 
			
		||||
 | 
			
		||||
_deps = []
 | 
			
		||||
_search = join_paths(meson.current_source_dir(), 'lib')
 | 
			
		||||
foreach d : ['LLVMAnalysis', 'LLVMAsmParser', 'LLVMAsmPrinter',
 | 
			
		||||
             'LLVMBinaryFormat', 'LLVMBitReader', 'LLVMBitWriter',
 | 
			
		||||
             'LLVMCodeGen', 'LLVMCore', 'LLVMCoroutines', 'LLVMCoverage',
 | 
			
		||||
             'LLVMDebugInfoCodeView', 'LLVMDebugInfoDWARF',
 | 
			
		||||
             'LLVMDebugInfoMSF', 'LLVMDebugInfoPDB', 'LLVMDemangle',
 | 
			
		||||
             'LLVMDlltoolDriver', 'LLVMExecutionEngine', 'LLVMGlobalISel',
 | 
			
		||||
             'LLVMInstCombine', 'LLVMInstrumentation', 'LLVMInterpreter',
 | 
			
		||||
             'LLVMipo', 'LLVMIRReader', 'LLVMLibDriver', 'LLVMLineEditor',
 | 
			
		||||
             'LLVMLinker', 'LLVMLTO', 'LLVMMCDisassembler', 'LLVMMCJIT',
 | 
			
		||||
             'LLVMMC', 'LLVMMCParser', 'LLVMMIRParser', 'LLVMObjCARCOpts',
 | 
			
		||||
             'LLVMObject', 'LLVMObjectYAML', 'LLVMOption', 'LLVMOrcJIT',
 | 
			
		||||
             'LLVMPasses', 'LLVMProfileData', 'LLVMRuntimeDyld',
 | 
			
		||||
             'LLVMScalarOpts', 'LLVMSelectionDAG', 'LLVMSupport',
 | 
			
		||||
             'LLVMSymbolize', 'LLVMTableGen', 'LLVMTarget',
 | 
			
		||||
             'LLVMTransformUtils', 'LLVMVectorize', 'LLVMX86AsmParser',
 | 
			
		||||
             'LLVMX86AsmPrinter', 'LLVMX86CodeGen', 'LLVMX86Desc',
 | 
			
		||||
             'LLVMX86Disassembler', 'LLVMX86Info', 'LLVMX86Utils',
 | 
			
		||||
             'LLVMXRay']
 | 
			
		||||
  _deps += cpp.find_library(d, dirs : _search)
 | 
			
		||||
endforeach
 | 
			
		||||
 | 
			
		||||
dep_llvm = declare_dependency(
 | 
			
		||||
  include_directories : include_directories('include'),
 | 
			
		||||
  dependencies : _deps,
 | 
			
		||||
  version : '5.0.1',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
has_rtti = false
 | 
			
		||||
irbuilder_h = files('include/llvm/IR/IRBuilder.h')
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
((nil . ((show-trailing-whitespace . t)))
 | 
			
		||||
 (prog-mode
 | 
			
		||||
  (indent-tabs-mode . nil)
 | 
			
		||||
  (tab-width . 8)
 | 
			
		||||
  (c-basic-offset . 3)
 | 
			
		||||
  (c-file-style . "stroustrup")
 | 
			
		||||
  (fill-column . 78)
 | 
			
		||||
  (eval . (progn
 | 
			
		||||
	    (c-set-offset 'case-label '0)
 | 
			
		||||
	    (c-set-offset 'innamespace '0)
 | 
			
		||||
	    (c-set-offset 'inline-open '0)))
 | 
			
		||||
  (whitespace-style face indentation)
 | 
			
		||||
  (whitespace-line-column . 79)
 | 
			
		||||
  (eval ignore-errors
 | 
			
		||||
        (require 'whitespace)
 | 
			
		||||
        (whitespace-mode 1)))
 | 
			
		||||
 (makefile-mode (indent-tabs-mode . t))
 | 
			
		||||
 )
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
# To use this config on you editor, follow the instructions at:
 | 
			
		||||
# http://editorconfig.org
 | 
			
		||||
 | 
			
		||||
root = true
 | 
			
		||||
 | 
			
		||||
[*]
 | 
			
		||||
charset = utf-8
 | 
			
		||||
insert_final_newline = true
 | 
			
		||||
tab_width = 8
 | 
			
		||||
 | 
			
		||||
[*.{c,h,cpp,hpp,cc,hh}]
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 3
 | 
			
		||||
max_line_length = 78
 | 
			
		||||
 | 
			
		||||
[{Makefile*,*.mk}]
 | 
			
		||||
indent_style = tab
 | 
			
		||||
 | 
			
		||||
[{*.py,SCons*}]
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 4
 | 
			
		||||
 | 
			
		||||
[*.pl]
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 4
 | 
			
		||||
 | 
			
		||||
[*.m4]
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 2
 | 
			
		||||
 | 
			
		||||
[*.yml]
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 2
 | 
			
		||||
 | 
			
		||||
[*.html]
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 2
 | 
			
		||||
 | 
			
		||||
[*.patch]
 | 
			
		||||
trim_trailing_whitespace = false
 | 
			
		||||
 | 
			
		||||
[{meson.build,meson_options.txt}]
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 2
 | 
			
		||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +0,0 @@
 | 
			
		||||
*.pyc
 | 
			
		||||
*.pyo
 | 
			
		||||
*.out
 | 
			
		||||
build
 | 
			
		||||
							
								
								
									
										1564
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										1564
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,54 +0,0 @@
 | 
			
		||||
CONFIG_LOCALVERSION="ccu"
 | 
			
		||||
 | 
			
		||||
CONFIG_DEBUG_KERNEL=y
 | 
			
		||||
 | 
			
		||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
 | 
			
		||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
 | 
			
		||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
 | 
			
		||||
CONFIG_DEVFREQ_GOV_PASSIVE=y
 | 
			
		||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
 | 
			
		||||
 | 
			
		||||
CONFIG_DRM=y
 | 
			
		||||
CONFIG_DRM_ROCKCHIP=y
 | 
			
		||||
CONFIG_DRM_PANFROST=y
 | 
			
		||||
CONFIG_DRM_LIMA=y
 | 
			
		||||
CONFIG_DRM_PANEL_SIMPLE=y
 | 
			
		||||
CONFIG_PWM_CROS_EC=y
 | 
			
		||||
CONFIG_BACKLIGHT_PWM=y
 | 
			
		||||
 | 
			
		||||
CONFIG_ROCKCHIP_CDN_DP=n
 | 
			
		||||
 | 
			
		||||
CONFIG_SPI_ROCKCHIP=y
 | 
			
		||||
CONFIG_PWM_ROCKCHIP=y
 | 
			
		||||
CONFIG_PHY_ROCKCHIP_DP=y
 | 
			
		||||
CONFIG_DWMAC_ROCKCHIP=y
 | 
			
		||||
 | 
			
		||||
CONFIG_MFD_RK808=y
 | 
			
		||||
CONFIG_REGULATOR_RK808=y
 | 
			
		||||
CONFIG_RTC_DRV_RK808=y
 | 
			
		||||
CONFIG_COMMON_CLK_RK808=y
 | 
			
		||||
 | 
			
		||||
CONFIG_REGULATOR_FAN53555=y
 | 
			
		||||
CONFIG_REGULATOR=y
 | 
			
		||||
 | 
			
		||||
CONFIG_REGULATOR_VCTRL=y
 | 
			
		||||
 | 
			
		||||
CONFIG_KASAN=n
 | 
			
		||||
CONFIG_KASAN_INLINE=n
 | 
			
		||||
CONFIG_STACKTRACE=n
 | 
			
		||||
 | 
			
		||||
CONFIG_TMPFS=y
 | 
			
		||||
 | 
			
		||||
CONFIG_PROVE_LOCKING=n
 | 
			
		||||
CONFIG_DEBUG_LOCKDEP=n
 | 
			
		||||
CONFIG_SOFTLOCKUP_DETECTOR=n
 | 
			
		||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n
 | 
			
		||||
 | 
			
		||||
CONFIG_FW_LOADER_COMPRESS=y
 | 
			
		||||
 | 
			
		||||
CONFIG_USB_USBNET=y
 | 
			
		||||
CONFIG_NETDEVICES=y
 | 
			
		||||
CONFIG_USB_NET_DRIVERS=y
 | 
			
		||||
CONFIG_USB_RTL8152=y
 | 
			
		||||
CONFIG_USB_NET_AX8817X=y
 | 
			
		||||
CONFIG_USB_NET_SMSC95XX=y
 | 
			
		||||
@@ -1,136 +0,0 @@
 | 
			
		||||
CONFIG_LOCALVERSION="ccu"
 | 
			
		||||
 | 
			
		||||
CONFIG_DEBUG_KERNEL=y
 | 
			
		||||
 | 
			
		||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
 | 
			
		||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
 | 
			
		||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
 | 
			
		||||
CONFIG_DEVFREQ_GOV_PASSIVE=y
 | 
			
		||||
 | 
			
		||||
CONFIG_DRM=y
 | 
			
		||||
CONFIG_DRM_ROCKCHIP=y
 | 
			
		||||
CONFIG_DRM_PANFROST=y
 | 
			
		||||
CONFIG_DRM_LIMA=y
 | 
			
		||||
CONFIG_DRM_PANEL_SIMPLE=y
 | 
			
		||||
CONFIG_DRM_MSM=y
 | 
			
		||||
CONFIG_DRM_I2C_ADV7511=y
 | 
			
		||||
CONFIG_DRM_I2C_ADV7533=y
 | 
			
		||||
CONFIG_PWM_CROS_EC=y
 | 
			
		||||
CONFIG_BACKLIGHT_PWM=y
 | 
			
		||||
 | 
			
		||||
CONFIG_ROCKCHIP_CDN_DP=n
 | 
			
		||||
 | 
			
		||||
CONFIG_SPI_ROCKCHIP=y
 | 
			
		||||
CONFIG_PWM_ROCKCHIP=y
 | 
			
		||||
CONFIG_PHY_ROCKCHIP_DP=y
 | 
			
		||||
CONFIG_DWMAC_ROCKCHIP=y
 | 
			
		||||
CONFIG_STMMAC_ETH=y
 | 
			
		||||
CONFIG_TYPEC_FUSB302=y
 | 
			
		||||
CONFIG_TYPEC=y
 | 
			
		||||
CONFIG_TYPEC_TCPM=y
 | 
			
		||||
 | 
			
		||||
# MSM platform bits
 | 
			
		||||
CONFIG_QCOM_RPMHPD=y
 | 
			
		||||
CONFIG_QCOM_RPMPD=y
 | 
			
		||||
CONFIG_SDM_GPUCC_845=y
 | 
			
		||||
CONFIG_SDM_VIDEOCC_845=y
 | 
			
		||||
CONFIG_SDM_DISPCC_845=y
 | 
			
		||||
CONFIG_SDM_LPASSCC_845=y
 | 
			
		||||
CONFIG_SDM_CAMCC_845=y
 | 
			
		||||
CONFIG_RESET_QCOM_PDC=y
 | 
			
		||||
CONFIG_DRM_TI_SN65DSI86=y
 | 
			
		||||
CONFIG_I2C_QCOM_GENI=y
 | 
			
		||||
CONFIG_SPI_QCOM_GENI=y
 | 
			
		||||
CONFIG_PHY_QCOM_QUSB2=y
 | 
			
		||||
CONFIG_PHY_QCOM_QMP=y
 | 
			
		||||
CONFIG_QCOM_LLCC=y
 | 
			
		||||
CONFIG_QCOM_SPMI_TEMP_ALARM=y
 | 
			
		||||
CONFIG_POWER_RESET_QCOM_PON=y
 | 
			
		||||
CONFIG_RTC_DRV_PM8XXX=y
 | 
			
		||||
CONFIG_INTERCONNECT=y
 | 
			
		||||
CONFIG_INTERCONNECT_QCOM=y
 | 
			
		||||
CONFIG_INTERCONNECT_QCOM_SDM845=y
 | 
			
		||||
CONFIG_INTERCONNECT_QCOM_MSM8916=y
 | 
			
		||||
CONFIG_INTERCONNECT_QCOM_OSM_L3=y
 | 
			
		||||
CONFIG_INTERCONNECT_QCOM_SC7180=y
 | 
			
		||||
CONFIG_QCOM_WDT=y
 | 
			
		||||
CONFIG_CRYPTO_DEV_QCOM_RNG=y
 | 
			
		||||
 | 
			
		||||
# db410c ethernet
 | 
			
		||||
CONFIG_USB_RTL8152=y
 | 
			
		||||
# db820c ethernet
 | 
			
		||||
CONFIG_ATL1C=y
 | 
			
		||||
 | 
			
		||||
CONFIG_ARCH_ALPINE=n
 | 
			
		||||
CONFIG_ARCH_BCM2835=n
 | 
			
		||||
CONFIG_ARCH_BCM_IPROC=n
 | 
			
		||||
CONFIG_ARCH_BERLIN=n
 | 
			
		||||
CONFIG_ARCH_BRCMSTB=n
 | 
			
		||||
CONFIG_ARCH_EXYNOS=n
 | 
			
		||||
CONFIG_ARCH_K3=n
 | 
			
		||||
CONFIG_ARCH_LAYERSCAPE=n
 | 
			
		||||
CONFIG_ARCH_LG1K=n
 | 
			
		||||
CONFIG_ARCH_HISI=n
 | 
			
		||||
CONFIG_ARCH_MEDIATEK=n
 | 
			
		||||
CONFIG_ARCH_MVEBU=n
 | 
			
		||||
CONFIG_ARCH_SEATTLE=n
 | 
			
		||||
CONFIG_ARCH_SYNQUACER=n
 | 
			
		||||
CONFIG_ARCH_RENESAS=n
 | 
			
		||||
CONFIG_ARCH_R8A774A1=n
 | 
			
		||||
CONFIG_ARCH_R8A774C0=n
 | 
			
		||||
CONFIG_ARCH_R8A7795=n
 | 
			
		||||
CONFIG_ARCH_R8A7796=n
 | 
			
		||||
CONFIG_ARCH_R8A77965=n
 | 
			
		||||
CONFIG_ARCH_R8A77970=n
 | 
			
		||||
CONFIG_ARCH_R8A77980=n
 | 
			
		||||
CONFIG_ARCH_R8A77990=n
 | 
			
		||||
CONFIG_ARCH_R8A77995=n
 | 
			
		||||
CONFIG_ARCH_STRATIX10=n
 | 
			
		||||
CONFIG_ARCH_TEGRA=n
 | 
			
		||||
CONFIG_ARCH_SPRD=n
 | 
			
		||||
CONFIG_ARCH_THUNDER=n
 | 
			
		||||
CONFIG_ARCH_THUNDER2=n
 | 
			
		||||
CONFIG_ARCH_UNIPHIER=n
 | 
			
		||||
CONFIG_ARCH_VEXPRESS=n
 | 
			
		||||
CONFIG_ARCH_XGENE=n
 | 
			
		||||
CONFIG_ARCH_ZX=n
 | 
			
		||||
CONFIG_ARCH_ZYNQMP=n
 | 
			
		||||
 | 
			
		||||
# Strip out some stuff we don't need for graphics testing, to reduce
 | 
			
		||||
# the build.
 | 
			
		||||
CONFIG_CAN=n
 | 
			
		||||
CONFIG_WIRELESS=n
 | 
			
		||||
CONFIG_RFKILL=n
 | 
			
		||||
CONFIG_WLAN=n
 | 
			
		||||
 | 
			
		||||
CONFIG_REGULATOR_FAN53555=y
 | 
			
		||||
CONFIG_REGULATOR=y
 | 
			
		||||
 | 
			
		||||
CONFIG_REGULATOR_VCTRL=y
 | 
			
		||||
 | 
			
		||||
CONFIG_KASAN=n
 | 
			
		||||
CONFIG_KASAN_INLINE=n
 | 
			
		||||
CONFIG_STACKTRACE=n
 | 
			
		||||
 | 
			
		||||
CONFIG_TMPFS=y
 | 
			
		||||
 | 
			
		||||
CONFIG_PROVE_LOCKING=n
 | 
			
		||||
CONFIG_DEBUG_LOCKDEP=n
 | 
			
		||||
CONFIG_SOFTLOCKUP_DETECTOR=y
 | 
			
		||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
 | 
			
		||||
 | 
			
		||||
CONFIG_DETECT_HUNG_TASK=y
 | 
			
		||||
 | 
			
		||||
CONFIG_FW_LOADER_COMPRESS=y
 | 
			
		||||
CONFIG_FW_LOADER_USER_HELPER=n
 | 
			
		||||
 | 
			
		||||
CONFIG_USB_USBNET=y
 | 
			
		||||
CONFIG_NETDEVICES=y
 | 
			
		||||
CONFIG_USB_NET_DRIVERS=y
 | 
			
		||||
CONFIG_USB_RTL8152=y
 | 
			
		||||
CONFIG_USB_NET_AX8817X=y
 | 
			
		||||
CONFIG_USB_NET_SMSC95XX=y
 | 
			
		||||
 | 
			
		||||
# For amlogic
 | 
			
		||||
CONFIG_MESON_GXL_PHY=y
 | 
			
		||||
CONFIG_MDIO_BUS_MUX_MESON_G12A=y
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
[*.sh]
 | 
			
		||||
indent_size = 2
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
  devcds=`find /sys/devices/virtual/devcoredump/ -name data 2>/dev/null`
 | 
			
		||||
  for i in $devcds; do
 | 
			
		||||
    echo "Found a devcoredump at $i."
 | 
			
		||||
    if cp $i /results/first.devcore; then
 | 
			
		||||
      echo 1 > $i
 | 
			
		||||
      echo "Saved to the job artifacts at /first.devcore"
 | 
			
		||||
      exit 0
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
  sleep 10
 | 
			
		||||
done
 | 
			
		||||
@@ -1,100 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Boot script for Chrome OS devices attached to a servo debug connector, using
 | 
			
		||||
# NFS and TFTP to boot.
 | 
			
		||||
 | 
			
		||||
# We're run from the root of the repo, make a helper var for our paths
 | 
			
		||||
BM=$CI_PROJECT_DIR/install/bare-metal
 | 
			
		||||
 | 
			
		||||
# Runner config checks
 | 
			
		||||
if [ -z "$BM_SERIAL" ]; then
 | 
			
		||||
  echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
 | 
			
		||||
  echo "This is the CPU serial device."
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_SERIAL_EC" ]; then
 | 
			
		||||
  echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
 | 
			
		||||
  echo "This is the EC serial device for controlling board power"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ ! -d /nfs ]; then
 | 
			
		||||
  echo "NFS rootfs directory needs to be mounted at /nfs by the gitlab runner"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ ! -d /tftp ]; then
 | 
			
		||||
  echo "TFTP directory for this board needs to be mounted at /tftp by the gitlab runner"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# job config checks
 | 
			
		||||
if [ -z "$BM_KERNEL" ]; then
 | 
			
		||||
  echo "Must set BM_KERNEL to your board's kernel FIT image"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_ROOTFS" ]; then
 | 
			
		||||
  echo "Must set BM_ROOTFS to your board's rootfs directory in the job's variables"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_CMDLINE" ]; then
 | 
			
		||||
  echo "Must set BM_CMDLINE to your board's kernel command line arguments"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
# Clear out any previous run's artifacts.
 | 
			
		||||
rm -rf results/
 | 
			
		||||
mkdir -p results
 | 
			
		||||
 | 
			
		||||
# Create the rootfs in the NFS directory.  rm to make sure it's in a pristine
 | 
			
		||||
# state, since it's volume-mounted on the host.
 | 
			
		||||
rsync -a --delete $BM_ROOTFS/ /nfs/
 | 
			
		||||
mkdir -p /nfs/results
 | 
			
		||||
. $BM/rootfs-setup.sh /nfs
 | 
			
		||||
 | 
			
		||||
# Put the kernel/dtb image and the boot command line in the tftp directory for
 | 
			
		||||
# the board to find.  For normal Mesa development, we build the kernel and
 | 
			
		||||
# store it in the docker container that this script is running in.
 | 
			
		||||
#
 | 
			
		||||
# However, container builds are expensive, so when you're hacking on the
 | 
			
		||||
# kernel, it's nice to be able to skip the half hour container build and plus
 | 
			
		||||
# moving that container to the runner.  So, if BM_KERNEL is a URL, fetch it
 | 
			
		||||
# instead of looking in the container.  Note that the kernel build should be
 | 
			
		||||
# the output of:
 | 
			
		||||
#
 | 
			
		||||
# make Image.lzma
 | 
			
		||||
#
 | 
			
		||||
# mkimage \
 | 
			
		||||
#  -A arm64 \
 | 
			
		||||
#  -f auto \
 | 
			
		||||
#  -C lzma \
 | 
			
		||||
#  -d arch/arm64/boot/Image.lzma \
 | 
			
		||||
#  -b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \
 | 
			
		||||
#  cheza-image.img
 | 
			
		||||
 | 
			
		||||
rm -rf /tftp/*
 | 
			
		||||
if echo "$BM_KERNEL" | grep -q http; then
 | 
			
		||||
  apt install -y wget
 | 
			
		||||
  wget $BM_KERNEL -O /tftp/vmlinuz
 | 
			
		||||
else
 | 
			
		||||
  cp $BM_KERNEL /tftp/vmlinuz
 | 
			
		||||
fi
 | 
			
		||||
echo "$BM_CMDLINE" > /tftp/cmdline
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
python3 $BM/cros_servo_run.py \
 | 
			
		||||
        --cpu $BM_SERIAL \
 | 
			
		||||
        --ec $BM_SERIAL_EC
 | 
			
		||||
ret=$?
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# Bring artifacts back from the NFS dir to the build dir where gitlab-runner
 | 
			
		||||
# will look for them.
 | 
			
		||||
cp -Rp /nfs/results/. results/
 | 
			
		||||
 | 
			
		||||
exit $ret
 | 
			
		||||
@@ -1,150 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
#
 | 
			
		||||
# Copyright © 2020 Google LLC
 | 
			
		||||
#
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
# copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
# to deal in the Software without restriction, including without limitation
 | 
			
		||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
# and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
# Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
#
 | 
			
		||||
# The above copyright notice and this permission notice (including the next
 | 
			
		||||
# paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
# Software.
 | 
			
		||||
#
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 | 
			
		||||
# IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import queue
 | 
			
		||||
import re
 | 
			
		||||
from serial_buffer import SerialBuffer
 | 
			
		||||
import sys
 | 
			
		||||
import threading
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CrosServoRun:
 | 
			
		||||
    def __init__(self, cpu, ec):
 | 
			
		||||
        # Merged FIFO for the two serial buffers, fed by threads.
 | 
			
		||||
        self.serial_queue = queue.Queue()
 | 
			
		||||
        self.sentinel = object()
 | 
			
		||||
        self.threads_done = 0
 | 
			
		||||
 | 
			
		||||
        self.ec_ser = SerialBuffer(
 | 
			
		||||
            ec, "results/serial-ec.txt", "R SERIAL-EC> ")
 | 
			
		||||
        self.cpu_ser = SerialBuffer(
 | 
			
		||||
            cpu, "results/serial.txt", "R SERIAL-CPU> ")
 | 
			
		||||
 | 
			
		||||
        self.iter_feed_ec = threading.Thread(
 | 
			
		||||
            target=self.iter_feed_queue, daemon=True, args=(self.ec_ser.lines(),))
 | 
			
		||||
        self.iter_feed_ec.start()
 | 
			
		||||
 | 
			
		||||
        self.iter_feed_cpu = threading.Thread(
 | 
			
		||||
            target=self.iter_feed_queue, daemon=True, args=(self.cpu_ser.lines(),))
 | 
			
		||||
        self.iter_feed_cpu.start()
 | 
			
		||||
 | 
			
		||||
    # Feed lines from our serial queues into the merged queue, marking when our
 | 
			
		||||
    # input is done.
 | 
			
		||||
    def iter_feed_queue(self, it):
 | 
			
		||||
        for i in it:
 | 
			
		||||
            self.serial_queue.put(i)
 | 
			
		||||
        self.serial_queue.put(sentinel)
 | 
			
		||||
 | 
			
		||||
    # Return the next line from the queue, counting how many threads have
 | 
			
		||||
    # terminated and joining when done
 | 
			
		||||
    def get_serial_queue_line(self):
 | 
			
		||||
        line = self.serial_queue.get()
 | 
			
		||||
        if line == self.sentinel:
 | 
			
		||||
            self.threads_done = self.threads_done + 1
 | 
			
		||||
            if self.threads_done == 2:
 | 
			
		||||
                self.iter_feed_cpu.join()
 | 
			
		||||
                self.iter_feed_ec.join()
 | 
			
		||||
        return line
 | 
			
		||||
 | 
			
		||||
    # Returns an iterator for getting the next line.
 | 
			
		||||
    def serial_queue_lines(self):
 | 
			
		||||
        return iter(self.get_serial_queue_line, self.sentinel)
 | 
			
		||||
 | 
			
		||||
    def ec_write(self, s):
 | 
			
		||||
        print("W SERIAL-EC> %s" % s)
 | 
			
		||||
        self.ec_ser.serial.write(s.encode())
 | 
			
		||||
 | 
			
		||||
    def cpu_write(self, s):
 | 
			
		||||
        print("W SERIAL-CPU> %s" % s)
 | 
			
		||||
        self.cpu_ser.serial.write(s.encode())
 | 
			
		||||
 | 
			
		||||
    def run(self):
 | 
			
		||||
        # Flush any partial commands in the EC's prompt, then ask for a reboot.
 | 
			
		||||
        self.ec_write("\n")
 | 
			
		||||
        self.ec_write("reboot\n")
 | 
			
		||||
 | 
			
		||||
        # This is emitted right when the bootloader pauses to check for input.
 | 
			
		||||
        # Emit a ^N character to request network boot, because we don't have a
 | 
			
		||||
        # direct-to-netboot firmware on cheza.
 | 
			
		||||
        for line in self.serial_queue_lines():
 | 
			
		||||
            if re.search("load_archive: loading locale_en.bin", line):
 | 
			
		||||
                self.cpu_write("\016")
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
            # The Cheza boards have issues with failing to bring up power to
 | 
			
		||||
            # the system sometimes, possibly dependent on ambient temperature
 | 
			
		||||
            # in the farm.
 | 
			
		||||
            if re.search("POWER_GOOD not seen in time", line):
 | 
			
		||||
                print("Detected intermittent poweron failure, restarting run...")
 | 
			
		||||
                return 2
 | 
			
		||||
 | 
			
		||||
        tftp_failures = 0
 | 
			
		||||
        for line in self.serial_queue_lines():
 | 
			
		||||
            if re.search("---. end Kernel panic", line):
 | 
			
		||||
                return 1
 | 
			
		||||
 | 
			
		||||
            # The Cheza firmware seems to occasionally get stuck looping in
 | 
			
		||||
            # this error state during TFTP booting, possibly based on amount of
 | 
			
		||||
            # network traffic around it, but it'll usually recover after a
 | 
			
		||||
            # reboot.
 | 
			
		||||
            if re.search("R8152: Bulk read error 0xffffffbf", line):
 | 
			
		||||
                tftp_failures += 1
 | 
			
		||||
                if tftp_failures >= 100:
 | 
			
		||||
                    print("Detected intermittent tftp failure, restarting run...")
 | 
			
		||||
                    return 2
 | 
			
		||||
 | 
			
		||||
            result = re.search("bare-metal result: (\S*)", line)
 | 
			
		||||
            if result:
 | 
			
		||||
                if result.group(1) == "pass":
 | 
			
		||||
                    return 0
 | 
			
		||||
                else:
 | 
			
		||||
                    return 1
 | 
			
		||||
 | 
			
		||||
        print("Reached the end of the CPU serial log without finding a result")
 | 
			
		||||
        return 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    parser = argparse.ArgumentParser()
 | 
			
		||||
    parser.add_argument('--cpu', type=str,
 | 
			
		||||
                        help='CPU Serial device', required=True)
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        '--ec', type=str, help='EC Serial device', required=True)
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    servo = CrosServoRun(args.cpu, args.ec)
 | 
			
		||||
 | 
			
		||||
    while True:
 | 
			
		||||
        retval = servo.run()
 | 
			
		||||
        if retval != 2:
 | 
			
		||||
            break
 | 
			
		||||
 | 
			
		||||
    # power down the CPU on the device
 | 
			
		||||
    servo.ec_write("power off\n")
 | 
			
		||||
 | 
			
		||||
    sys.exit(retval)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
@@ -1,30 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
STRINGS=$(mktemp)
 | 
			
		||||
ERRORS=$(mktemp)
 | 
			
		||||
 | 
			
		||||
trap "rm $STRINGS; rm $ERRORS;" EXIT
 | 
			
		||||
 | 
			
		||||
FILE=$1
 | 
			
		||||
shift 1
 | 
			
		||||
 | 
			
		||||
while getopts "f:e:" opt; do
 | 
			
		||||
  case $opt in
 | 
			
		||||
    f) echo "$OPTARG" >> $STRINGS;;
 | 
			
		||||
    e) echo "$OPTARG" >> $STRINGS ; echo "$OPTARG" >> $ERRORS;;
 | 
			
		||||
  esac
 | 
			
		||||
done
 | 
			
		||||
shift $((OPTIND -1))
 | 
			
		||||
 | 
			
		||||
echo "Waiting for $FILE to say one of following strings"
 | 
			
		||||
cat $STRINGS
 | 
			
		||||
 | 
			
		||||
while ! egrep -wf $STRINGS $FILE; do
 | 
			
		||||
  sleep 2
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
if egrep -wf $ERRORS $FILE; then
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
BM=$CI_PROJECT_DIR/install/bare-metal
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_SERIAL" -a -z "$BM_SERIAL_SCRIPT" ]; then
 | 
			
		||||
  echo "Must set BM_SERIAL OR BM_SERIAL_SCRIPT in your gitlab-runner config.toml [[runners]] environment"
 | 
			
		||||
  echo "BM_SERIAL:"
 | 
			
		||||
  echo "  This is the serial device to talk to for waiting for fastboot to be ready and logging from the kernel."
 | 
			
		||||
  echo "BM_SERIAL_SCRIPT:"
 | 
			
		||||
  echo "  This is a shell script to talk to for waiting for fastboot to be ready and logging from the kernel."
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_POWERUP" ]; then
 | 
			
		||||
  echo "Must set BM_POWERUP in your gitlab-runner config.toml [[runners]] environment"
 | 
			
		||||
  echo "This is a shell script that should reset the device and begin its boot sequence"
 | 
			
		||||
  echo "such that it pauses at fastboot."
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_POWERDOWN" ]; then
 | 
			
		||||
  echo "Must set BM_POWERDOWN in your gitlab-runner config.toml [[runners]] environment"
 | 
			
		||||
  echo "This is a shell script that should power off the device."
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_FASTBOOT_SERIAL" ]; then
 | 
			
		||||
  echo "Must set BM_FASTBOOT_SERIAL in your gitlab-runner config.toml [[runners]] environment"
 | 
			
		||||
  echo "This must be the a stable-across-resets fastboot serial number."
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_KERNEL" ]; then
 | 
			
		||||
  echo "Must set BM_KERNEL to your board's kernel vmlinuz or Image.gz in the job's variables:"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_DTB" ]; then
 | 
			
		||||
  echo "Must set BM_DTB to your board's DTB file in the job's variables:"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_ROOTFS" ]; then
 | 
			
		||||
  echo "Must set BM_ROOTFS to your board's rootfs directory in the job's variables:"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$BM_WEBDAV_IP" -o -z "$BM_WEBDAV_PORT" ]; then
 | 
			
		||||
  echo "BM_WEBDAV_IP and/or BM_WEBDAV_PORT is not set - no results will be uploaded from DUT!"
 | 
			
		||||
  WEBDAV_CMDLINE=""
 | 
			
		||||
else
 | 
			
		||||
  WEBDAV_CMDLINE="webdav=http://$BM_WEBDAV_IP:$BM_WEBDAV_PORT"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
# Clear out any previous run's artifacts.
 | 
			
		||||
rm -rf results/
 | 
			
		||||
mkdir -p results
 | 
			
		||||
 | 
			
		||||
# Create the rootfs in a temp dir
 | 
			
		||||
rsync -a --delete $BM_ROOTFS/ rootfs/
 | 
			
		||||
. $BM/rootfs-setup.sh rootfs
 | 
			
		||||
 | 
			
		||||
# Finally, pack it up into a cpio rootfs.  Skip the vulkan CTS since none of
 | 
			
		||||
# these devices use it and it would take up space in the initrd.
 | 
			
		||||
pushd rootfs
 | 
			
		||||
find -H | \
 | 
			
		||||
  egrep -v "external/(openglcts|vulkancts|amber|glslang|spirv-tools)" |
 | 
			
		||||
  egrep -v "traces-db|apitrace|renderdoc|python" | \
 | 
			
		||||
  cpio -H newc -o | \
 | 
			
		||||
  xz --check=crc32 -T4 - > $CI_PROJECT_DIR/rootfs.cpio.gz
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
# Make the combined kernel image and dtb for passing to fastboot.  For normal
 | 
			
		||||
# Mesa development, we build the kernel and store it in the docker container
 | 
			
		||||
# that this script is running in.
 | 
			
		||||
#
 | 
			
		||||
# However, container builds are expensive, so when you're hacking on the
 | 
			
		||||
# kernel, it's nice to be able to skip the half hour container build and plus
 | 
			
		||||
# moving that container to the runner.  So, if BM_KERNEL+BM_DTB are URLs,
 | 
			
		||||
# fetch them instead of looking in the container.
 | 
			
		||||
if echo "$BM_KERNEL $BM_DTB" | grep -q http; then
 | 
			
		||||
  apt install -y wget
 | 
			
		||||
 | 
			
		||||
  wget $BM_KERNEL -O kernel
 | 
			
		||||
  wget $BM_DTB -O dtb
 | 
			
		||||
 | 
			
		||||
  cat kernel dtb > Image.gz-dtb
 | 
			
		||||
  rm kernel dtb
 | 
			
		||||
else
 | 
			
		||||
  cat $BM_KERNEL $BM_DTB > Image.gz-dtb
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
abootimg \
 | 
			
		||||
  --create artifacts/fastboot.img \
 | 
			
		||||
  -k Image.gz-dtb \
 | 
			
		||||
  -r rootfs.cpio.gz \
 | 
			
		||||
  -c cmdline="$BM_CMDLINE $WEBDAV_CMDLINE"
 | 
			
		||||
rm Image.gz-dtb
 | 
			
		||||
 | 
			
		||||
# Start nginx to get results from DUT
 | 
			
		||||
if [ -n "$WEBDAV_CMDLINE" ]; then
 | 
			
		||||
  ln -s `pwd`/results /results
 | 
			
		||||
  sed -i s/80/$BM_WEBDAV_PORT/g /etc/nginx/sites-enabled/default
 | 
			
		||||
  sed -i s/www-data/root/g /etc/nginx/nginx.conf
 | 
			
		||||
  nginx
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
export PATH=$BM:$PATH
 | 
			
		||||
 | 
			
		||||
# Start background command for talking to serial if we have one.
 | 
			
		||||
if [ -n "$BM_SERIAL_SCRIPT" ]; then
 | 
			
		||||
  $BM_SERIAL_SCRIPT | tee results/serial-output.txt &
 | 
			
		||||
 | 
			
		||||
  while [ ! -e results/serial-output.txt ]; do
 | 
			
		||||
    sleep 1
 | 
			
		||||
  done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
$BM/fastboot_run.py \
 | 
			
		||||
  --dev="$BM_SERIAL" \
 | 
			
		||||
  --fbserial="$BM_FASTBOOT_SERIAL" \
 | 
			
		||||
  --powerup="$BM_POWERUP" \
 | 
			
		||||
  --powerdown="$BM_POWERDOWN"
 | 
			
		||||
@@ -1,102 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
#
 | 
			
		||||
# Copyright © 2020 Google LLC
 | 
			
		||||
#
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
# copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
# to deal in the Software without restriction, including without limitation
 | 
			
		||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
# and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
# Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
#
 | 
			
		||||
# The above copyright notice and this permission notice (including the next
 | 
			
		||||
# paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
# Software.
 | 
			
		||||
#
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 | 
			
		||||
# IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
from serial_buffer import SerialBuffer
 | 
			
		||||
import sys
 | 
			
		||||
import threading
 | 
			
		||||
 | 
			
		||||
class FastbootRun:
 | 
			
		||||
    def __init__(self, args):
 | 
			
		||||
        self.powerup = args.powerup
 | 
			
		||||
        self.ser = SerialBuffer(args.dev, "results/serial-output.txt", "R SERIAL> ")
 | 
			
		||||
        self.fastboot="fastboot boot -s {ser} artifacts/fastboot.img".format(ser=args.fbserial)
 | 
			
		||||
 | 
			
		||||
    def logged_system(self, cmd):
 | 
			
		||||
        print("Running '{}'".format(cmd))
 | 
			
		||||
        return os.system(cmd)
 | 
			
		||||
 | 
			
		||||
    def run(self):
 | 
			
		||||
        if self.logged_system(self.powerup) != 0:
 | 
			
		||||
            return 1
 | 
			
		||||
 | 
			
		||||
        fastboot_ready = False
 | 
			
		||||
        for line in self.ser.lines():
 | 
			
		||||
            if re.search("fastboot: processing commands", line) or \
 | 
			
		||||
                re.search("Listening for fastboot command on", line):
 | 
			
		||||
                fastboot_ready = True
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
            if re.search("data abort", line):
 | 
			
		||||
                return 1
 | 
			
		||||
 | 
			
		||||
        if not fastboot_ready:
 | 
			
		||||
            print("Failed to get to fastboot prompt")
 | 
			
		||||
            return 1
 | 
			
		||||
 | 
			
		||||
        if self.logged_system(self.fastboot) != 0:
 | 
			
		||||
            return 1
 | 
			
		||||
 | 
			
		||||
        for line in self.ser.lines():
 | 
			
		||||
            if re.search("---. end Kernel panic", line):
 | 
			
		||||
                return 1
 | 
			
		||||
 | 
			
		||||
            # The db820c boards intermittently reboot.  Just restart the run
 | 
			
		||||
            # when if we see a reboot after we got past fastboot.
 | 
			
		||||
            if re.search("PON REASON", line):
 | 
			
		||||
                print("Detected spontaneous reboot, restarting run...")
 | 
			
		||||
                return 2
 | 
			
		||||
 | 
			
		||||
            result = re.search("bare-metal result: (\S*)", line)
 | 
			
		||||
            if result:
 | 
			
		||||
                if result.group(1) == "pass":
 | 
			
		||||
                    return 0
 | 
			
		||||
                else:
 | 
			
		||||
                    return 1
 | 
			
		||||
 | 
			
		||||
        print("Reached the end of the CPU serial log without finding a result")
 | 
			
		||||
        return 1
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    parser = argparse.ArgumentParser()
 | 
			
		||||
    parser.add_argument('--dev', type=str, help='Serial device (otherwise reading from serial-output.txt)')
 | 
			
		||||
    parser.add_argument('--powerup', type=str, help='shell command for rebooting', required=True)
 | 
			
		||||
    parser.add_argument('--powerdown', type=str, help='shell command for powering off', required=True)
 | 
			
		||||
    parser.add_argument('--fbserial', type=str, help='fastboot serial number of the board', required=True)
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    fastboot = FastbootRun(args)
 | 
			
		||||
 | 
			
		||||
    while True:
 | 
			
		||||
        retval = fastboot.run()
 | 
			
		||||
        if retval != 2:
 | 
			
		||||
            break
 | 
			
		||||
 | 
			
		||||
    fastboot.logged_system(args.powerdown)
 | 
			
		||||
 | 
			
		||||
    sys.exit(retval)
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
relay=$1
 | 
			
		||||
 | 
			
		||||
if [ -z "$relay" ]; then
 | 
			
		||||
    echo "Must supply a relay arg"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py off $relay
 | 
			
		||||
@@ -1,19 +0,0 @@
 | 
			
		||||
#!/usr/bin/python3
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
import serial
 | 
			
		||||
 | 
			
		||||
mode = sys.argv[1]
 | 
			
		||||
relay = sys.argv[2]
 | 
			
		||||
 | 
			
		||||
# our relays are "off" means "board is powered".
 | 
			
		||||
mode_swap = {
 | 
			
		||||
     "on" : "off",
 | 
			
		||||
     "off" : "on",
 | 
			
		||||
}
 | 
			
		||||
mode = mode_swap[mode]
 | 
			
		||||
 | 
			
		||||
ser = serial.Serial('/dev/ttyACM0', 115200, timeout=2)
 | 
			
		||||
command = "relay {} {}\n\r".format(mode, relay)
 | 
			
		||||
ser.write(command.encode())
 | 
			
		||||
ser.close()
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
relay=$1
 | 
			
		||||
 | 
			
		||||
if [ -z "$relay" ]; then
 | 
			
		||||
    echo "Must supply a relay arg"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py off $relay
 | 
			
		||||
sleep 5
 | 
			
		||||
$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py on $relay
 | 
			
		||||
@@ -1,46 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
mount -t proc none /proc
 | 
			
		||||
mount -t sysfs none /sys
 | 
			
		||||
mount -t devtmpfs none /dev || echo possibly already mounted
 | 
			
		||||
mkdir -p /dev/pts
 | 
			
		||||
mount -t devpts devpts /dev/pts
 | 
			
		||||
mount -t tmpfs tmpfs /tmp
 | 
			
		||||
 | 
			
		||||
. /set-job-env-vars.sh
 | 
			
		||||
 | 
			
		||||
# Store Mesa's disk cache under /tmp, rather than sending it out over NFS.
 | 
			
		||||
export XDG_CACHE_HOME=/tmp
 | 
			
		||||
 | 
			
		||||
echo "nameserver 8.8.8.8" > /etc/resolv.conf
 | 
			
		||||
 | 
			
		||||
# Not all DUTs have network
 | 
			
		||||
sntp -sS pool.ntp.org || true
 | 
			
		||||
 | 
			
		||||
# Start a little daemon to capture the first devcoredump we encounter.  (They
 | 
			
		||||
# expire after 5 minutes, so we poll for them).
 | 
			
		||||
./capture-devcoredump.sh &
 | 
			
		||||
 | 
			
		||||
if sh $BARE_METAL_TEST_SCRIPT; then
 | 
			
		||||
  OK=1
 | 
			
		||||
else
 | 
			
		||||
  OK=0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# upload artifacts via webdav
 | 
			
		||||
WEBDAV=$(cat /proc/cmdline | tr " " "\n" | grep webdav | cut -d '=' -f 2 || true)
 | 
			
		||||
if [ -n "$WEBDAV" ]; then
 | 
			
		||||
  find /results -type f -exec curl -T {} $WEBDAV/{} \;
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ $OK -eq 1 ]; then
 | 
			
		||||
    echo "bare-metal result: pass"
 | 
			
		||||
else
 | 
			
		||||
    echo "bare-metal result: fail"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Wait until the job would have timed out anyway, so we don't spew a "init
 | 
			
		||||
# exited" panic.
 | 
			
		||||
sleep 6000
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
server {
 | 
			
		||||
    listen 80 default_server;
 | 
			
		||||
    listen [::]:80 default_server;
 | 
			
		||||
 | 
			
		||||
    server_name _;
 | 
			
		||||
 | 
			
		||||
    location / {
 | 
			
		||||
        dav_methods     PUT;
 | 
			
		||||
        dav_ext_methods PROPFIND OPTIONS;
 | 
			
		||||
        dav_access      user:rw group:rw all:r;
 | 
			
		||||
 | 
			
		||||
        client_body_temp_path   /tmp;
 | 
			
		||||
        client_max_body_size    0;
 | 
			
		||||
        create_full_put_path    on;
 | 
			
		||||
 | 
			
		||||
        root /results;
 | 
			
		||||
 | 
			
		||||
        autoindex     on;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,68 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
rootfs_dst=$1
 | 
			
		||||
 | 
			
		||||
mkdir -p $rootfs_dst/results
 | 
			
		||||
 | 
			
		||||
# Set up the init script that brings up the system.
 | 
			
		||||
cp $BM/init.sh $rootfs_dst/init
 | 
			
		||||
 | 
			
		||||
cp $BM/capture-devcoredump.sh $rootfs_dst/
 | 
			
		||||
 | 
			
		||||
set +x
 | 
			
		||||
# Pass through relevant env vars from the gitlab job to the baremetal init script
 | 
			
		||||
touch $rootfs_dst/set-job-env-vars.sh
 | 
			
		||||
chmod +x $rootfs_dst/set-job-env-vars.sh
 | 
			
		||||
for var in \
 | 
			
		||||
    BARE_METAL_TEST_SCRIPT \
 | 
			
		||||
    CI_COMMIT_BRANCH \
 | 
			
		||||
    CI_COMMIT_TITLE \
 | 
			
		||||
    CI_JOB_JWT \
 | 
			
		||||
    CI_JOB_ID \
 | 
			
		||||
    CI_JOB_URL \
 | 
			
		||||
    CI_MERGE_REQUEST_SOURCE_BRANCH_NAME \
 | 
			
		||||
    CI_MERGE_REQUEST_TITLE \
 | 
			
		||||
    CI_NODE_INDEX \
 | 
			
		||||
    CI_NODE_TOTAL \
 | 
			
		||||
    CI_PIPELINE_ID \
 | 
			
		||||
    CI_PROJECT_PATH \
 | 
			
		||||
    CI_RUNNER_DESCRIPTION \
 | 
			
		||||
    DEQP_CASELIST_FILTER \
 | 
			
		||||
    DEQP_CONFIG \
 | 
			
		||||
    DEQP_EXPECTED_FAILS \
 | 
			
		||||
    DEQP_EXPECTED_RENDERER \
 | 
			
		||||
    DEQP_HEIGHT \
 | 
			
		||||
    DEQP_NO_SAVE_RESULTS \
 | 
			
		||||
    DEQP_FLAKES \
 | 
			
		||||
    DEQP_PARALLEL \
 | 
			
		||||
    DEQP_RESULTS_DIR \
 | 
			
		||||
    DEQP_SKIPS \
 | 
			
		||||
    DEQP_VARIANT \
 | 
			
		||||
    DEQP_VER \
 | 
			
		||||
    DEQP_WIDTH \
 | 
			
		||||
    DEVICE_NAME \
 | 
			
		||||
    DRIVER_NAME \
 | 
			
		||||
    FD_MESA_DEBUG \
 | 
			
		||||
    FLAKES_CHANNEL \
 | 
			
		||||
    IR3_SHADER_DEBUG \
 | 
			
		||||
    MESA_GL_VERSION_OVERRIDE \
 | 
			
		||||
    MESA_GLSL_VERSION_OVERRIDE \
 | 
			
		||||
    MESA_GLES_VERSION_OVERRIDE \
 | 
			
		||||
    NIR_VALIDATE \
 | 
			
		||||
    TRACIE_NO_UNIT_TESTS \
 | 
			
		||||
    TRACIE_UPLOAD_TO_MINIO \
 | 
			
		||||
    TU_DEBUG \
 | 
			
		||||
    VK_DRIVER \
 | 
			
		||||
    ; do
 | 
			
		||||
  if [ -n "${!var+x}" ]; then
 | 
			
		||||
    echo "export $var=${!var@Q}" >> $rootfs_dst/set-job-env-vars.sh
 | 
			
		||||
  fi
 | 
			
		||||
done
 | 
			
		||||
echo "Variables passed through:"
 | 
			
		||||
cat $rootfs_dst/set-job-env-vars.sh
 | 
			
		||||
set -x
 | 
			
		||||
 | 
			
		||||
# Add the Mesa drivers we built, and make a consistent symlink to them.
 | 
			
		||||
mkdir -p $rootfs_dst/$CI_PROJECT_DIR
 | 
			
		||||
tar -C $rootfs_dst/$CI_PROJECT_DIR/ -xf $CI_PROJECT_DIR/artifacts/install.tar
 | 
			
		||||
ln -sf $CI_PROJECT_DIR/install $rootfs_dst/install
 | 
			
		||||
@@ -1,147 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
#
 | 
			
		||||
# Copyright © 2020 Google LLC
 | 
			
		||||
#
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
# copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
# to deal in the Software without restriction, including without limitation
 | 
			
		||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
# and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
# Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
#
 | 
			
		||||
# The above copyright notice and this permission notice (including the next
 | 
			
		||||
# paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
# Software.
 | 
			
		||||
#
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 | 
			
		||||
# IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
from datetime import datetime, timezone
 | 
			
		||||
import queue
 | 
			
		||||
import serial
 | 
			
		||||
import threading
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SerialBuffer:
 | 
			
		||||
    def __init__(self, dev, filename, prefix):
 | 
			
		||||
        self.filename = filename
 | 
			
		||||
        self.dev = dev
 | 
			
		||||
 | 
			
		||||
        if dev:
 | 
			
		||||
            self.f = open(filename, "wb+")
 | 
			
		||||
            self.serial = serial.Serial(dev, 115200, timeout=10)
 | 
			
		||||
        else:
 | 
			
		||||
            self.f = open(filename, "rb")
 | 
			
		||||
 | 
			
		||||
        self.byte_queue = queue.Queue()
 | 
			
		||||
        self.line_queue = queue.Queue()
 | 
			
		||||
        self.prefix = prefix
 | 
			
		||||
        self.sentinel = object()
 | 
			
		||||
 | 
			
		||||
        if self.dev:
 | 
			
		||||
            self.read_thread = threading.Thread(
 | 
			
		||||
                target=self.serial_read_thread_loop, daemon=True)
 | 
			
		||||
        else:
 | 
			
		||||
            self.read_thread = threading.Thread(
 | 
			
		||||
                target=self.serial_file_read_thread_loop, daemon=True)
 | 
			
		||||
        self.read_thread.start()
 | 
			
		||||
 | 
			
		||||
        self.lines_thread = threading.Thread(
 | 
			
		||||
            target=self.serial_lines_thread_loop, daemon=True)
 | 
			
		||||
        self.lines_thread.start()
 | 
			
		||||
 | 
			
		||||
    # Thread that just reads the bytes from the serial device to try to keep from
 | 
			
		||||
    # buffer overflowing it.
 | 
			
		||||
    def serial_read_thread_loop(self):
 | 
			
		||||
        greet = "Serial thread reading from %s\n" % self.dev
 | 
			
		||||
        self.byte_queue.put(greet.encode())
 | 
			
		||||
 | 
			
		||||
        while True:
 | 
			
		||||
            try:
 | 
			
		||||
                self.byte_queue.put(self.serial.read())
 | 
			
		||||
            except Exception as err:
 | 
			
		||||
                print(self.prefix + str(err))
 | 
			
		||||
                self.byte_queue.put(self.sentinel)
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
    # Thread that just reads the bytes from the file of serial output that some
 | 
			
		||||
    # other process is appending to.
 | 
			
		||||
    def serial_file_read_thread_loop(self):
 | 
			
		||||
        greet = "Serial thread reading from %s\n" % self.filename
 | 
			
		||||
        self.byte_queue.put(greet.encode())
 | 
			
		||||
 | 
			
		||||
        while True:
 | 
			
		||||
            line = self.f.readline()
 | 
			
		||||
            if line:
 | 
			
		||||
                self.byte_queue.put(line)
 | 
			
		||||
            else:
 | 
			
		||||
                time.sleep(0.1)
 | 
			
		||||
 | 
			
		||||
    # Thread that processes the stream of bytes to 1) log to stdout, 2) log to
 | 
			
		||||
    # file, 3) add to the queue of lines to be read by program logic
 | 
			
		||||
 | 
			
		||||
    def serial_lines_thread_loop(self):
 | 
			
		||||
        line = bytearray()
 | 
			
		||||
        while True:
 | 
			
		||||
            bytes = self.byte_queue.get(block=True)
 | 
			
		||||
 | 
			
		||||
            if bytes == self.sentinel:
 | 
			
		||||
                self.read_thread.join()
 | 
			
		||||
                self.line_queue.put(self.sentinel)
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
            # Write our data to the output file if we're the ones reading from
 | 
			
		||||
            # the serial device
 | 
			
		||||
            if self.dev:
 | 
			
		||||
                self.f.write(bytes)
 | 
			
		||||
                self.f.flush()
 | 
			
		||||
 | 
			
		||||
            for b in bytes:
 | 
			
		||||
                line.append(b)
 | 
			
		||||
                if b == b'\n'[0]:
 | 
			
		||||
                    line = line.decode(errors="replace")
 | 
			
		||||
 | 
			
		||||
                    time = datetime.now().strftime('%y-%m-%d %H:%M:%S')
 | 
			
		||||
                    print("{endc}{time} {prefix}{line}".format(
 | 
			
		||||
                        time=time, prefix=self.prefix, line=line, endc='\033[0m'), flush=True, end='')
 | 
			
		||||
 | 
			
		||||
                    self.line_queue.put(line)
 | 
			
		||||
                    line = bytearray()
 | 
			
		||||
 | 
			
		||||
    def get_line(self):
 | 
			
		||||
        line = self.line_queue.get()
 | 
			
		||||
        if line == self.sentinel:
 | 
			
		||||
            self.lines_thread.join()
 | 
			
		||||
        return line
 | 
			
		||||
 | 
			
		||||
    def lines(self):
 | 
			
		||||
        return iter(self.get_line, self.sentinel)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    parser = argparse.ArgumentParser()
 | 
			
		||||
 | 
			
		||||
    parser.add_argument('--dev', type=str, help='Serial device')
 | 
			
		||||
    parser.add_argument('--file', type=str,
 | 
			
		||||
                        help='Filename for serial output', required=True)
 | 
			
		||||
    parser.add_argument('--prefix', type=str,
 | 
			
		||||
                        help='Prefix for logging serial to stdout', nargs='?')
 | 
			
		||||
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    ser = SerialBuffer(args.dev, args.file, args.prefix or "")
 | 
			
		||||
    for line in ser.lines():
 | 
			
		||||
        # We're just using this as a logger, so eat the produced lines and drop
 | 
			
		||||
        # them
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
@@ -1,36 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
# Need an unreleased version of Waffle for surfaceless support in apitrace
 | 
			
		||||
# Replace this build with the Debian package once that's possible
 | 
			
		||||
 | 
			
		||||
WAFFLE_VERSION="e3c995d9a2693b687501715b6550619922346089"
 | 
			
		||||
git clone https://gitlab.freedesktop.org/mesa/waffle.git --single-branch --no-checkout /waffle
 | 
			
		||||
pushd /waffle
 | 
			
		||||
git checkout "$WAFFLE_VERSION"
 | 
			
		||||
cmake -B_build -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_ARGS .
 | 
			
		||||
make -C _build install
 | 
			
		||||
mkdir -p build/lib build/bin
 | 
			
		||||
cp _build/lib/libwaffle-1.so build/lib/libwaffle-1.so.0
 | 
			
		||||
cp _build/bin/wflinfo build/bin/wflinfo
 | 
			
		||||
${STRIP_CMD:-strip} build/lib/* build/bin/*
 | 
			
		||||
find . -not -path './build' -not -path './build/*' -delete
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
APITRACE_VERSION="9.0"
 | 
			
		||||
 | 
			
		||||
git clone https://github.com/apitrace/apitrace.git --single-branch --no-checkout /apitrace
 | 
			
		||||
pushd /apitrace
 | 
			
		||||
git checkout "$APITRACE_VERSION"
 | 
			
		||||
# Note: The cmake stuff for waffle in apitrace fails to use waffle's library
 | 
			
		||||
# directory.  Just force the issue here.
 | 
			
		||||
env LDFLAGS="-L/usr/local/lib" \
 | 
			
		||||
    cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=False -DENABLE_WAFFLE=on -DWaffle_DIR=/usr/local/lib/cmake/Waffle/ $EXTRA_CMAKE_ARGS
 | 
			
		||||
ninja -C _build
 | 
			
		||||
mkdir build
 | 
			
		||||
cp _build/apitrace build
 | 
			
		||||
cp _build/eglretrace build
 | 
			
		||||
${STRIP_CMD:-strip} build/*
 | 
			
		||||
find . -not -path './build' -not -path './build/*' -delete
 | 
			
		||||
popd
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
cargo install deqp-runner \
 | 
			
		||||
  -j ${FDO_CI_CONCURRENT:-4} \
 | 
			
		||||
  --version 0.1.5 \
 | 
			
		||||
  --root /usr/local \
 | 
			
		||||
  $EXTRA_CARGO_ARGS
 | 
			
		||||
@@ -1,67 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
git config --global user.email "mesa@example.com"
 | 
			
		||||
git config --global user.name "Mesa CI"
 | 
			
		||||
git clone \
 | 
			
		||||
    https://github.com/KhronosGroup/VK-GL-CTS.git \
 | 
			
		||||
    -b vulkan-cts-1.2.3.2 \
 | 
			
		||||
    /VK-GL-CTS
 | 
			
		||||
pushd /VK-GL-CTS
 | 
			
		||||
 | 
			
		||||
# cherry-pick fix for surfaceless config choosing:
 | 
			
		||||
git cherry-pick -x 8f3bfc6c7def0c0cb452d5dadf31aa7fef242365
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
 | 
			
		||||
# libpng (sigh).  The archives get their checksums checked anyway, and git
 | 
			
		||||
# always goes through ssh or https.
 | 
			
		||||
python3 external/fetch_sources.py --insecure
 | 
			
		||||
 | 
			
		||||
mkdir -p /deqp
 | 
			
		||||
 | 
			
		||||
# Save the testlog stylesheets:
 | 
			
		||||
cp doc/testlog-stylesheet/testlog.{css,xsl} /deqp
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
pushd /deqp
 | 
			
		||||
cmake -G Ninja \
 | 
			
		||||
      -DDEQP_TARGET=${DEQP_TARGET:-x11_glx} \
 | 
			
		||||
      -DCMAKE_BUILD_TYPE=Release \
 | 
			
		||||
      $EXTRA_CMAKE_ARGS \
 | 
			
		||||
      /VK-GL-CTS
 | 
			
		||||
ninja
 | 
			
		||||
 | 
			
		||||
# Copy out the mustpass lists we want.
 | 
			
		||||
mkdir /deqp/mustpass
 | 
			
		||||
cp /VK-GL-CTS/external/vulkancts/mustpass/master/vk-default.txt \
 | 
			
		||||
   /deqp/mustpass/vk-master.txt
 | 
			
		||||
 | 
			
		||||
cp \
 | 
			
		||||
    /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
 | 
			
		||||
    /deqp/mustpass/.
 | 
			
		||||
cp \
 | 
			
		||||
    /deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-master.txt \
 | 
			
		||||
    /deqp/mustpass/.
 | 
			
		||||
 | 
			
		||||
# Save *some* executor utils, but otherwise strip things down
 | 
			
		||||
# to reduct deqp build size:
 | 
			
		||||
mkdir /deqp/executor.save
 | 
			
		||||
cp /deqp/executor/testlog-to-* /deqp/executor.save
 | 
			
		||||
rm -rf /deqp/executor
 | 
			
		||||
mv /deqp/executor.save /deqp/executor
 | 
			
		||||
 | 
			
		||||
rm -rf /deqp/external/openglcts/modules/gl_cts/data/mustpass
 | 
			
		||||
rm -rf /deqp/external/openglcts/modules/cts-runner
 | 
			
		||||
rm -rf /deqp/modules/internal
 | 
			
		||||
rm -rf /deqp/execserver
 | 
			
		||||
rm -rf /deqp/modules/egl
 | 
			
		||||
rm -rf /deqp/framework
 | 
			
		||||
find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf
 | 
			
		||||
${STRIP_CMD:-strip} external/vulkancts/modules/vulkan/deqp-vk
 | 
			
		||||
${STRIP_CMD:-strip} external/openglcts/modules/glcts
 | 
			
		||||
${STRIP_CMD:-strip} modules/*/deqp-*
 | 
			
		||||
du -sh *
 | 
			
		||||
rm -rf /VK-GL-CTS
 | 
			
		||||
popd
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
git clone https://github.com/ValveSoftware/Fossilize.git
 | 
			
		||||
cd Fossilize
 | 
			
		||||
git checkout 6b5b570008c9ab5269e341f04c811fe49a1bb72c
 | 
			
		||||
git submodule update --init
 | 
			
		||||
mkdir build
 | 
			
		||||
cd build
 | 
			
		||||
cmake .. -DCMAKE_BUILD_TYPE=Release -G Ninja
 | 
			
		||||
ninja -C . install
 | 
			
		||||
cd ../..
 | 
			
		||||
rm -rf Fossilize
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
GFXRECONSTRUCT_VERSION=57c588c04af631d1d6d381a48e2b9283f9d9d528
 | 
			
		||||
 | 
			
		||||
# Using the "dev" branch by now because it solves a crash and will allow us to
 | 
			
		||||
# use the gfxreconstruct-info tool
 | 
			
		||||
git clone https://github.com/LunarG/gfxreconstruct.git --single-branch -b dev --no-checkout /gfxreconstruct
 | 
			
		||||
pushd /gfxreconstruct
 | 
			
		||||
git checkout "$GFXRECONSTRUCT_VERSION"
 | 
			
		||||
git submodule update --init
 | 
			
		||||
git submodule update
 | 
			
		||||
cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release
 | 
			
		||||
ninja -C _build gfxrecon-replay gfxrecon-info
 | 
			
		||||
mkdir -p build/bin
 | 
			
		||||
install _build/tools/replay/gfxrecon-replay build/bin
 | 
			
		||||
install _build/tools/info/gfxrecon-info build/bin
 | 
			
		||||
strip build/bin/*
 | 
			
		||||
find . -not -path './build' -not -path './build/*' -delete
 | 
			
		||||
popd
 | 
			
		||||
@@ -1,37 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
export LLVM_CONFIG="llvm-config-10"
 | 
			
		||||
 | 
			
		||||
$LLVM_CONFIG --version
 | 
			
		||||
 | 
			
		||||
git clone https://github.com/KhronosGroup/SPIRV-LLVM-Translator -b llvm_release_100 --depth 1 /SPIRV-LLVM-Translator
 | 
			
		||||
pushd /SPIRV-LLVM-Translator
 | 
			
		||||
cmake -G Ninja -DLLVM_BUILD_TOOLS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC -DCMAKE_INSTALL_PREFIX=`$LLVM_CONFIG --prefix`
 | 
			
		||||
ninja
 | 
			
		||||
ninja install
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
git config --global user.email "mesa@example.com"
 | 
			
		||||
git config --global user.name "Mesa CI"
 | 
			
		||||
git clone \
 | 
			
		||||
    https://github.com/llvm/llvm-project \
 | 
			
		||||
    --depth 1 \
 | 
			
		||||
    /llvm-project
 | 
			
		||||
 | 
			
		||||
mkdir /libclc
 | 
			
		||||
pushd /libclc
 | 
			
		||||
cmake -G Ninja -DLLVM_CONFIG=$LLVM_CONFIG -DLIBCLC_TARGETS_TO_BUILD="spirv-mesa3d-;spirv64-mesa3d-" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr /llvm-project/libclc
 | 
			
		||||
ninja
 | 
			
		||||
ninja install
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
# workaroud cmake vs debian packaging.
 | 
			
		||||
mkdir -p /usr/lib/clc
 | 
			
		||||
ln -s /usr/share/clc/spirv64-mesa3d-.spv /usr/lib/clc/
 | 
			
		||||
ln -s /usr/share/clc/spirv-mesa3d-.spv /usr/lib/clc/
 | 
			
		||||
 | 
			
		||||
du -sh *
 | 
			
		||||
rm -rf /libclc /llvm-project /SPIRV-LLVM-Translator
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
export LIBDRM_VERSION=libdrm-2.4.102
 | 
			
		||||
 | 
			
		||||
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.xz
 | 
			
		||||
tar -xvf $LIBDRM_VERSION.tar.xz && rm $LIBDRM_VERSION.tar.xz
 | 
			
		||||
cd $LIBDRM_VERSION
 | 
			
		||||
meson build -D vc4=false -D freedreno=false -D etnaviv=false $EXTRA_MESON_ARGS
 | 
			
		||||
ninja -C build install
 | 
			
		||||
cd ..
 | 
			
		||||
rm -rf $LIBDRM_VERSION
 | 
			
		||||
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
if [ -n "$INCLUDE_OPENCL_TESTS" ]; then
 | 
			
		||||
    PIGLIT_OPTS="-DPIGLIT_BUILD_CL_TESTS=ON"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
 | 
			
		||||
pushd /piglit
 | 
			
		||||
git checkout 404862743cf8a7b37a4e3a93b4ba1858d59cd4ab
 | 
			
		||||
patch -p1 <$OLDPWD/.gitlab-ci/piglit/disable-vs_in.diff
 | 
			
		||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release $PIGLIT_OPTS
 | 
			
		||||
ninja
 | 
			
		||||
find -name .git -o -name '*ninja*' -o -iname '*cmake*' -o -name '*.[chao]' | xargs rm -rf
 | 
			
		||||
rm -rf target_api
 | 
			
		||||
popd
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
RENDERDOC_VERSION=da02e88201dc3b64316fc33ce6ff69cc729689aa
 | 
			
		||||
 | 
			
		||||
git clone https://github.com/baldurk/renderdoc.git --single-branch --no-checkout /renderdoc
 | 
			
		||||
pushd /renderdoc
 | 
			
		||||
git checkout "$RENDERDOC_VERSION"
 | 
			
		||||
cmake -G Ninja -B_build -H. -DENABLE_QRENDERDOC=false -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_ARGS
 | 
			
		||||
ninja -C _build
 | 
			
		||||
mkdir -p build/lib
 | 
			
		||||
${STRIP_CMD:-strip} _build/lib/*.so
 | 
			
		||||
cp _build/lib/renderdoc.so build/lib
 | 
			
		||||
cp _build/lib/librenderdoc.so build/lib
 | 
			
		||||
find . -not -path './build' -not -path './build/*' -delete
 | 
			
		||||
popd
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Note that this script is not actually "building" rust, but build- is the
 | 
			
		||||
# convention for the shared helpers for putting stuff in our containers.
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
# cargo (and rustup) wants to store stuff in $HOME/.cargo, and binaries in
 | 
			
		||||
# $HOME/.cargo/bin.  Make bin a link to a public bin directory so the commands
 | 
			
		||||
# are just available to all build jobs.
 | 
			
		||||
mkdir -p $HOME/.cargo
 | 
			
		||||
ln -s /usr/local/bin $HOME/.cargo/bin
 | 
			
		||||
 | 
			
		||||
# For rust in Mesa, we use rustup to install.  This lets us pick an arbitrary
 | 
			
		||||
# version of the compiler, rather than whatever the container's Debian comes
 | 
			
		||||
# with.
 | 
			
		||||
#
 | 
			
		||||
# Pick the rust compiler (1.41) available in Debian stable, and pick a specific
 | 
			
		||||
# snapshot from rustup so the compiler doesn't drift on us.
 | 
			
		||||
wget https://sh.rustup.rs -O - | \
 | 
			
		||||
    sh -s -- -y --default-toolchain 1.41.1-2020-02-27
 | 
			
		||||
 | 
			
		||||
# Set up a config script for cross compiling -- cargo needs your system cc for
 | 
			
		||||
# linking in cross builds, but doesn't know what you want to use for system cc.
 | 
			
		||||
cat > /root/.cargo/config <<EOF
 | 
			
		||||
[target.armv7-unknown-linux-gnueabihf]
 | 
			
		||||
linker = "arm-linux-gnueabihf-gcc"
 | 
			
		||||
 | 
			
		||||
[target.aarch64-unknown-linux-gnu]
 | 
			
		||||
linker = "aarch64-linux-gnu-gcc"
 | 
			
		||||
EOF
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
git clone --depth 1 https://github.com/KhronosGroup/SPIRV-Tools SPIRV-Tools
 | 
			
		||||
pushd SPIRV-Tools
 | 
			
		||||
pushd external
 | 
			
		||||
git clone --depth 1 https://github.com/KhronosGroup/SPIRV-Headers
 | 
			
		||||
popd
 | 
			
		||||
cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release
 | 
			
		||||
ninja -C _build
 | 
			
		||||
ninja -C _build install
 | 
			
		||||
popd
 | 
			
		||||
rm -rf SPIRV-Tools
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
mkdir -p /epoxy
 | 
			
		||||
pushd /epoxy
 | 
			
		||||
wget -qO- https://github.com/anholt/libepoxy/releases/download/1.5.4/libepoxy-1.5.4.tar.xz | tar -xJ --strip-components=1
 | 
			
		||||
meson build/ $EXTRA_MESON_ARGS
 | 
			
		||||
ninja -C build install
 | 
			
		||||
popd
 | 
			
		||||
rm -rf /epoxy
 | 
			
		||||
 | 
			
		||||
VIRGLRENDERER_VERSION=43148d1115a12219a0560a538c9872d07c28c558
 | 
			
		||||
git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git --single-branch --no-checkout /virglrenderer
 | 
			
		||||
pushd /virglrenderer
 | 
			
		||||
git checkout "$VIRGLRENDERER_VERSION"
 | 
			
		||||
meson build/ $EXTRA_MESON_ARGS
 | 
			
		||||
ninja -C build install
 | 
			
		||||
popd
 | 
			
		||||
rm -rf /virglrenderer
 | 
			
		||||
@@ -1,29 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
VULKANTOOLS_VERSION=1862c6a47b64cd09156205d7f7e6b3bfcea76390
 | 
			
		||||
 | 
			
		||||
git clone https://github.com/LunarG/VulkanTools.git --single-branch --no-checkout /VulkanTools
 | 
			
		||||
pushd /VulkanTools
 | 
			
		||||
git checkout "$VULKANTOOLS_VERSION"
 | 
			
		||||
./update_external_sources.sh
 | 
			
		||||
mkdir _build
 | 
			
		||||
./scripts/update_deps.py --dir=_build --config=release --generator=Ninja
 | 
			
		||||
cmake -G Ninja -B_build -H. \
 | 
			
		||||
      -DCMAKE_BUILD_TYPE=Release \
 | 
			
		||||
      -DCMAKE_INSTALL_PREFIX=/VulkanTools/build \
 | 
			
		||||
      -DBUILD_TESTS=OFF \
 | 
			
		||||
      -DBUILD_VLF=OFF \
 | 
			
		||||
      -DBUILD_VKTRACE=OFF \
 | 
			
		||||
      -DBUILD_VIA=OFF \
 | 
			
		||||
      -DBUILD_VKTRACE_REPLAY=OFF \
 | 
			
		||||
      -C_build/helper.cmake
 | 
			
		||||
ninja -C _build VkLayer_screenshot VkLayer_screenshot-staging-json
 | 
			
		||||
mkdir -p build/etc/vulkan/explicit_layer.d
 | 
			
		||||
mkdir build/lib
 | 
			
		||||
install _build/layersvt/staging-json/VkLayer_screenshot.json build/etc/vulkan/explicit_layer.d
 | 
			
		||||
install _build/layersvt/libVkLayer_screenshot.so build/lib
 | 
			
		||||
strip build/lib/*
 | 
			
		||||
find . -not -path './build' -not -path './build/*' -delete
 | 
			
		||||
popd
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
EPHEMERAL="\
 | 
			
		||||
         rdfind \
 | 
			
		||||
         unzip \
 | 
			
		||||
         "
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove $EPHEMERAL
 | 
			
		||||
 | 
			
		||||
# Fetch the NDK and extract just the toolchain we want.
 | 
			
		||||
ndk=android-ndk-r21d
 | 
			
		||||
wget -O $ndk.zip https://dl.google.com/android/repository/$ndk-linux-x86_64.zip
 | 
			
		||||
unzip -d / $ndk.zip "$ndk/toolchains/llvm/*"
 | 
			
		||||
rm $ndk.zip
 | 
			
		||||
# Since it was packed as a zip file, symlinks/hardlinks got turned into
 | 
			
		||||
# duplicate files.  Turn them into hardlinks to save on container space.
 | 
			
		||||
rdfind -makehardlinks true -makeresultsfile false /android-ndk-r21d/
 | 
			
		||||
# Drop some large tools we won't use in this build.
 | 
			
		||||
find /android-ndk-r21d/ -type f | egrep -i "clang-check|clang-tidy|lldb" | xargs rm -f
 | 
			
		||||
 | 
			
		||||
sh .gitlab-ci/create-android-ndk-pc.sh /$ndk zlib.pc "" "-lz" "1.2.3"
 | 
			
		||||
 | 
			
		||||
sh .gitlab-ci/create-android-cross-file.sh /$ndk x86_64-linux-android x86_64 x86_64
 | 
			
		||||
sh .gitlab-ci/create-android-cross-file.sh /$ndk i686-linux-android x86 x86
 | 
			
		||||
sh .gitlab-ci/create-android-cross-file.sh /$ndk aarch64-linux-android arm armv8
 | 
			
		||||
sh .gitlab-ci/create-android-cross-file.sh /$ndk arm-linux-androideabi arm armv7hl armv7a-linux-androideabi
 | 
			
		||||
 | 
			
		||||
# Not using build-libdrm.sh because we don't want its cleanup after building
 | 
			
		||||
# each arch.  Fetch and extract now.
 | 
			
		||||
export LIBDRM_VERSION=libdrm-2.4.102
 | 
			
		||||
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.xz
 | 
			
		||||
tar -xf $LIBDRM_VERSION.tar.xz && rm $LIBDRM_VERSION.tar.xz
 | 
			
		||||
 | 
			
		||||
for arch in \
 | 
			
		||||
        x86_64-linux-android \
 | 
			
		||||
        i686-linux-android \
 | 
			
		||||
        aarch64-linux-android \
 | 
			
		||||
        arm-linux-androideabi ; do
 | 
			
		||||
 | 
			
		||||
    cd $LIBDRM_VERSION
 | 
			
		||||
    rm -rf build-$arch
 | 
			
		||||
    meson build-$arch \
 | 
			
		||||
          --cross-file=/cross_file-$arch.txt \
 | 
			
		||||
          --libdir=lib/$arch \
 | 
			
		||||
          -Dlibkms=false \
 | 
			
		||||
          -Dnouveau=false \
 | 
			
		||||
          -Dvc4=false \
 | 
			
		||||
          -Detnaviv=false \
 | 
			
		||||
          -Dfreedreno=false \
 | 
			
		||||
          -Dintel=false \
 | 
			
		||||
          -Dcairo-tests=false
 | 
			
		||||
    ninja -C build-$arch install
 | 
			
		||||
    cd ..
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
rm -rf $LIBDRM_VERSION
 | 
			
		||||
 | 
			
		||||
apt-get purge -y $EPHEMERAL
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
arch=arm64
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/baremetal_build.sh
 | 
			
		||||
@@ -1,56 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
apt-get -y install ca-certificates
 | 
			
		||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
 | 
			
		||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
 | 
			
		||||
apt-get update
 | 
			
		||||
apt-get -y install \
 | 
			
		||||
	abootimg \
 | 
			
		||||
	android-sdk-ext4-utils \
 | 
			
		||||
	autoconf \
 | 
			
		||||
	automake \
 | 
			
		||||
	bc \
 | 
			
		||||
	bison \
 | 
			
		||||
	ccache \
 | 
			
		||||
	cmake \
 | 
			
		||||
	debootstrap \
 | 
			
		||||
	fastboot \
 | 
			
		||||
	flex \
 | 
			
		||||
	g++ \
 | 
			
		||||
	git \
 | 
			
		||||
	kmod \
 | 
			
		||||
	lavacli \
 | 
			
		||||
	libdrm-dev \
 | 
			
		||||
	libelf-dev \
 | 
			
		||||
	libexpat1-dev \
 | 
			
		||||
	llvm-8-dev \
 | 
			
		||||
	pkg-config \
 | 
			
		||||
	python \
 | 
			
		||||
	python3-mako \
 | 
			
		||||
	python3-pil \
 | 
			
		||||
	python3-requests \
 | 
			
		||||
	python3-pip \
 | 
			
		||||
	python3-setuptools \
 | 
			
		||||
	unzip \
 | 
			
		||||
	wget \
 | 
			
		||||
	xz-utils \
 | 
			
		||||
	zlib1g-dev
 | 
			
		||||
 | 
			
		||||
pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@6f5af7e5574509726c79109e3c147cee95e81366
 | 
			
		||||
 | 
			
		||||
apt install -y --no-remove -t buster-backports \
 | 
			
		||||
    meson
 | 
			
		||||
 | 
			
		||||
arch=armhf
 | 
			
		||||
. .gitlab-ci/container/cross_build.sh
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_pre_build.sh
 | 
			
		||||
 | 
			
		||||
# dependencies where we want a specific version
 | 
			
		||||
EXTRA_MESON_ARGS=
 | 
			
		||||
. .gitlab-ci/build-libdrm.sh
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_post_build.sh
 | 
			
		||||
@@ -1,45 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
############### Install packages for building
 | 
			
		||||
apt-get install -y ca-certificates
 | 
			
		||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
 | 
			
		||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
 | 
			
		||||
apt-get update
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
        abootimg \
 | 
			
		||||
        android-sdk-ext4-utils \
 | 
			
		||||
        bc \
 | 
			
		||||
        bison \
 | 
			
		||||
        bzip2 \
 | 
			
		||||
        ccache \
 | 
			
		||||
        cmake \
 | 
			
		||||
        cpio \
 | 
			
		||||
        g++ \
 | 
			
		||||
        debootstrap \
 | 
			
		||||
        fastboot \
 | 
			
		||||
        flex \
 | 
			
		||||
        git \
 | 
			
		||||
        netcat \
 | 
			
		||||
        nginx-full \
 | 
			
		||||
        python3-distutils \
 | 
			
		||||
        python3-minimal \
 | 
			
		||||
        python3-serial \
 | 
			
		||||
        python3.7 \
 | 
			
		||||
        pkg-config \
 | 
			
		||||
        procps \
 | 
			
		||||
        rsync \
 | 
			
		||||
        u-boot-tools \
 | 
			
		||||
        unzip
 | 
			
		||||
 | 
			
		||||
apt install -t buster-backports -y --no-remove \
 | 
			
		||||
    meson
 | 
			
		||||
 | 
			
		||||
# setup nginx
 | 
			
		||||
sed -i '/gzip_/ s/#\ //g' /etc/nginx/nginx.conf
 | 
			
		||||
cp .gitlab-ci/bare-metal/nginx-default-site  /etc/nginx/sites-enabled/default
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_post_build.sh
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
ROOTFS=/lava-files/rootfs-${arch}
 | 
			
		||||
 | 
			
		||||
dpkg --add-architecture $arch
 | 
			
		||||
apt-get update
 | 
			
		||||
 | 
			
		||||
# Cross-build test deps
 | 
			
		||||
BAREMETAL_EPHEMERAL=" \
 | 
			
		||||
        autoconf \
 | 
			
		||||
        automake \
 | 
			
		||||
        crossbuild-essential-$arch \
 | 
			
		||||
        git-lfs \
 | 
			
		||||
        libdrm-dev:$arch \
 | 
			
		||||
        libboost-dev:$arch \
 | 
			
		||||
        libegl1-mesa-dev:$arch \
 | 
			
		||||
        libelf-dev:$arch \
 | 
			
		||||
        libexpat1-dev:$arch \
 | 
			
		||||
        libffi-dev:$arch \
 | 
			
		||||
        libgbm-dev:$arch \
 | 
			
		||||
        libgles2-mesa-dev:$arch \
 | 
			
		||||
        libpciaccess-dev:$arch \
 | 
			
		||||
        libpcre3-dev:$arch \
 | 
			
		||||
        libpng-dev:$arch \
 | 
			
		||||
        libpython3-dev:$arch \
 | 
			
		||||
        libstdc++6:$arch \
 | 
			
		||||
        libtinfo-dev:$arch \
 | 
			
		||||
        libegl1-mesa-dev:$arch \
 | 
			
		||||
        libvulkan-dev:$arch \
 | 
			
		||||
        libxcb-keysyms1-dev:$arch \
 | 
			
		||||
        libpython3-dev:$arch \
 | 
			
		||||
        python3-dev \
 | 
			
		||||
        qt5-default \
 | 
			
		||||
        qt5-qmake \
 | 
			
		||||
        qtbase5-dev:$arch \
 | 
			
		||||
        "
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove $BAREMETAL_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
mkdir /var/cache/apt/archives/$arch
 | 
			
		||||
 | 
			
		||||
############### Create cross-files
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/create-cross-file.sh $arch
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_pre_build.sh
 | 
			
		||||
 | 
			
		||||
############### Create rootfs
 | 
			
		||||
KERNEL_URL=https://github.com/anholt/linux/archive/cheza-pagetables-2020-09-04.tar.gz
 | 
			
		||||
 | 
			
		||||
DEBIAN_ARCH=$arch INCLUDE_VK_CTS=1 . .gitlab-ci/container/lava_build.sh
 | 
			
		||||
 | 
			
		||||
############### Uninstall the build software
 | 
			
		||||
 | 
			
		||||
apt-get purge -y $BAREMETAL_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_post_build.sh
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
apt-get autoremove -y --purge
 | 
			
		||||
 | 
			
		||||
# Clean up any build cache for rust.
 | 
			
		||||
rm -rf /.cargo
 | 
			
		||||
 | 
			
		||||
ccache --show-stats
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Common setup among container builds before we get to building code.
 | 
			
		||||
 | 
			
		||||
export CCACHE_COMPILERCHECK=content
 | 
			
		||||
export CCACHE_COMPRESS=true
 | 
			
		||||
export CCACHE_DIR=/cache/mesa/ccache
 | 
			
		||||
export PATH=/usr/lib/ccache:$PATH
 | 
			
		||||
 | 
			
		||||
# CMake ignores $PATH, so we have to force CC/GCC to the ccache versions.
 | 
			
		||||
# Watch out, you can't have spaces in here because the renderdoc build fails.
 | 
			
		||||
export CC="/usr/lib/ccache/gcc"
 | 
			
		||||
export CXX="/usr/lib/ccache/g++"
 | 
			
		||||
 | 
			
		||||
# Force linkers to gold, since it's so much faster for building.  We can't use
 | 
			
		||||
# lld because we're on old debian and it's buggy.  ming fails meson builds
 | 
			
		||||
# with it with "meson.build:21:0: ERROR: Unable to determine dynamic linker"
 | 
			
		||||
find /usr/bin -name \*-ld -o -name ld | \
 | 
			
		||||
    grep -v mingw | \
 | 
			
		||||
    xargs -n 1 -I '{}' ln -sf '{}.gold' '{}'
 | 
			
		||||
 | 
			
		||||
ccache --show-stats
 | 
			
		||||
 | 
			
		||||
# Make a wrapper script for ninja to always include the -j flags
 | 
			
		||||
echo '#!/bin/sh -x' > /usr/local/bin/ninja
 | 
			
		||||
echo '/usr/bin/ninja -j${FDO_CI_CONCURRENT:-4} "$@"' >> /usr/local/bin/ninja
 | 
			
		||||
chmod +x /usr/local/bin/ninja
 | 
			
		||||
 | 
			
		||||
# Set MAKEFLAGS so that all make invocations in container builds include the
 | 
			
		||||
# flags (doesn't apply to non-container builds, but we don't run make there)
 | 
			
		||||
export MAKEFLAGS="-j${FDO_CI_CONCURRENT:-4}"
 | 
			
		||||
@@ -1,48 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
# Ephemeral packages (installed for this script and removed again at the end)
 | 
			
		||||
STABLE_EPHEMERAL=" \
 | 
			
		||||
        libpciaccess-dev:$arch
 | 
			
		||||
        "
 | 
			
		||||
 | 
			
		||||
dpkg --add-architecture $arch
 | 
			
		||||
apt-get update
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
        $STABLE_EPHEMERAL \
 | 
			
		||||
        crossbuild-essential-$arch \
 | 
			
		||||
        libelf-dev:$arch \
 | 
			
		||||
        libexpat1-dev:$arch \
 | 
			
		||||
        libffi-dev:$arch \
 | 
			
		||||
        libstdc++6:$arch \
 | 
			
		||||
        libtinfo-dev:$arch \
 | 
			
		||||
        wget
 | 
			
		||||
 | 
			
		||||
if [[ $arch == "armhf" ]]; then
 | 
			
		||||
        LLVM=llvm-7-dev
 | 
			
		||||
else
 | 
			
		||||
        LLVM=llvm-8-dev
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove -t buster-backports \
 | 
			
		||||
        $LLVM:$arch
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/create-cross-file.sh $arch
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_pre_build.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# dependencies where we want a specific version
 | 
			
		||||
EXTRA_MESON_ARGS="--cross-file=/cross_file-${arch}.txt -D libdir=lib/$(dpkg-architecture -A $arch -qDEB_TARGET_MULTIARCH)"
 | 
			
		||||
. .gitlab-ci/build-libdrm.sh
 | 
			
		||||
 | 
			
		||||
apt-get purge -y \
 | 
			
		||||
        $STABLE_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_post_build.sh
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
arch=i386
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/cross_build.sh
 | 
			
		||||
@@ -1,272 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
check_minio()
 | 
			
		||||
{
 | 
			
		||||
    MINIO_PATH="minio-packet.freedesktop.org/mesa-lava/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
 | 
			
		||||
    if wget -q --method=HEAD "https://${MINIO_PATH}/done"; then
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# If remote files are up-to-date, skip rebuilding them
 | 
			
		||||
check_minio "mesa/mesa"
 | 
			
		||||
check_minio "${CI_PROJECT_PATH}"
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_pre_build.sh
 | 
			
		||||
 | 
			
		||||
# Install rust, which we'll be using for deqp-runner.  It will be cleaned up at the end.
 | 
			
		||||
. .gitlab-ci/build-rust.sh
 | 
			
		||||
 | 
			
		||||
if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
 | 
			
		||||
    GCC_ARCH="aarch64-linux-gnu"
 | 
			
		||||
    KERNEL_ARCH="arm64"
 | 
			
		||||
    DEFCONFIG="arch/arm64/configs/defconfig"
 | 
			
		||||
    DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb arch/arm64/boot/dts/qcom/apq8016-sbc.dtb arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3.dtb"
 | 
			
		||||
    KERNEL_IMAGE_NAME="Image"
 | 
			
		||||
elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
 | 
			
		||||
    GCC_ARCH="arm-linux-gnueabihf"
 | 
			
		||||
    KERNEL_ARCH="arm"
 | 
			
		||||
    DEFCONFIG="arch/arm/configs/multi_v7_defconfig"
 | 
			
		||||
    DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
 | 
			
		||||
    KERNEL_IMAGE_NAME="zImage"
 | 
			
		||||
    . .gitlab-ci/create-cross-file.sh armhf
 | 
			
		||||
else
 | 
			
		||||
    GCC_ARCH="x86_64-linux-gnu"
 | 
			
		||||
    KERNEL_ARCH="x86_64"
 | 
			
		||||
    DEFCONFIG="arch/x86/configs/x86_64_defconfig"
 | 
			
		||||
    DEVICE_TREES=""
 | 
			
		||||
    KERNEL_IMAGE_NAME="bzImage"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Determine if we're in a cross build.
 | 
			
		||||
if [[ -e /cross_file-$DEBIAN_ARCH.txt ]]; then
 | 
			
		||||
    EXTRA_MESON_ARGS="--cross-file /cross_file-$DEBIAN_ARCH.txt"
 | 
			
		||||
    EXTRA_CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=/toolchain-$DEBIAN_ARCH.cmake"
 | 
			
		||||
 | 
			
		||||
    if [ $DEBIAN_ARCH = arm64 ]; then
 | 
			
		||||
        RUST_TARGET="aarch64-unknown-linux-gnu"
 | 
			
		||||
    elif [ $DEBIAN_ARCH = armhf ]; then
 | 
			
		||||
        RUST_TARGET="armv7-unknown-linux-gnueabihf"
 | 
			
		||||
    fi
 | 
			
		||||
    rustup target add $RUST_TARGET
 | 
			
		||||
    export EXTRA_CARGO_ARGS="--target $RUST_TARGET"
 | 
			
		||||
 | 
			
		||||
    export ARCH=${KERNEL_ARCH}
 | 
			
		||||
    export CROSS_COMPILE="${GCC_ARCH}-"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
apt-get update
 | 
			
		||||
apt-get install -y automake \
 | 
			
		||||
                   git \
 | 
			
		||||
                   bc \
 | 
			
		||||
                   cmake \
 | 
			
		||||
                   wget \
 | 
			
		||||
                   debootstrap \
 | 
			
		||||
                   libboost-dev \
 | 
			
		||||
                   libegl1-mesa-dev \
 | 
			
		||||
                   libgbm-dev \
 | 
			
		||||
                   libgles2-mesa-dev \
 | 
			
		||||
                   libpcre3-dev \
 | 
			
		||||
                   libpng-dev \
 | 
			
		||||
                   libpython3-dev \
 | 
			
		||||
                   libssl-dev \
 | 
			
		||||
                   libvulkan-dev \
 | 
			
		||||
                   libxcb-keysyms1-dev \
 | 
			
		||||
                   python3-dev \
 | 
			
		||||
                   python3-distutils \
 | 
			
		||||
                   python3-serial \
 | 
			
		||||
                   qt5-default \
 | 
			
		||||
                   qt5-qmake \
 | 
			
		||||
                   qtbase5-dev
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if [[ "$DEBIAN_ARCH" = "armhf" ]]; then
 | 
			
		||||
	apt-get install -y libboost-dev:armhf \
 | 
			
		||||
		libegl1-mesa-dev:armhf \
 | 
			
		||||
		libelf-dev:armhf \
 | 
			
		||||
		libgbm-dev:armhf \
 | 
			
		||||
		libgles2-mesa-dev:armhf \
 | 
			
		||||
		libpcre3-dev:armhf \
 | 
			
		||||
		libpng-dev:armhf \
 | 
			
		||||
		libpython3-dev:armhf \
 | 
			
		||||
		libvulkan-dev:armhf \
 | 
			
		||||
		libxcb-keysyms1-dev:armhf \
 | 
			
		||||
               qtbase5-dev:armhf
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
############### Build dEQP runner
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-deqp-runner.sh
 | 
			
		||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin
 | 
			
		||||
mv /usr/local/bin/deqp-runner /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Build dEQP
 | 
			
		||||
STRIP_CMD="${GCC_ARCH}-strip"
 | 
			
		||||
DEQP_TARGET=surfaceless . .gitlab-ci/build-deqp.sh
 | 
			
		||||
 | 
			
		||||
mv /deqp /lava-files/rootfs-${DEBIAN_ARCH}/.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Build apitrace
 | 
			
		||||
. .gitlab-ci/build-apitrace.sh
 | 
			
		||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/apitrace
 | 
			
		||||
mv /apitrace/build /lava-files/rootfs-${DEBIAN_ARCH}/apitrace
 | 
			
		||||
rm -rf /apitrace
 | 
			
		||||
 | 
			
		||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/waffle
 | 
			
		||||
mv /waffle/build /lava-files/rootfs-${DEBIAN_ARCH}/waffle
 | 
			
		||||
rm -rf /waffle
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Build renderdoc
 | 
			
		||||
EXTRA_CMAKE_ARGS+=" -DENABLE_XCB=false"
 | 
			
		||||
. .gitlab-ci/build-renderdoc.sh
 | 
			
		||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/renderdoc
 | 
			
		||||
mv /renderdoc/build /lava-files/rootfs-${DEBIAN_ARCH}/renderdoc
 | 
			
		||||
rm -rf /renderdoc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Build libdrm
 | 
			
		||||
EXTRA_MESON_ARGS+=" -D prefix=/libdrm"
 | 
			
		||||
. .gitlab-ci/build-libdrm.sh
 | 
			
		||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH
 | 
			
		||||
find /libdrm/ -name lib\*\.so\* | xargs cp -t /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH/.
 | 
			
		||||
rm -rf /libdrm
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Cross-build kernel
 | 
			
		||||
mkdir -p kernel
 | 
			
		||||
wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel
 | 
			
		||||
pushd kernel
 | 
			
		||||
 | 
			
		||||
############### Delete rust, since the tests won't be compiling anything.
 | 
			
		||||
rm -rf /root/.rustup /root/.cargo
 | 
			
		||||
 | 
			
		||||
# The kernel doesn't like the gold linker (or the old lld in our debians).
 | 
			
		||||
# Sneak in some override symlinks during kernel build until we can update
 | 
			
		||||
# debian (they'll get blown away by the rm of the kernel dir at the end).
 | 
			
		||||
mkdir -p ld-links
 | 
			
		||||
for i in /usr/bin/*-ld /usr/bin/ld; do
 | 
			
		||||
    i=`basename $i`
 | 
			
		||||
    ln -sf /usr/bin/$i.bfd ld-links/$i
 | 
			
		||||
done
 | 
			
		||||
export PATH=`pwd`/ld-links:$PATH
 | 
			
		||||
 | 
			
		||||
if [ -n "$INSTALL_KERNEL_MODULES" ]; then
 | 
			
		||||
    # Disable all modules in defconfig, so we only build the ones we want
 | 
			
		||||
    sed -i 's/=m/=n/g' ${DEFCONFIG}
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
./scripts/kconfig/merge_config.sh ${DEFCONFIG} ../.gitlab-ci/${KERNEL_ARCH}.config
 | 
			
		||||
make ${KERNEL_IMAGE_NAME}
 | 
			
		||||
for image in ${KERNEL_IMAGE_NAME}; do
 | 
			
		||||
    cp arch/${KERNEL_ARCH}/boot/${image} /lava-files/.
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
if [[ -n ${DEVICE_TREES} ]]; then
 | 
			
		||||
    make dtbs
 | 
			
		||||
    cp ${DEVICE_TREES} /lava-files/.
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -n "$INSTALL_KERNEL_MODULES" ]; then
 | 
			
		||||
    make modules
 | 
			
		||||
    INSTALL_MOD_PATH=/lava-files/rootfs-${DEBIAN_ARCH}/ make modules_install
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ ${DEBIAN_ARCH} = "arm64" ]] && which mkimage > /dev/null; then
 | 
			
		||||
    make Image.lzma
 | 
			
		||||
    mkimage \
 | 
			
		||||
        -f auto \
 | 
			
		||||
        -A arm \
 | 
			
		||||
        -O linux \
 | 
			
		||||
        -d arch/arm64/boot/Image.lzma \
 | 
			
		||||
        -C lzma\
 | 
			
		||||
        -b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \
 | 
			
		||||
        /lava-files/cheza-kernel
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
popd
 | 
			
		||||
rm -rf kernel
 | 
			
		||||
 | 
			
		||||
############### Create rootfs
 | 
			
		||||
set +e
 | 
			
		||||
debootstrap \
 | 
			
		||||
    --variant=minbase \
 | 
			
		||||
    --arch=${DEBIAN_ARCH} \
 | 
			
		||||
     --components main,contrib,non-free \
 | 
			
		||||
    buster \
 | 
			
		||||
    /lava-files/rootfs-${DEBIAN_ARCH}/ \
 | 
			
		||||
    http://deb.debian.org/debian
 | 
			
		||||
 | 
			
		||||
cat /lava-files/rootfs-${DEBIAN_ARCH}/debootstrap/debootstrap.log
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
cp .gitlab-ci/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/.
 | 
			
		||||
cp .gitlab-ci/container/llvm-snapshot.gpg.key /lava-files/rootfs-${DEBIAN_ARCH}/.
 | 
			
		||||
chroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh
 | 
			
		||||
rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh
 | 
			
		||||
rm /lava-files/rootfs-${DEBIAN_ARCH}/llvm-snapshot.gpg.key
 | 
			
		||||
du -ah /lava-files/rootfs-${DEBIAN_ARCH} | sort -h | tail -100
 | 
			
		||||
pushd /lava-files/rootfs-${DEBIAN_ARCH}
 | 
			
		||||
  tar cvzf /lava-files/lava-rootfs.tgz .
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
if [ ${DEBIAN_ARCH} = arm64 ]; then
 | 
			
		||||
    # Pull down a specific build of qcomlt/release/qcomlt-5.4 8c79b3d12355
 | 
			
		||||
    # ("Merge tag 'v5.4.23' into release/qcomlt-5.4"), where I used the
 | 
			
		||||
    # .config from
 | 
			
		||||
    # http://snapshots.linaro.org/96boards/dragonboard820c/linaro/debian/457/config-5.4.0-qcomlt-arm64
 | 
			
		||||
    # with the following merged in:
 | 
			
		||||
    #
 | 
			
		||||
    # CONFIG_DRM=y
 | 
			
		||||
    # CONFIG_DRM_MSM=y
 | 
			
		||||
    # CONFIG_ATL1C=y
 | 
			
		||||
    #
 | 
			
		||||
    # Reason: 5.5 has a big stack of oopses and warns on db820c.  4.14-5.4
 | 
			
		||||
    # linaro kernel binaries (see above .config link) have these as modules
 | 
			
		||||
    # and distributed the modules only in the debian system, not the initrd,
 | 
			
		||||
    # so they're very hard to extract (involving simg2img and loopback
 | 
			
		||||
    # mounting).  4.11 is missing d72fea538fe6 ("drm/msm: Fix the check for
 | 
			
		||||
    # the command size") so it can't actually run fredreno.  qcomlt-4.14 is
 | 
			
		||||
    # unstable at boot (~10% instaboot rate).  The 5.4 qcomlt kernel with msm
 | 
			
		||||
    # built in seems like the easiest way to go.
 | 
			
		||||
    wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/Image.gz -O Image.gz \
 | 
			
		||||
         -O /lava-files/db820c-kernel
 | 
			
		||||
    wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/apq8096-db820c.dtb \
 | 
			
		||||
         -O /lava-files/db820c.dtb
 | 
			
		||||
 | 
			
		||||
    # Make a gzipped copy of the Image for db410c.
 | 
			
		||||
    gzip -k /lava-files/Image
 | 
			
		||||
 | 
			
		||||
    # Add missing a630 firmware, added to debian packge in apr 2020
 | 
			
		||||
    wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_gmu.bin \
 | 
			
		||||
         -O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_gmu.bin
 | 
			
		||||
    wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_sqe.fw \
 | 
			
		||||
         -O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_sqe.fw
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_post_build.sh
 | 
			
		||||
 | 
			
		||||
############### Upload the files!
 | 
			
		||||
if [ -n "$UPLOAD_FOR_LAVA" ]; then
 | 
			
		||||
    ci-fairy minio login $CI_JOB_JWT
 | 
			
		||||
    FILES_TO_UPLOAD="lava-rootfs.tgz \
 | 
			
		||||
                     $KERNEL_IMAGE_NAME"
 | 
			
		||||
 | 
			
		||||
    if [[ -n $DEVICE_TREES ]]; then
 | 
			
		||||
        FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    for f in $FILES_TO_UPLOAD; do
 | 
			
		||||
        ci-fairy minio cp /lava-files/$f \
 | 
			
		||||
            minio://${MINIO_PATH}/$f
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    touch /lava-files/done
 | 
			
		||||
    ci-fairy minio cp /lava-files/done minio://${MINIO_PATH}/done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -1,52 +0,0 @@
 | 
			
		||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
 | 
			
		||||
Version: GnuPG v1.4.12 (GNU/Linux)
 | 
			
		||||
 | 
			
		||||
mQINBFE9lCwBEADi0WUAApM/mgHJRU8lVkkw0CHsZNpqaQDNaHefD6Rw3S4LxNmM
 | 
			
		||||
EZaOTkhP200XZM8lVdbfUW9xSjA3oPldc1HG26NjbqqCmWpdo2fb+r7VmU2dq3NM
 | 
			
		||||
R18ZlKixiLDE6OUfaXWKamZsXb6ITTYmgTO6orQWYrnW6ckYHSeaAkW0wkDAryl2
 | 
			
		||||
B5v8aoFnQ1rFiVEMo4NGzw4UX+MelF7rxaaregmKVTPiqCOSPJ1McC1dHFN533FY
 | 
			
		||||
Wh/RVLKWo6npu+owtwYFQW+zyQhKzSIMvNujFRzhIxzxR9Gn87MoLAyfgKEzrbbT
 | 
			
		||||
DhqqNXTxS4UMUKCQaO93TzetX/EBrRpJj+vP640yio80h4Dr5pAd7+LnKwgpTDk1
 | 
			
		||||
G88bBXJAcPZnTSKu9I2c6KY4iRNbvRz4i+ZdwwZtdW4nSdl2792L7Sl7Nc44uLL/
 | 
			
		||||
ZqkKDXEBF6lsX5XpABwyK89S/SbHOytXv9o4puv+65Ac5/UShspQTMSKGZgvDauU
 | 
			
		||||
cs8kE1U9dPOqVNCYq9Nfwinkf6RxV1k1+gwtclxQuY7UpKXP0hNAXjAiA5KS5Crq
 | 
			
		||||
7aaJg9q2F4bub0mNU6n7UI6vXguF2n4SEtzPRk6RP+4TiT3bZUsmr+1ktogyOJCc
 | 
			
		||||
Ha8G5VdL+NBIYQthOcieYCBnTeIH7D3Sp6FYQTYtVbKFzmMK+36ERreL/wARAQAB
 | 
			
		||||
tD1TeWx2ZXN0cmUgTGVkcnUgLSBEZWJpYW4gTExWTSBwYWNrYWdlcyA8c3lsdmVz
 | 
			
		||||
dHJlQGRlYmlhbi5vcmc+iQI4BBMBAgAiBQJRPZQsAhsDBgsJCAcDAgYVCAIJCgsE
 | 
			
		||||
FgIDAQIeAQIXgAAKCRAVz00Yr090Ibx+EADArS/hvkDF8juWMXxh17CgR0WZlHCC
 | 
			
		||||
9CTBWkg5a0bNN/3bb97cPQt/vIKWjQtkQpav6/5JTVCSx2riL4FHYhH0iuo4iAPR
 | 
			
		||||
udC7Cvg8g7bSPrKO6tenQZNvQm+tUmBHgFiMBJi92AjZ/Qn1Shg7p9ITivFxpLyX
 | 
			
		||||
wpmnF1OKyI2Kof2rm4BFwfSWuf8Fvh7kDMRLHv+MlnK/7j/BNpKdozXxLcwoFBmn
 | 
			
		||||
l0WjpAH3OFF7Pvm1LJdf1DjWKH0Dc3sc6zxtmBR/KHHg6kK4BGQNnFKujcP7TVdv
 | 
			
		||||
gMYv84kun14pnwjZcqOtN3UJtcx22880DOQzinoMs3Q4w4o05oIF+sSgHViFpc3W
 | 
			
		||||
R0v+RllnH05vKZo+LDzc83DQVrdwliV12eHxrMQ8UYg88zCbF/cHHnlzZWAJgftg
 | 
			
		||||
hB08v1BKPgYRUzwJ6VdVqXYcZWEaUJmQAPuAALyZESw94hSo28FAn0/gzEc5uOYx
 | 
			
		||||
K+xG/lFwgAGYNb3uGM5m0P6LVTfdg6vDwwOeTNIExVk3KVFXeSQef2ZMkhwA7wya
 | 
			
		||||
KJptkb62wBHFE+o9TUdtMCY6qONxMMdwioRE5BYNwAsS1PnRD2+jtlI0DzvKHt7B
 | 
			
		||||
MWd8hnoUKhMeZ9TNmo+8CpsAtXZcBho0zPGz/R8NlJhAWpdAZ1CmcPo83EW86Yq7
 | 
			
		||||
BxQUKnNHcwj2ebkCDQRRPZQsARAA4jxYmbTHwmMjqSizlMJYNuGOpIidEdx9zQ5g
 | 
			
		||||
zOr431/VfWq4S+VhMDhs15j9lyml0y4ok215VRFwrAREDg6UPMr7ajLmBQGau0Fc
 | 
			
		||||
bvZJ90l4NjXp5p0NEE/qOb9UEHT7EGkEhaZ1ekkWFTWCgsy7rRXfZLxB6sk7pzLC
 | 
			
		||||
DshyW3zjIakWAnpQ5j5obiDy708pReAuGB94NSyb1HoW/xGsGgvvCw4r0w3xPStw
 | 
			
		||||
F1PhmScE6NTBIfLliea3pl8vhKPlCh54Hk7I8QGjo1ETlRP4Qll1ZxHJ8u25f/ta
 | 
			
		||||
RES2Aw8Hi7j0EVcZ6MT9JWTI83yUcnUlZPZS2HyeWcUj+8nUC8W4N8An+aNps9l/
 | 
			
		||||
21inIl2TbGo3Yn1JQLnA1YCoGwC34g8QZTJhElEQBN0X29ayWW6OdFx8MDvllbBV
 | 
			
		||||
ymmKq2lK1U55mQTfDli7S3vfGz9Gp/oQwZ8bQpOeUkc5hbZszYwP4RX+68xDPfn+
 | 
			
		||||
M9udl+qW9wu+LyePbW6HX90LmkhNkkY2ZzUPRPDHZANU5btaPXc2H7edX4y4maQa
 | 
			
		||||
xenqD0lGh9LGz/mps4HEZtCI5CY8o0uCMF3lT0XfXhuLksr7Pxv57yue8LLTItOJ
 | 
			
		||||
d9Hmzp9G97SRYYeqU+8lyNXtU2PdrLLq7QHkzrsloG78lCpQcalHGACJzrlUWVP/
 | 
			
		||||
fN3Ht3kAEQEAAYkCHwQYAQIACQUCUT2ULAIbDAAKCRAVz00Yr090IbhWEADbr50X
 | 
			
		||||
OEXMIMGRLe+YMjeMX9NG4jxs0jZaWHc/WrGR+CCSUb9r6aPXeLo+45949uEfdSsB
 | 
			
		||||
pbaEdNWxF5Vr1CSjuO5siIlgDjmT655voXo67xVpEN4HhMrxugDJfCa6z97P0+ML
 | 
			
		||||
PdDxim57uNqkam9XIq9hKQaurxMAECDPmlEXI4QT3eu5qw5/knMzDMZj4Vi6hovL
 | 
			
		||||
wvvAeLHO/jsyfIdNmhBGU2RWCEZ9uo/MeerPHtRPfg74g+9PPfP6nyHD2Wes6yGd
 | 
			
		||||
oVQwtPNAQD6Cj7EaA2xdZYLJ7/jW6yiPu98FFWP74FN2dlyEA2uVziLsfBrgpS4l
 | 
			
		||||
tVOlrO2YzkkqUGrybzbLpj6eeHx+Cd7wcjI8CalsqtL6cG8cUEjtWQUHyTbQWAgG
 | 
			
		||||
5VPEgIAVhJ6RTZ26i/G+4J8neKyRs4vz+57UGwY6zI4AB1ZcWGEE3Bf+CDEDgmnP
 | 
			
		||||
LSwbnHefK9IljT9XU98PelSryUO/5UPw7leE0akXKB4DtekToO226px1VnGp3Bov
 | 
			
		||||
1GBGvpHvL2WizEwdk+nfk8LtrLzej+9FtIcq3uIrYnsac47Pf7p0otcFeTJTjSq3
 | 
			
		||||
krCaoG4Hx0zGQG2ZFpHrSrZTVy6lxvIdfi0beMgY6h78p6M9eYZHQHc02DjFkQXN
 | 
			
		||||
bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw==
 | 
			
		||||
=j+4q
 | 
			
		||||
-----END PGP PUBLIC KEY BLOCK-----
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
arch=ppc64el
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/cross_build.sh
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
        libvulkan-dev:$arch
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
arch=s390x
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/cross_build.sh
 | 
			
		||||
@@ -1,101 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
apt-get install -y \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        gnupg \
 | 
			
		||||
        python3-pip \
 | 
			
		||||
        python3-setuptools \
 | 
			
		||||
        unzip \
 | 
			
		||||
        wget
 | 
			
		||||
 | 
			
		||||
# Upstream LLVM package repository
 | 
			
		||||
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
 | 
			
		||||
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
 | 
			
		||||
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-10 main" >/etc/apt/sources.list.d/llvm10.list
 | 
			
		||||
 | 
			
		||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
 | 
			
		||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
 | 
			
		||||
 | 
			
		||||
apt-get update
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
        $STABLE_EPHEMERAL \
 | 
			
		||||
        bison \
 | 
			
		||||
        ccache \
 | 
			
		||||
        clang-10 \
 | 
			
		||||
        dpkg-cross \
 | 
			
		||||
        flex \
 | 
			
		||||
        g++ \
 | 
			
		||||
        g++-mingw-w64-x86-64 \
 | 
			
		||||
        gcc \
 | 
			
		||||
        git \
 | 
			
		||||
        kmod \
 | 
			
		||||
        libclang-9-dev \
 | 
			
		||||
        libclang-10-dev \
 | 
			
		||||
        libclc-dev \
 | 
			
		||||
        libelf-dev \
 | 
			
		||||
        libepoxy-dev \
 | 
			
		||||
        libexpat1-dev \
 | 
			
		||||
        libgtk-3-dev \
 | 
			
		||||
        libomxil-bellagio-dev \
 | 
			
		||||
        libpciaccess-dev \
 | 
			
		||||
        libunwind-dev \
 | 
			
		||||
        libva-dev \
 | 
			
		||||
        libvdpau-dev \
 | 
			
		||||
        libvulkan-dev \
 | 
			
		||||
        libx11-dev \
 | 
			
		||||
        libx11-xcb-dev \
 | 
			
		||||
        libxdamage-dev \
 | 
			
		||||
        libxext-dev \
 | 
			
		||||
        libxml2-utils \
 | 
			
		||||
        libxrandr-dev \
 | 
			
		||||
        libxrender-dev \
 | 
			
		||||
        libxshmfence-dev \
 | 
			
		||||
        libxvmc-dev \
 | 
			
		||||
        libxxf86vm-dev \
 | 
			
		||||
        libz-mingw-w64-dev \
 | 
			
		||||
        llvm-9-dev \
 | 
			
		||||
        llvm-10-dev \
 | 
			
		||||
        pkg-config \
 | 
			
		||||
        python-mako \
 | 
			
		||||
        python3-mako \
 | 
			
		||||
        python3-pil \
 | 
			
		||||
        python3-pip \
 | 
			
		||||
        python3-requests \
 | 
			
		||||
        python3-setuptools \
 | 
			
		||||
        qemu-user \
 | 
			
		||||
        scons \
 | 
			
		||||
        wine64-development \
 | 
			
		||||
        x11proto-dri2-dev \
 | 
			
		||||
        x11proto-gl-dev \
 | 
			
		||||
        x11proto-randr-dev \
 | 
			
		||||
        xz-utils \
 | 
			
		||||
        zlib1g-dev
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove -t buster-backports \
 | 
			
		||||
        libclang-8-dev \
 | 
			
		||||
        libllvm8 \
 | 
			
		||||
        meson
 | 
			
		||||
 | 
			
		||||
# Needed for ci-fairy, this revision is able to upload files to MinIO
 | 
			
		||||
pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@6f5af7e5574509726c79109e3c147cee95e81366
 | 
			
		||||
 | 
			
		||||
# for the vulkan overlay layer and ACO tests
 | 
			
		||||
wget https://github.com/KhronosGroup/glslang/releases/download/SDK-candidate-26-Jul-2020/glslang-master-linux-Release.zip
 | 
			
		||||
unzip glslang-master-linux-Release.zip bin/glslangValidator
 | 
			
		||||
install -m755 bin/glslangValidator /usr/local/bin/
 | 
			
		||||
rm bin/glslangValidator glslang-master-linux-Release.zip
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Uninstall ephemeral packages
 | 
			
		||||
 | 
			
		||||
apt-get purge -y \
 | 
			
		||||
        gnupg \
 | 
			
		||||
        unzip
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_post_build.sh
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
# Ephemeral packages (installed for this script and removed again at the end)
 | 
			
		||||
STABLE_EPHEMERAL=" \
 | 
			
		||||
      autoconf \
 | 
			
		||||
      automake \
 | 
			
		||||
      autotools-dev \
 | 
			
		||||
      bzip2 \
 | 
			
		||||
      cmake \
 | 
			
		||||
      gnupg \
 | 
			
		||||
      libgbm-dev \
 | 
			
		||||
      libtool \
 | 
			
		||||
      make \
 | 
			
		||||
      unzip \
 | 
			
		||||
      wget \
 | 
			
		||||
      "
 | 
			
		||||
 | 
			
		||||
# We need multiarch for Wine
 | 
			
		||||
dpkg --add-architecture i386
 | 
			
		||||
apt-get update
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
      $STABLE_EPHEMERAL \
 | 
			
		||||
      libarchive-dev \
 | 
			
		||||
      libclang-cpp10-dev \
 | 
			
		||||
      liblua5.3-dev \
 | 
			
		||||
      libxml2-dev \
 | 
			
		||||
      ocl-icd-opencl-dev \
 | 
			
		||||
      wine-development \
 | 
			
		||||
      wine32-development
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove -t buster-backports \
 | 
			
		||||
      llvm-8-dev
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_pre_build.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Debian's pkg-config wrapers for mingw are broken, and there's no sign that
 | 
			
		||||
# they're going to be fixed, so we'll just have to fix it ourselves
 | 
			
		||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
 | 
			
		||||
cat >/usr/local/bin/x86_64-w64-mingw32-pkg-config <<EOF
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@
 | 
			
		||||
EOF
 | 
			
		||||
chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# dependencies where we want a specific version
 | 
			
		||||
export              XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
 | 
			
		||||
export               XCB_RELEASES=https://xcb.freedesktop.org/dist
 | 
			
		||||
export           WAYLAND_RELEASES=https://wayland.freedesktop.org/releases
 | 
			
		||||
 | 
			
		||||
export         XORGMACROS_VERSION=util-macros-1.19.0
 | 
			
		||||
export           XCBPROTO_VERSION=xcb-proto-1.13
 | 
			
		||||
export             LIBXCB_VERSION=libxcb-1.13
 | 
			
		||||
export         LIBWAYLAND_VERSION=wayland-1.17.0
 | 
			
		||||
export  WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.12
 | 
			
		||||
 | 
			
		||||
wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
 | 
			
		||||
tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
 | 
			
		||||
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
 | 
			
		||||
rm -rf $XORGMACROS_VERSION
 | 
			
		||||
 | 
			
		||||
wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
 | 
			
		||||
tar -xvf $XCBPROTO_VERSION.tar.bz2 && rm $XCBPROTO_VERSION.tar.bz2
 | 
			
		||||
cd $XCBPROTO_VERSION; ./configure; make install; cd ..
 | 
			
		||||
rm -rf $XCBPROTO_VERSION
 | 
			
		||||
 | 
			
		||||
wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
 | 
			
		||||
tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2
 | 
			
		||||
cd $LIBXCB_VERSION; ./configure; make install; cd ..
 | 
			
		||||
rm -rf $LIBXCB_VERSION
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-libdrm.sh
 | 
			
		||||
 | 
			
		||||
wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
 | 
			
		||||
tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz
 | 
			
		||||
cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd ..
 | 
			
		||||
rm -rf $LIBWAYLAND_VERSION
 | 
			
		||||
 | 
			
		||||
wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
 | 
			
		||||
tar -xvf $WAYLAND_PROTOCOLS_VERSION.tar.xz && rm $WAYLAND_PROTOCOLS_VERSION.tar.xz
 | 
			
		||||
cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make install; cd ..
 | 
			
		||||
rm -rf $WAYLAND_PROTOCOLS_VERSION
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# The version of libglvnd-dev in debian is too old
 | 
			
		||||
# Check this page to see when this local compilation can be dropped in favour of the package:
 | 
			
		||||
# https://packages.debian.org/libglvnd-dev
 | 
			
		||||
GLVND_VERSION=1.3.2
 | 
			
		||||
wget https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$GLVND_VERSION/libglvnd-v$GLVND_VERSION.tar.gz
 | 
			
		||||
tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz
 | 
			
		||||
pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd
 | 
			
		||||
rm -rf libglvnd-v$GLVND_VERSION
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-spirv-tools.sh
 | 
			
		||||
 | 
			
		||||
git clone https://github.com/KhronosGroup/SPIRV-LLVM-Translator -b llvm_release_100 --depth 1
 | 
			
		||||
pushd SPIRV-LLVM-Translator
 | 
			
		||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC
 | 
			
		||||
ninja
 | 
			
		||||
ninja install
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
pushd /usr/local
 | 
			
		||||
git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1
 | 
			
		||||
rm -rf shader-db/.git
 | 
			
		||||
cd shader-db
 | 
			
		||||
make
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Uninstall the build software
 | 
			
		||||
 | 
			
		||||
apt-get purge -y \
 | 
			
		||||
      $STABLE_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_post_build.sh
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
apt-get install -y \
 | 
			
		||||
      ca-certificates \
 | 
			
		||||
      gnupg
 | 
			
		||||
 | 
			
		||||
# Upstream LLVM package repository
 | 
			
		||||
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
 | 
			
		||||
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
 | 
			
		||||
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-10 main" >/etc/apt/sources.list.d/llvm10.list
 | 
			
		||||
 | 
			
		||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
 | 
			
		||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
 | 
			
		||||
 | 
			
		||||
apt-get update
 | 
			
		||||
apt-get dist-upgrade -y
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
      git \
 | 
			
		||||
      git-lfs \
 | 
			
		||||
      libexpat1 \
 | 
			
		||||
      libllvm9 \
 | 
			
		||||
      libllvm10 \
 | 
			
		||||
      liblz4-1 \
 | 
			
		||||
      libpcre32-3 \
 | 
			
		||||
      libpng16-16 \
 | 
			
		||||
      libpython3.7 \
 | 
			
		||||
      libvulkan1 \
 | 
			
		||||
      libwayland-client0 \
 | 
			
		||||
      libwayland-server0 \
 | 
			
		||||
      libxcb-ewmh2 \
 | 
			
		||||
      libxcb-randr0 \
 | 
			
		||||
      libxcb-keysyms1 \
 | 
			
		||||
      libxcb-xfixes0 \
 | 
			
		||||
      libxkbcommon0 \
 | 
			
		||||
      libxrandr2 \
 | 
			
		||||
      libxrender1 \
 | 
			
		||||
      python \
 | 
			
		||||
      python3-mako \
 | 
			
		||||
      python3-numpy \
 | 
			
		||||
      python3-pil \
 | 
			
		||||
      python3-pytest \
 | 
			
		||||
      python3-requests \
 | 
			
		||||
      python3-six \
 | 
			
		||||
      python3-yaml \
 | 
			
		||||
      python3.7 \
 | 
			
		||||
      qt5-default \
 | 
			
		||||
      qt5-qmake \
 | 
			
		||||
      vulkan-tools \
 | 
			
		||||
      waffle-utils \
 | 
			
		||||
      xauth \
 | 
			
		||||
      xvfb \
 | 
			
		||||
      zlib1g
 | 
			
		||||
 | 
			
		||||
apt-get purge -y \
 | 
			
		||||
      gnupg
 | 
			
		||||
 | 
			
		||||
apt-get autoremove -y --purge
 | 
			
		||||
@@ -1,97 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
# Ephemeral packages (installed for this script and removed again at the end)
 | 
			
		||||
STABLE_EPHEMERAL=" \
 | 
			
		||||
      autoconf \
 | 
			
		||||
      automake \
 | 
			
		||||
      ccache \
 | 
			
		||||
      clang-10 \
 | 
			
		||||
      cmake \
 | 
			
		||||
      g++ \
 | 
			
		||||
      libclang-cpp10-dev \
 | 
			
		||||
      libgbm-dev \
 | 
			
		||||
      libgles2-mesa-dev \
 | 
			
		||||
      libpcre3-dev \
 | 
			
		||||
      libpciaccess-dev \
 | 
			
		||||
      libpng-dev \
 | 
			
		||||
      libvulkan-dev \
 | 
			
		||||
      libwaffle-dev \
 | 
			
		||||
      libxcb-keysyms1-dev \
 | 
			
		||||
      libxkbcommon-dev \
 | 
			
		||||
      libxrender-dev \
 | 
			
		||||
      llvm-10-dev \
 | 
			
		||||
      make \
 | 
			
		||||
      meson \
 | 
			
		||||
      ocl-icd-opencl-dev \
 | 
			
		||||
      patch \
 | 
			
		||||
      pkg-config \
 | 
			
		||||
      python3-distutils \
 | 
			
		||||
      python3.7-dev \
 | 
			
		||||
      wget \
 | 
			
		||||
      xz-utils \
 | 
			
		||||
      "
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
      clinfo \
 | 
			
		||||
      libclang-common-10-dev \
 | 
			
		||||
      libclang-cpp10 \
 | 
			
		||||
      libxcb-shm0 \
 | 
			
		||||
      ocl-icd-libopencl1 \
 | 
			
		||||
      python3-lxml \
 | 
			
		||||
      python3-simplejson \
 | 
			
		||||
      $STABLE_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_pre_build.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Build spirv-tools (debian too old)
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-spirv-tools.sh
 | 
			
		||||
 | 
			
		||||
############### Build libclc
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-libclc.sh
 | 
			
		||||
 | 
			
		||||
############### Build virglrenderer
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-virglrenderer.sh
 | 
			
		||||
 | 
			
		||||
############### Build piglit
 | 
			
		||||
 | 
			
		||||
INCLUDE_OPENCL_TESTS=1 . .gitlab-ci/build-piglit.sh
 | 
			
		||||
 | 
			
		||||
############### Build dEQP runner (and install rust temporarily for it)
 | 
			
		||||
. .gitlab-ci/build-rust.sh
 | 
			
		||||
. .gitlab-ci/build-deqp-runner.sh
 | 
			
		||||
rm -rf /root/.rustup /root/.cargo
 | 
			
		||||
 | 
			
		||||
############### Build dEQP GL
 | 
			
		||||
 | 
			
		||||
DEQP_TARGET=surfaceless . .gitlab-ci/build-deqp.sh
 | 
			
		||||
 | 
			
		||||
############### Build apitrace
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-apitrace.sh
 | 
			
		||||
 | 
			
		||||
############### Build renderdoc
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-renderdoc.sh
 | 
			
		||||
 | 
			
		||||
############### Build libdrm
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-libdrm.sh
 | 
			
		||||
 | 
			
		||||
############### Uninstall the build software
 | 
			
		||||
 | 
			
		||||
ccache --show-stats
 | 
			
		||||
 | 
			
		||||
apt-get purge -y \
 | 
			
		||||
      $STABLE_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
apt-get autoremove -y --purge
 | 
			
		||||
@@ -1,137 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
# Ephemeral packages (installed for this script and removed again at the end)
 | 
			
		||||
STABLE_EPHEMERAL=" \
 | 
			
		||||
      ccache \
 | 
			
		||||
      cmake \
 | 
			
		||||
      g++ \
 | 
			
		||||
      libgbm-dev \
 | 
			
		||||
      libgles2-mesa-dev \
 | 
			
		||||
      liblz4-dev \
 | 
			
		||||
      libpng-dev \
 | 
			
		||||
      libvulkan-dev \
 | 
			
		||||
      libxcb-ewmh-dev \
 | 
			
		||||
      libxkbcommon-dev \
 | 
			
		||||
      libxrandr-dev \
 | 
			
		||||
      libxrender-dev \
 | 
			
		||||
      libzstd-dev \
 | 
			
		||||
      meson \
 | 
			
		||||
      p7zip \
 | 
			
		||||
      pkg-config \
 | 
			
		||||
      python3-distutils \
 | 
			
		||||
      wget \
 | 
			
		||||
      "
 | 
			
		||||
 | 
			
		||||
# Unfortunately, gfxreconstruct needs the -dev packages:
 | 
			
		||||
# https://github.com/LunarG/gfxreconstruct/issues/402
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
      libwayland-dev \
 | 
			
		||||
      libx11-xcb-dev \
 | 
			
		||||
      libxcb-keysyms1-dev \
 | 
			
		||||
      libxcb1-dev \
 | 
			
		||||
      $STABLE_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
# We need multiarch for Wine
 | 
			
		||||
dpkg --add-architecture i386
 | 
			
		||||
 | 
			
		||||
apt-get update
 | 
			
		||||
 | 
			
		||||
apt-get install -y --no-remove \
 | 
			
		||||
      wine \
 | 
			
		||||
      wine32 \
 | 
			
		||||
      wine64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Set up Wine env variables
 | 
			
		||||
 | 
			
		||||
export WINEDEBUG="-all"
 | 
			
		||||
export WINEPREFIX="/dxvk-wine64"
 | 
			
		||||
 | 
			
		||||
############### Install DXVK
 | 
			
		||||
 | 
			
		||||
DXVK_VERSION="1.6"
 | 
			
		||||
 | 
			
		||||
# We don't want crash dialogs
 | 
			
		||||
cat >crashdialog.reg <<EOF
 | 
			
		||||
Windows Registry Editor Version 5.00
 | 
			
		||||
 | 
			
		||||
[HKEY_CURRENT_USER\Software\Wine\WineDbg]
 | 
			
		||||
"ShowCrashDialog"=dword:00000000
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
# Set the wine prefix and disable the crash dialog
 | 
			
		||||
wine regedit crashdialog.reg
 | 
			
		||||
rm crashdialog.reg
 | 
			
		||||
 | 
			
		||||
# DXVK's setup often fails with:
 | 
			
		||||
# "${WINEPREFIX}: Not a valid wine prefix."
 | 
			
		||||
# and that is just spit because of checking the existance of the
 | 
			
		||||
# system.reg file, which fails.
 | 
			
		||||
# Just giving it a bit more of time for it to be created solves the
 | 
			
		||||
# problem ...
 | 
			
		||||
test -f  "${WINEPREFIX}/system.reg" || sleep 2
 | 
			
		||||
 | 
			
		||||
wget "https://github.com/doitsujin/dxvk/releases/download/v${DXVK_VERSION}/dxvk-${DXVK_VERSION}.tar.gz"
 | 
			
		||||
tar xzpf dxvk-"${DXVK_VERSION}".tar.gz
 | 
			
		||||
dxvk-"${DXVK_VERSION}"/setup_dxvk.sh install
 | 
			
		||||
rm -rf dxvk-"${DXVK_VERSION}"
 | 
			
		||||
rm dxvk-"${DXVK_VERSION}".tar.gz
 | 
			
		||||
 | 
			
		||||
############### Install Windows' apitrace binaries
 | 
			
		||||
 | 
			
		||||
APITRACE_VERSION="9.0"
 | 
			
		||||
APITRACE_VERSION_DATE="20191126"
 | 
			
		||||
 | 
			
		||||
wget "https://github.com/apitrace/apitrace/releases/download/${APITRACE_VERSION}/apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64.7z"
 | 
			
		||||
7zr x "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64.7z" \
 | 
			
		||||
      "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64/bin/apitrace.exe" \
 | 
			
		||||
      "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64/bin/d3dretrace.exe"
 | 
			
		||||
mv "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64" /apitrace-msvc-win64
 | 
			
		||||
rm "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64.7z"
 | 
			
		||||
 | 
			
		||||
# Add the apitrace path to the registry
 | 
			
		||||
wine \
 | 
			
		||||
    reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" \
 | 
			
		||||
    /v Path \
 | 
			
		||||
    /t REG_EXPAND_SZ \
 | 
			
		||||
    /d "C:\windows\system32;C:\windows;C:\windows\system32\wbem;Z:\apitrace-msvc-win64\bin" \
 | 
			
		||||
    /f
 | 
			
		||||
 | 
			
		||||
############### Building ...
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/container/container_pre_build.sh
 | 
			
		||||
 | 
			
		||||
############### Build dEQP runner (and install rust temporarily for it)
 | 
			
		||||
. .gitlab-ci/build-rust.sh
 | 
			
		||||
. .gitlab-ci/build-deqp-runner.sh
 | 
			
		||||
rm -rf /root/.rustup /root/.cargo
 | 
			
		||||
 | 
			
		||||
############### Build Fossilize
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-fossilize.sh
 | 
			
		||||
 | 
			
		||||
############### Build dEQP VK
 | 
			
		||||
. .gitlab-ci/build-deqp.sh
 | 
			
		||||
 | 
			
		||||
############### Build gfxreconstruct
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-gfxreconstruct.sh
 | 
			
		||||
 | 
			
		||||
############### Build VulkanTools
 | 
			
		||||
 | 
			
		||||
. .gitlab-ci/build-vulkantools.sh
 | 
			
		||||
 | 
			
		||||
############### Uninstall the build software
 | 
			
		||||
 | 
			
		||||
ccache --show-stats
 | 
			
		||||
 | 
			
		||||
apt-get purge -y \
 | 
			
		||||
      $STABLE_EPHEMERAL
 | 
			
		||||
 | 
			
		||||
apt-get autoremove -y --purge
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
ndk=$1
 | 
			
		||||
arch=$2
 | 
			
		||||
cpu_family=$3
 | 
			
		||||
cpu=$4
 | 
			
		||||
cross_file="/cross_file-$arch.txt"
 | 
			
		||||
 | 
			
		||||
# armv7 has the toolchain split between two names.
 | 
			
		||||
arch2=${5:-$2}
 | 
			
		||||
 | 
			
		||||
# Note that we disable C++ exceptions, because Mesa doesn't use exceptions,
 | 
			
		||||
# and allowing it in code generation means we get unwind symbols that break
 | 
			
		||||
# the libEGL and driver symbol tests.
 | 
			
		||||
 | 
			
		||||
cat >$cross_file <<EOF
 | 
			
		||||
[binaries]
 | 
			
		||||
ar = '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/$arch-ar'
 | 
			
		||||
c = ['ccache', '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch2}29-clang', '-fuse-ld=lld', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables']
 | 
			
		||||
cpp = ['ccache', '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch2}29-clang++', '-fuse-ld=lld', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables', '-static-libstdc++']
 | 
			
		||||
strip = '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/$arch-strip'
 | 
			
		||||
pkgconfig = ['/usr/bin/pkg-config']
 | 
			
		||||
 | 
			
		||||
[host_machine]
 | 
			
		||||
system = 'linux'
 | 
			
		||||
cpu_family = '$cpu_family'
 | 
			
		||||
cpu = '$cpu'
 | 
			
		||||
endian = 'little'
 | 
			
		||||
 | 
			
		||||
[properties]
 | 
			
		||||
needs_exe_wrapper = true
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
@@ -1,38 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Makes a .pc file in the Android NDK for meson to find its libraries.
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
ndk="$1"
 | 
			
		||||
pc="$2"
 | 
			
		||||
cflags="$3"
 | 
			
		||||
libs="$4"
 | 
			
		||||
version="$5"
 | 
			
		||||
 | 
			
		||||
sysroot=$ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot
 | 
			
		||||
 | 
			
		||||
for arch in \
 | 
			
		||||
        x86_64-linux-android \
 | 
			
		||||
        i686-linux-android \
 | 
			
		||||
        aarch64-linux-android \
 | 
			
		||||
        arm-linux-androideabi; do
 | 
			
		||||
    pcdir=$sysroot/usr/lib/$arch/pkgconfig
 | 
			
		||||
    mkdir -p $pcdir
 | 
			
		||||
 | 
			
		||||
    cat >$pcdir/$pc <<EOF
 | 
			
		||||
prefix=$sysroot
 | 
			
		||||
exec_prefix=$sysroot
 | 
			
		||||
libdir=$sysroot/usr/lib/$arch/29
 | 
			
		||||
sharedlibdir=$sysroot/usr/lib/$arch
 | 
			
		||||
includedir=$sysroot/usr/include
 | 
			
		||||
 | 
			
		||||
Name: zlib
 | 
			
		||||
Description: zlib compression library
 | 
			
		||||
Version: $version
 | 
			
		||||
 | 
			
		||||
Requires:
 | 
			
		||||
Libs: -L$sysroot/usr/lib/$arch/29 $libs
 | 
			
		||||
Cflags: -I$sysroot/usr/include $cflags
 | 
			
		||||
EOF
 | 
			
		||||
done
 | 
			
		||||
@@ -1,51 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
arch=$1
 | 
			
		||||
cross_file="/cross_file-$arch.txt"
 | 
			
		||||
/usr/share/meson/debcrossgen --arch $arch -o "$cross_file"
 | 
			
		||||
# Explicitly set ccache path for cross compilers
 | 
			
		||||
sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
 | 
			
		||||
if [ "$arch" = "i386" ]; then
 | 
			
		||||
    # Work around a bug in debcrossgen that should be fixed in the next release
 | 
			
		||||
    sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
 | 
			
		||||
fi
 | 
			
		||||
# Rely on qemu-user being configured in binfmt_misc on the host
 | 
			
		||||
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
 | 
			
		||||
 | 
			
		||||
# Add a line for rustc, which debcrossgen is missing.
 | 
			
		||||
cc=`sed -n 's|c = .\(.*\).|\1|p' < $cross_file`
 | 
			
		||||
if [[ "$arch" = "arm64" ]]; then
 | 
			
		||||
    rust_target=aarch64-unknown-linux-gnu
 | 
			
		||||
elif [[ "$arch" = "armhf" ]]; then
 | 
			
		||||
    rust_target=armv7-unknown-linux-gnueabihf
 | 
			
		||||
elif [[ "$arch" = "i386" ]]; then
 | 
			
		||||
    rust_target=i686-unknown-linux-gnu
 | 
			
		||||
elif [[ "$arch" = "ppc64el" ]]; then
 | 
			
		||||
    rust_target=powerpc64le-unknown-linux-gnu
 | 
			
		||||
elif [[ "$arch" = "s390x" ]]; then
 | 
			
		||||
    rust_target=s390x-unknown-linux-gnu
 | 
			
		||||
else
 | 
			
		||||
    echo "Needs rustc target mapping"
 | 
			
		||||
fi
 | 
			
		||||
sed -i -e '/\[binaries\]/a\' -e "rust = ['rustc', '--target=$rust_target', '-C', 'linker=$cc']" "$cross_file"
 | 
			
		||||
 | 
			
		||||
# Set up cmake cross compile toolchain file for dEQP builds
 | 
			
		||||
toolchain_file="/toolchain-$arch.cmake"
 | 
			
		||||
if [[ "$arch" = "arm64" ]]; then
 | 
			
		||||
    GCC_ARCH="aarch64-linux-gnu"
 | 
			
		||||
    DE_CPU="DE_CPU_ARM_64"
 | 
			
		||||
    CMAKE_ARCH=arm
 | 
			
		||||
elif [[ "$arch" = "armhf" ]]; then
 | 
			
		||||
    GCC_ARCH="arm-linux-gnueabihf"
 | 
			
		||||
    DE_CPU="DE_CPU_ARM"
 | 
			
		||||
    CMAKE_ARCH=arm
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ -n "$GCC_ARCH" ]]; then
 | 
			
		||||
    echo "set(CMAKE_SYSTEM_NAME Linux)" > "$toolchain_file"
 | 
			
		||||
    echo "set(CMAKE_SYSTEM_PROCESSOR arm)" >> "$toolchain_file"
 | 
			
		||||
    echo "set(CMAKE_C_COMPILER /usr/lib/ccache/$GCC_ARCH-gcc)" >> "$toolchain_file"
 | 
			
		||||
    echo "set(CMAKE_CXX_COMPILER /usr/lib/ccache/$GCC_ARCH-g++)" >> "$toolchain_file"
 | 
			
		||||
    echo "set(ENV{PKG_CONFIG} \"/usr/bin/$GCC_ARCH-pkg-config\")" >> "$toolchain_file"
 | 
			
		||||
    echo "set(DE_CPU $DE_CPU)" >> "$toolchain_file"
 | 
			
		||||
fi
 | 
			
		||||
@@ -1,251 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
if [ $DEBIAN_ARCH = arm64 ]; then
 | 
			
		||||
    ARCH_PACKAGES="firmware-qcom-media"
 | 
			
		||||
elif [ $DEBIAN_ARCH = amd64 ]; then
 | 
			
		||||
    # Upstream LLVM package repository
 | 
			
		||||
    apt-get -y install --no-install-recommends gnupg ca-certificates
 | 
			
		||||
    apt-key add /llvm-snapshot.gpg.key
 | 
			
		||||
    echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-10 main" >/etc/apt/sources.list.d/llvm10.list
 | 
			
		||||
    apt-get update
 | 
			
		||||
 | 
			
		||||
    ARCH_PACKAGES="libelf1
 | 
			
		||||
                   libllvm10
 | 
			
		||||
                   libxcb-dri2-0
 | 
			
		||||
                   libxcb-dri3-0
 | 
			
		||||
                   libxcb-present0
 | 
			
		||||
                   libxcb-sync1
 | 
			
		||||
                   libxcb-xfixes0
 | 
			
		||||
                   libxshmfence1
 | 
			
		||||
                   firmware-amd-graphics
 | 
			
		||||
                  "
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
apt-get -y install --no-install-recommends \
 | 
			
		||||
    ca-certificates \
 | 
			
		||||
    curl \
 | 
			
		||||
    initramfs-tools \
 | 
			
		||||
    libpng16-16 \
 | 
			
		||||
    strace \
 | 
			
		||||
    libsensors5 \
 | 
			
		||||
    libexpat1 \
 | 
			
		||||
    libx11-6 \
 | 
			
		||||
    libx11-xcb1 \
 | 
			
		||||
    $ARCH_PACKAGES \
 | 
			
		||||
    netcat-openbsd \
 | 
			
		||||
    python3 \
 | 
			
		||||
    libpython3.7 \
 | 
			
		||||
    python3-pil \
 | 
			
		||||
    python3-pytest \
 | 
			
		||||
    python3-requests \
 | 
			
		||||
    python3-yaml \
 | 
			
		||||
    sntp \
 | 
			
		||||
    wget \
 | 
			
		||||
    xz-utils
 | 
			
		||||
 | 
			
		||||
if [ -n "$INCLUDE_VK_CTS" ]; then
 | 
			
		||||
    apt-get install -y libvulkan1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
passwd root -d
 | 
			
		||||
chsh -s /bin/sh
 | 
			
		||||
 | 
			
		||||
cat > /init <<EOF
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
export PS1=lava-shell:
 | 
			
		||||
exec sh
 | 
			
		||||
EOF
 | 
			
		||||
chmod +x  /init
 | 
			
		||||
 | 
			
		||||
mkdir -p /lib/firmware/rtl_nic
 | 
			
		||||
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/rtl_nic/rtl8153a-3.fw -O /lib/firmware/rtl_nic/rtl8153a-3.fw
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Strip the image to a small minimal system without removing the debian
 | 
			
		||||
# toolchain.
 | 
			
		||||
 | 
			
		||||
# xz compress firmware so it doesn't waste RAM at runtime.  Except db820c's
 | 
			
		||||
# GPU firmware, due to using a precompiled kernel without compression support.
 | 
			
		||||
find /lib/firmware -type f -print0 | \
 | 
			
		||||
    grep -vz a530 | \
 | 
			
		||||
    xargs -0r -P4 -n4 xz -T1 -C crc32
 | 
			
		||||
ln -s /lib/firmware/qcom/a530* /lib/firmware/
 | 
			
		||||
 | 
			
		||||
# Copy timezone file and remove tzdata package
 | 
			
		||||
rm -rf /etc/localtime
 | 
			
		||||
cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
 | 
			
		||||
 | 
			
		||||
UNNEEDED_PACKAGES="libfdisk1
 | 
			
		||||
                   tzdata
 | 
			
		||||
                   diffutils
 | 
			
		||||
                   gnupg"
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
# Removing unused packages
 | 
			
		||||
for PACKAGE in ${UNNEEDED_PACKAGES}
 | 
			
		||||
do
 | 
			
		||||
	echo ${PACKAGE}
 | 
			
		||||
	if ! apt-get remove --purge --yes "${PACKAGE}"
 | 
			
		||||
	then
 | 
			
		||||
		echo "WARNING: ${PACKAGE} isn't installed"
 | 
			
		||||
	fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
apt-get autoremove --yes || true
 | 
			
		||||
 | 
			
		||||
# Dropping logs
 | 
			
		||||
rm -rf /var/log/*
 | 
			
		||||
 | 
			
		||||
# Dropping documentation, localization, i18n files, etc
 | 
			
		||||
rm -rf /usr/share/doc/*
 | 
			
		||||
rm -rf /usr/share/locale/*
 | 
			
		||||
rm -rf /usr/share/X11/locale/*
 | 
			
		||||
rm -rf /usr/share/man
 | 
			
		||||
rm -rf /usr/share/i18n/*
 | 
			
		||||
rm -rf /usr/share/info/*
 | 
			
		||||
rm -rf /usr/share/lintian/*
 | 
			
		||||
rm -rf /usr/share/common-licenses/*
 | 
			
		||||
rm -rf /usr/share/mime/*
 | 
			
		||||
 | 
			
		||||
# Dropping reportbug scripts
 | 
			
		||||
rm -rf /usr/share/bug
 | 
			
		||||
 | 
			
		||||
# Drop udev hwdb not required on a stripped system
 | 
			
		||||
rm -rf /lib/udev/hwdb.bin /lib/udev/hwdb.d/*
 | 
			
		||||
 | 
			
		||||
# Drop all gconv conversions && binaries
 | 
			
		||||
rm -rf usr/bin/iconv
 | 
			
		||||
rm -rf usr/sbin/iconvconfig
 | 
			
		||||
rm -rf usr/lib/*/gconv/
 | 
			
		||||
 | 
			
		||||
# Remove libusb database
 | 
			
		||||
rm -rf usr/sbin/update-usbids
 | 
			
		||||
rm -rf var/lib/usbutils/usb.ids
 | 
			
		||||
rm -rf usr/share/misc/usb.ids
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Crush into a minimal production image to be deployed via some type of image
 | 
			
		||||
# updating system.
 | 
			
		||||
# IMPORTANT: The Debian system is not longer functional at this point,
 | 
			
		||||
# for example, apt and dpkg will stop working
 | 
			
		||||
 | 
			
		||||
UNNEEDED_PACKAGES="apt libapt-pkg6.0 "\
 | 
			
		||||
"ncurses-bin ncurses-base libncursesw6 libncurses6 "\
 | 
			
		||||
"perl-base "\
 | 
			
		||||
"debconf libdebconfclient0 "\
 | 
			
		||||
"e2fsprogs e2fslibs libfdisk1 "\
 | 
			
		||||
"insserv "\
 | 
			
		||||
"udev "\
 | 
			
		||||
"init-system-helpers "\
 | 
			
		||||
"bash "\
 | 
			
		||||
"cpio "\
 | 
			
		||||
"xz-utils "\
 | 
			
		||||
"passwd "\
 | 
			
		||||
"libsemanage1 libsemanage-common "\
 | 
			
		||||
"libsepol1 "\
 | 
			
		||||
"gpgv "\
 | 
			
		||||
"hostname "\
 | 
			
		||||
"adduser "\
 | 
			
		||||
"debian-archive-keyring "\
 | 
			
		||||
"libegl1-mesa-dev "\
 | 
			
		||||
"libegl-mesa0 "\
 | 
			
		||||
"libgl1-mesa-dev "\
 | 
			
		||||
"libgl1-mesa-dri "\
 | 
			
		||||
"libglapi-mesa "\
 | 
			
		||||
"libgles2-mesa-dev "\
 | 
			
		||||
"libglx-mesa0 "\
 | 
			
		||||
"mesa-common-dev "\
 | 
			
		||||
"libz3-4 "\
 | 
			
		||||
 | 
			
		||||
# Removing unneeded packages
 | 
			
		||||
for PACKAGE in ${UNNEEDED_PACKAGES}
 | 
			
		||||
do
 | 
			
		||||
	echo "Forcing removal of ${PACKAGE}"
 | 
			
		||||
	if ! dpkg --purge --force-remove-essential --force-depends "${PACKAGE}"
 | 
			
		||||
	then
 | 
			
		||||
		echo "WARNING: ${PACKAGE} isn't installed"
 | 
			
		||||
	fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Show what's left package-wise before dropping dpkg itself
 | 
			
		||||
COLUMNS=300 dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
 | 
			
		||||
 | 
			
		||||
# Drop dpkg
 | 
			
		||||
dpkg --purge --force-remove-essential --force-depends  dpkg
 | 
			
		||||
 | 
			
		||||
# No apt or dpkg, no need for its configuration archives
 | 
			
		||||
rm -rf etc/apt
 | 
			
		||||
rm -rf etc/dpkg
 | 
			
		||||
 | 
			
		||||
# Drop directories not part of ostree
 | 
			
		||||
# Note that /var needs to exist as ostree bind mounts the deployment /var over
 | 
			
		||||
# it
 | 
			
		||||
rm -rf var/* opt srv share
 | 
			
		||||
 | 
			
		||||
# ca-certificates are in /etc drop the source
 | 
			
		||||
rm -rf usr/share/ca-certificates
 | 
			
		||||
 | 
			
		||||
# No bash, no need for completions
 | 
			
		||||
rm -rf usr/share/bash-completion
 | 
			
		||||
 | 
			
		||||
# No zsh, no need for comletions
 | 
			
		||||
rm -rf usr/share/zsh/vendor-completions
 | 
			
		||||
 | 
			
		||||
# drop gcc-6 python helpers
 | 
			
		||||
rm -rf usr/share/gcc-6
 | 
			
		||||
 | 
			
		||||
# Drop sysvinit leftovers
 | 
			
		||||
rm -rf etc/init.d
 | 
			
		||||
rm -rf etc/rc[0-6S].d
 | 
			
		||||
 | 
			
		||||
# Drop upstart helpers
 | 
			
		||||
rm -rf etc/init
 | 
			
		||||
 | 
			
		||||
# Various xtables helpers
 | 
			
		||||
rm -rf usr/lib/xtables
 | 
			
		||||
 | 
			
		||||
# Drop all locales
 | 
			
		||||
# TODO: only remaining locale is actually "C". Should we really remove it?
 | 
			
		||||
rm -rf usr/lib/locale/*
 | 
			
		||||
 | 
			
		||||
# partition helpers
 | 
			
		||||
rm -rf usr/sbin/*fdisk
 | 
			
		||||
 | 
			
		||||
# local compiler
 | 
			
		||||
rm -rf usr/bin/localedef
 | 
			
		||||
 | 
			
		||||
# Systemd dns resolver
 | 
			
		||||
find usr etc -name '*systemd-resolve*' -prune -exec rm -r {} \;
 | 
			
		||||
 | 
			
		||||
# Systemd network configuration
 | 
			
		||||
find usr etc -name '*networkd*' -prune -exec rm -r {} \;
 | 
			
		||||
 | 
			
		||||
# systemd ntp client
 | 
			
		||||
find usr etc -name '*timesyncd*' -prune -exec rm -r {} \;
 | 
			
		||||
 | 
			
		||||
# systemd hw database manager
 | 
			
		||||
find usr etc -name '*systemd-hwdb*' -prune -exec rm -r {} \;
 | 
			
		||||
 | 
			
		||||
# No need for fuse
 | 
			
		||||
find usr etc -name '*fuse*' -prune -exec rm -r {} \;
 | 
			
		||||
 | 
			
		||||
# lsb init function leftovers
 | 
			
		||||
rm -rf usr/lib/lsb
 | 
			
		||||
 | 
			
		||||
# Only needed when adding libraries
 | 
			
		||||
rm -rf usr/sbin/ldconfig*
 | 
			
		||||
 | 
			
		||||
# Games, unused
 | 
			
		||||
rmdir usr/games
 | 
			
		||||
 | 
			
		||||
# Remove pam module to authenticate against a DB
 | 
			
		||||
# plus libdb-5.3.so that is only used by this pam module
 | 
			
		||||
rm -rf usr/lib/*/security/pam_userdb.so
 | 
			
		||||
rm -rf usr/lib/*/libdb-5.3.so
 | 
			
		||||
 | 
			
		||||
# remove NSS support for nis, nisplus and hesiod
 | 
			
		||||
rm -rf usr/lib/*/libnss_hesiod*
 | 
			
		||||
rm -rf usr/lib/*/libnss_nis*
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
u_format_test
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
lp_test_arit
 | 
			
		||||
roundeven
 | 
			
		||||
u_format_test
 | 
			
		||||
u_half_test
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
lp_test_arit
 | 
			
		||||
lp_test_format
 | 
			
		||||
lp_test_printf
 | 
			
		||||
u_format_test
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
@@ -1,481 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_l8_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgb888_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba4444_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba8888_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_l8_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgb888_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba4444_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba8888_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_l8_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgb888_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba4444_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba8888_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_l8_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgb888_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba4444_npot,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba8888_npot,Fail
 | 
			
		||||
 | 
			
		||||
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.point.wide_point_clip,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES3.functional.draw.instancing.draw_arrays_instanced_grid_100x100,Fail
 | 
			
		||||
dEQP-GLES3.functional.draw.instancing.draw_arrays_instanced_grid_32x32,Fail
 | 
			
		||||
dEQP-GLES3.functional.draw.instancing.draw_elements_instanced_grid_100x100,Fail
 | 
			
		||||
dEQP-GLES3.functional.draw.instancing.draw_elements_instanced_grid_32x32,Fail
 | 
			
		||||
dEQP-GLES3.functional.draw.random.124,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_basic,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_scale,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_stencil_only,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_basic,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_scale,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_stencil_only,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.color.blend.r8_src_over,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.basic.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.basic.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.basic.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.basic.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.basic.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r11f_g11f_b10f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rg16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rg8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb10_a2,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb565,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb5_a1,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba4,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.srgb8_alpha8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r11f_g11f_b10f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb10_a2,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb565,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb5_a1,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba4,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.srgb8_alpha8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_rbo_depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_rbo_depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_stencil_rbo_depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_stencil_rbo_depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_stencil_tex2d_depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_stencil_tex2d_depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_tex2d_depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_tex2d_depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_depth_tex2d_depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.recreate_depth_stencil.tex2d_rgba8_stencil_rbo_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.shared_colorbuffer.rbo_r8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.shared_colorbuffer.rbo_r8_depth_rbo_depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.shared_colorbuffer.rbo_r8_depth_stencil_rbo_depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.shared_colorbuffer.tex2d_r8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.shared_colorbuffer.tex2d_r8_depth_rbo_depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.render.shared_colorbuffer.tex2d_r8_depth_stencil_rbo_depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.lifetime.attach.deleted_input.buffer_vertex_array,Fail
 | 
			
		||||
dEQP-GLES3.functional.lifetime.attach.deleted_output.buffer_transform_feedback,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_alpha_to_coverage,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage_inverted,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.sample_coverage_invert,Fail
 | 
			
		||||
dEQP-GLES3.functional.negative_api.buffer.blit_framebuffer_multisample,Fail
 | 
			
		||||
dEQP-GLES3.functional.negative_api.buffer.read_pixels_fbo_format_mismatch,Fail
 | 
			
		||||
dEQP-GLES3.functional.negative_api.vertex_array.draw_elements_instanced,Fail
 | 
			
		||||
dEQP-GLES3.functional.negative_api.vertex_array.draw_range_elements,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_clear_stencil_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_clear_stencil_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write_depth_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write_depth_clear_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write_depth_clear_stencil_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write_depth_clear_stencil_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write_stencil_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.depth_write_stencil_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor_depth_clear_stencil_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor_depth_clear_stencil_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor_depth_write_depth_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor_depth_write_stencil_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor_depth_write_stencil_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor_stencil_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.scissor_stencil_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.stencil_write,Fail
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.stencil_write_stencil_clear,Fail
 | 
			
		||||
dEQP-GLES3.functional.polygon_offset.fixed16_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.triangles,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.points,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.triangles,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.points,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.triangles,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.points,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.flatshading.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.flatshading.triangles,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.linkage.varying.rules.differing_interpolation_2,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.isampler2d_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.isampler3d_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2darray_fixed_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2darrayshadow_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler3d_fixed_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.sampler2dshadow_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.sampler3d_float_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.usampler3d_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.sampler2dshadow_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.sampler2dshadow_vertex,Fail
 | 
			
		||||
dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_component_type,Fail
 | 
			
		||||
dEQP-GLES3.functional.state_query.integers.max_samples_getfloat,Fail
 | 
			
		||||
dEQP-GLES3.functional.state_query.integers.max_samples_getinteger64,Fail
 | 
			
		||||
dEQP-GLES3.functional.state_query.rbo.renderbuffer_component_size_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.mipmap.cube.max_level.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.specification.random_teximage2d.cube_3,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.2_units.mixed.1,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.2_units.mixed.9,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.2_units.only_3d.5,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.2_units.only_3d.9,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.2_units.only_cube.2,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.mixed.1,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.mixed.9,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_2d.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_2d_array.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_3d.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_3d.1,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_3d.5,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_3d.7,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_3d.9,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_cube.2,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.mixed.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.mixed.7,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.mixed.8,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_2d.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_2d.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_2d_array.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_2d_array.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_3d.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_3d.8,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_cube.1,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.8_units.only_cube.2,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.mixed.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.mixed.5,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.mixed.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.mixed.8,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.mixed.9,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_2d.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_2d.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_2d_array.0,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_2d_array.5,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_2d_array.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_3d.5,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_3d.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_cube.1,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.units.all_units.only_cube.2,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_lines_interleaved,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_lines_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_triangles_interleaved,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_triangles_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_lines_interleaved,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_lines_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_triangles_interleaved,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_triangles_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_lines_interleaved,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_lines_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_triangles_interleaved,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_triangles_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.10,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.4,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.8,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.9,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.1,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.lines.10,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.lines.2,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.lines.4,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.lines.7,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.10,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.5,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.6,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.7,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.8,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.9,Fail
 | 
			
		||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte.first6_offset16_stride32_quads5,Fail
 | 
			
		||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads256,Fail
 | 
			
		||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy.stride4_short_quads256,Fail
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
# Note: flakes lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
dEQP-GLES3.functional.occlusion_query.stencil_write
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_.*
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.triangles
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.points
 | 
			
		||||
dEQP-GLES3.functional.rasterization.flatshading.lines_wide
 | 
			
		||||
dEQP-GLES3.functional.rasterization.flatshading.triangles
 | 
			
		||||
dEQP-GLES3.functional.shaders.linkage.varying.interpolation.centroid
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.*
 | 
			
		||||
dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.*
 | 
			
		||||
dEQP-GLES3.functional.texture.units.4_units.only_3d.*
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.8
 | 
			
		||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.*
 | 
			
		||||
@@ -1,64 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_luminance,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgb,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgba,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.interleaved.lines.lowp_float,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.interleaved.lines.mediump_int,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.interleaved.points.highp_mat3x2,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles.highp_mat2x3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles.lowp_uvec3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.separate.lines.highp_mat3x4,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.separate.points.lowp_mat2,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.separate.points.mediump_uint,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.separate.triangles.lowp_vec3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array.separate.triangles.mediump_ivec3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines.highp_uvec4,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points.highp_vec2,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points.lowp_ivec3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.lowp_int,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array_element.separate.lines.highp_vec4,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.array_element.separate.lines.lowp_uint,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines.lowp_mat2x4,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines.mediump_uvec3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points.highp_int,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points.mediump_float,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles.highp_mat4x3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines.highp_ivec3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines.mediump_vec3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.separate.points.lowp_mat4x2,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles.lowp_mat3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.interpolation.smooth.highp_vec4_triangles_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.position.lines_separate,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.3,Fail
 | 
			
		||||
dEQP-GLES3.functional.transform_feedback.random.separate.points.3,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_rgba8,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32f_rgba32ui,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32ui,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_r32f,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.cube.load_store.r32f_single_layer,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32i_single_layer,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_snorm_single_layer,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil_fbo,Crash
 | 
			
		||||
dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_single,Fail
 | 
			
		||||
dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_single,Fail
 | 
			
		||||
dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.named_block.var_struct_explicit_location,Fail
 | 
			
		||||
dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.in.named_block_explicit_location.var_struct,Fail
 | 
			
		||||
dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.named_block_explicit_location.struct.uint,Fail
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.119,Fail
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.59,Fail
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.69,Fail
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.79,Fail
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.99,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.border_clamp.formats.compressed_rgba8_etc2_eac.nearest_size_tile_multiple,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata.buffer_size_131071,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture.offset_7_alignments,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture.offset_1_alignments,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture.range_size_98304,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.texture_buffer.state_query.max_texture_buffer_size_getinteger,Fail
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
# unstable results (probably related to the iommu faults).
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.*
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.*
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil
 | 
			
		||||
dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.packed_instance_array_fragment
 | 
			
		||||
 | 
			
		||||
# These are in the xfails list (they usually do), but the random
 | 
			
		||||
# behavior occasionally results in UnexpectedPass results.
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.99
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.69
 | 
			
		||||
dEQP-GLES31.functional.separate_shader.random.119
 | 
			
		||||
@@ -1,87 +0,0 @@
 | 
			
		||||
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.colorburn,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.colordodge,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.darken,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.difference,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.exclusion,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.hardlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_color,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_hue,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_luminosity,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_saturation,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.lighten,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.multiply,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.overlay,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.screen,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.barrier.softlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.colorburn,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.colordodge,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.darken,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.difference,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.exclusion,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.hardlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_color,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_hue,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_luminosity,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_saturation,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.lighten,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.multiply,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.overlay,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.screen,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.basic.softlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.colorburn,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.colordodge,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.darken,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.difference,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.exclusion,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.hardlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_color,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_hue,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_luminosity,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_saturation,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.lighten,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.multiply,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.overlay,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.screen,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.msaa.softlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.colorburn,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.colordodge,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.darken,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.difference,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.exclusion,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.hardlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_color,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_hue,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_luminosity,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_saturation,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.lighten,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.multiply,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.overlay,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.screen,Fail
 | 
			
		||||
dEQP-GLES31.functional.blend_equation_advanced.srgb.softlight,Fail
 | 
			
		||||
dEQP-GLES31.functional.compute.basic.shared_var_single_group,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_advanced_blend_eq_buffer_advanced_blend_eq,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_blend_eq_buffer_advanced_blend_eq,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_separate_blend_eq_buffer_advanced_blend_eq,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_advanced_blend_eq,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_blend_eq,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_separate_blend_eq,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_separate_blend_eq_buffer_blend_eq,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_depth_fbo,Fail
 | 
			
		||||
dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat4x2,Fail
 | 
			
		||||
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat3,Fail
 | 
			
		||||
dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.6,Fail
 | 
			
		||||
dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.shared_instance_array,Fail
 | 
			
		||||
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw,Fail
 | 
			
		||||
dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_clear,Fail
 | 
			
		||||
dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_draw,Fail
 | 
			
		||||
dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set.quads_fractional_even_spacing,Fail
 | 
			
		||||
dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_cw,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_1.use_texture_depth_2d,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_1.use_texture_depth_2d_array,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_2.use_texture_depth_2d,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_2.use_texture_depth_2d_array,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_3.use_texture_depth_2d,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_3.use_texture_depth_2d_array,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_depth_2d,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_depth_2d_array,Fail
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
# Possibly https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2035 related,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z,Fail
 | 
			
		||||
 | 
			
		||||
dEQP-VK.compute.indirect_dispatch.upload_buffer.multi_dispatch,Fail
 | 
			
		||||
dEQP-VK.draw.output_location.array.r8g8-uint-mediump-output-uint,Fail
 | 
			
		||||
dEQP-VK.memory_model.message_passing.core11.u32.coherent.fence_fence.atomicwrite.device.payload_local.image.guard_nonlocal.workgroup.comp,Fail
 | 
			
		||||
dEQP-VK.spirv_assembly.instruction.graphics.opquantize.round_to_negative_inf_geom,Fail
 | 
			
		||||
dEQP-VK.spirv_assembly.instruction.graphics.opquantize.spec_const_positive_round_up_or_round_down_geom,Fail
 | 
			
		||||
 | 
			
		||||
# not sure what's wrong here,Fail
 | 
			
		||||
dEQP-VK.tessellation.invariance.outer_edge_index_independence.quads_fractional_even_spacing_ccw_point_mode,Fail
 | 
			
		||||
dEQP-VK.tessellation.invariance.outer_edge_symmetry.triangles_fractional_odd_spacing_cw_point_mode,Fail
 | 
			
		||||
 | 
			
		||||
KHR-GL30.transform_feedback.api_errors_test,Fail
 | 
			
		||||
KHR-GL30.transform_feedback.capture_vertex_interleaved_test,Fail
 | 
			
		||||
KHR-GL30.transform_feedback.capture_vertex_separate_test,Fail
 | 
			
		||||
KHR-GL30.transform_feedback.discard_vertex_test,Fail
 | 
			
		||||
KHR-GL30.transform_feedback.draw_xfb_feedbackk_test,Crash
 | 
			
		||||
KHR-GL30.transform_feedback.draw_xfb_instanced_test,Crash
 | 
			
		||||
KHR-GL30.transform_feedback.draw_xfb_stream_instanced_test,Crash
 | 
			
		||||
KHR-GL30.transform_feedback.draw_xfb_test,Crash
 | 
			
		||||
KHR-GL30.transform_feedback.get_xfb_varying,Fail
 | 
			
		||||
KHR-GL30.transform_feedback.query_vertex_interleaved_test,Fail
 | 
			
		||||
KHR-GL30.transform_feedback.query_vertex_separate_test,Fail
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
# Note: flakes lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Flakes reported more than once during Jan-Feb 2020
 | 
			
		||||
dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array
 | 
			
		||||
 | 
			
		||||
# Started appearing with the new deqp runner.  possibly different test order?
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.conversion.rg8i_to_r16i
 | 
			
		||||
 | 
			
		||||
# We have longstanding intermittent failures with compswap.
 | 
			
		||||
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.highp_int
 | 
			
		||||
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.highp_uint
 | 
			
		||||
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.lowp_int
 | 
			
		||||
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.lowp_uint
 | 
			
		||||
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.mediump_int
 | 
			
		||||
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.mediump_uint
 | 
			
		||||
dEQP-GLES31.functional.ssbo.atomic.compswap.highp_int
 | 
			
		||||
dEQP-GLES31.functional.ssbo.atomic.compswap.highp_uint
 | 
			
		||||
dEQP-GLES31.functional.ssbo.atomic.compswap.lowp_int
 | 
			
		||||
dEQP-GLES31.functional.ssbo.atomic.compswap.lowp_uint
 | 
			
		||||
dEQP-GLES31.functional.ssbo.atomic.compswap.mediump_int
 | 
			
		||||
dEQP-GLES31.functional.ssbo.atomic.compswap.mediump_uint
 | 
			
		||||
 | 
			
		||||
# Non-sysmem flakes
 | 
			
		||||
dEQP-VK.pipeline.spec_constant.compute.composite.matrix.mat3x2
 | 
			
		||||
 | 
			
		||||
# Sysmem flakes
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_3.use_texture_depth_2d
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_depth_2d_array
 | 
			
		||||
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw
 | 
			
		||||
 | 
			
		||||
# Fails NIR_VALIDATE so probably flaky
 | 
			
		||||
dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_nonlocal.workgroup.guard_local.buffer.comp
 | 
			
		||||
 | 
			
		||||
# At least some of the separate_channels tests fail on sysmem due to an
 | 
			
		||||
# interaction of use of a UBWC buffer as both a render target and a
 | 
			
		||||
# texture.  Stores are done through both paths in separate channels,
 | 
			
		||||
# and the UBWC updates don't get synced.  The current a650 blob also
 | 
			
		||||
# fails these tests and qcom apparently noted the failure at one point
 | 
			
		||||
# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2017
 | 
			
		||||
dEQP-VK.renderpass.*separate_channels.*
 | 
			
		||||
 | 
			
		||||
# These tests are broken (does not respect our minStorageBufferOffsetAlignment of 64)
 | 
			
		||||
dEQP-VK.pipeline.push_descriptor.compute.*
 | 
			
		||||
 | 
			
		||||
# Undiagnosed flakes appearing more than once in the last 2 months as
 | 
			
		||||
# of 2020-08-19, in descending order of frequency.
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8
 | 
			
		||||
dEQP-GLES3.functional.fragment_out.random.39
 | 
			
		||||
dEQP-VK.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_eval
 | 
			
		||||
dEQP-VK.image.texel_view_compatible.graphic.extended.2d_image.texture_read.astc_10x6_unorm_block.r32g32b32a32_uint
 | 
			
		||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.blit_image.all_formats.generate_mipmaps.from_base_level.layercount_6.r8g8b8a8_sint.general_optimal_nearest
 | 
			
		||||
dEQP-VK.api.copy_and_blit.core.blit_image.all_formats.color.r16_unorm.b8g8r8a8_snorm.optimal_optimal_nearest
 | 
			
		||||
dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array
 | 
			
		||||
dEQP-VK.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_eval
 | 
			
		||||
dEQP-VK.api.copy_and_blit.core.blit_image.all_formats.color.r8g8b8a8_snorm.r32_sfloat.general_optimal_nearest
 | 
			
		||||
dEQP-GLES31.functional.tessellation.invariance.primitive_set.quads_equal_spacing_cw
 | 
			
		||||
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat2
 | 
			
		||||
dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_1200x1200_drawcount_8
 | 
			
		||||
@@ -1,66 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.0,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.1,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.10,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.11,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.12,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.13,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.14,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.15,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.17,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.18,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.19,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.2,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.20,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.21,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.22,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.23,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.24,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.3,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.4,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.5,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.6,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.7,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.9,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.vector_counter_fragment,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.vector_counter_fragment,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.vector_counter_fragment,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.all_features.fragment.37,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.11,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.12,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.14,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.37,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.5,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.74,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.texture.fragment.28,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.65,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2d_bias,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec4_bias,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texturecube_bias,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgb,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgba,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgb,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgba,Fail
 | 
			
		||||
@@ -1,38 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance
 | 
			
		||||
dEQP-GLES[0-9]*.stress
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish
 | 
			
		||||
 | 
			
		||||
# Flaky
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
 | 
			
		||||
dEQP-GLES2.functional.default_vertex_attrib.*
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.size.distinct
 | 
			
		||||
dEQP-GLES2.functional.negative_api.shader.uniform_matrixfv_invalid_transpose
 | 
			
		||||
dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level_array_compressed
 | 
			
		||||
dEQP-GLES2.functional.shaders.builtin_variable.frontfacing
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.94
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.all_features.fragment.55
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.1
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.69
 | 
			
		||||
 | 
			
		||||
# Hangs / OOM
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_static_read
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_dynamic_read
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_static_loop_read
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_dynamic_loop_read
 | 
			
		||||
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_read_vertex
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_loop_read_vertex
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_loop_read_vertex
 | 
			
		||||
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_read_vertex
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_dynamic_read_vertex
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_loop_read_vertex
 | 
			
		||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_dynamic_loop_read_vertex
 | 
			
		||||
@@ -1,78 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.depth.rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.polygon_offset.default_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_l8,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgb888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba4444,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_clamp_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_clamp_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_etc1,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_l8,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgb888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba4444,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba8888,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.linear_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat_non_square,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp_non_square,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror_non_square,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat_non_square,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.linear_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest,Fail
 | 
			
		||||
@@ -1,42 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.color0.r16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.color0.rg16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.color0.rgba16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.depth.r16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.depth.rg16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.depth.rgba16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.stencil.r16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.stencil.rg16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.stencil.rgba16f,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.r8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rg8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb10_a2,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb_half_float_oes,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.completeness.size.distinct,Fail
 | 
			
		||||
dEQP-GLES2.functional.negative_api.shader.uniform_matrixfv_invalid_transpose,Fail
 | 
			
		||||
dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level_array_compressed,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.random.all_features.fragment.88,Fail
 | 
			
		||||
dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES2.functional.uniform_api.random.79,Fail
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_clamp
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_mirror
 | 
			
		||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_repeat
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
@@ -1,49 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_src_color_one_minus_dst_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_dst_alpha_one_minus_src_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_dst_color_one_minus_src_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_src_color_dst_color,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.one_minus_constant_alpha_dst_color,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.one_minus_constant_alpha_one_minus_dst_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.src_color_one_minus_src_color,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.src_color_zero,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.src.constant_alpha_constant_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.src.dst_alpha_constant_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.src.one_constant_color,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.src.one_minus_constant_color_one_minus_constant_alpha,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.src.src_alpha_saturate_one_minus_src_color,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.4,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.62,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.73,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.81,Fail
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.random.43,Fail
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.4
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.11
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.39
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.40
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.56
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.80
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.81
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.random.17
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.random.24
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.random.54
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.random.59
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.random.71
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.*
 | 
			
		||||
dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.*
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
# XXX: Why does this flake?
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
 | 
			
		||||
 | 
			
		||||
# Needs investigation
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
 | 
			
		||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
# XXX: Why does this flake?
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
 | 
			
		||||
@@ -1,41 +0,0 @@
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_y,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rg16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8,Fail
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
# XXX: Why does this flake?
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
# Exclude this test which might fail when a new extension is implemented.
 | 
			
		||||
dEQP-VK.info.device_extensions
 | 
			
		||||
 | 
			
		||||
# Exclude WSI related tests.
 | 
			
		||||
dEQP-VK.image.swapchain_mutable.*
 | 
			
		||||
dEQP-VK.wsi.*
 | 
			
		||||
@@ -1,29 +0,0 @@
 | 
			
		||||
# Interesting failures...,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_max,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_min,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_zero,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint_separate_layouts.stencil_max,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint_separate_layouts.stencil_min,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint_separate_layouts.stencil_zero,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint.stencil_max,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint.stencil_min,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint.stencil_zero,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint_separate_layouts.stencil_max,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint_separate_layouts.stencil_min,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint_separate_layouts.stencil_zero,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint.stencil_max,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint.stencil_min,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint.stencil_zero,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_max,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_min,Fail
 | 
			
		||||
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_zero,Fail
 | 
			
		||||
 | 
			
		||||
dEQP-VK.rasterization.flatshading.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide,Fail
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
dEQP-VK.rasterization.flatshading.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide,Fail
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
dEQP-VK.rasterization.flatshading.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide,Fail
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
dEQP-VK.pipeline.depth.format.d16_unorm.compare_ops.never_zerodepthbounds_depthdisabled_stencilenabled,Fail
 | 
			
		||||
dEQP-VK.pipeline.depth.format.d32_sfloat.compare_ops.never_zerodepthbounds_depthdisabled_stencilenabled,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide,Fail
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
dEQP-VK.rasterization.flatshading.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide,Fail
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
# Disable a TON of tests to keep the run around 5-10 minutes because my runner is
 | 
			
		||||
# slow.
 | 
			
		||||
dEQP-VK.api.*
 | 
			
		||||
dEQP-VK.binding_model.*
 | 
			
		||||
dEQP-VK.clipping.*
 | 
			
		||||
dEQP-VK.compute.*
 | 
			
		||||
dEQP-VK.conditional_rendering.*
 | 
			
		||||
dEQP-VK.descriptor_indexing.*
 | 
			
		||||
dEQP-VK.device_group.*
 | 
			
		||||
dEQP-VK.fragment_operations.*
 | 
			
		||||
dEQP-VK.fragment_shader_interlock.*
 | 
			
		||||
dEQP-VK.graphicsfuzz.*
 | 
			
		||||
dEQP-VK.image.*
 | 
			
		||||
dEQP-VK.imageless_framebuffer.*
 | 
			
		||||
dEQP-VK.info.*
 | 
			
		||||
dEQP-VK.memory.*
 | 
			
		||||
dEQP-VK.memory_model.*
 | 
			
		||||
dEQP-VK.multiview.*
 | 
			
		||||
dEQP-VK.pipeline.*
 | 
			
		||||
dEQP-VK.protected_memory.*
 | 
			
		||||
dEQP-VK.query_pool.*
 | 
			
		||||
dEQP-VK.robustness.*
 | 
			
		||||
dEQP-VK.sparse_resources.*
 | 
			
		||||
dEQP-VK.spirv_assembly.*
 | 
			
		||||
dEQP-VK.subgroups.*
 | 
			
		||||
dEQP-VK.synchronization.*
 | 
			
		||||
dEQP-VK.texture.*
 | 
			
		||||
dEQP-VK.transform_feedback.*
 | 
			
		||||
dEQP-VK.ubo.*
 | 
			
		||||
dEQP-VK.wsi.*
 | 
			
		||||
dEQP-VK.ycbcr.*
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
dEQP-VK.rasterization.flatshading.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide,Fail
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
# This subset of CTS seems to randomly hangs on RAVEN only.
 | 
			
		||||
# This needs to be investigated and fixed!
 | 
			
		||||
dEQP-VK.synchronization.*
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
dEQP-VK.rasterization.flatshading.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.flatshading.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide,Fail
 | 
			
		||||
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide,Fail
 | 
			
		||||
@@ -1,285 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -ex
 | 
			
		||||
 | 
			
		||||
DEQP_WIDTH=${DEQP_WIDTH:-256}
 | 
			
		||||
DEQP_HEIGHT=${DEQP_HEIGHT:-256}
 | 
			
		||||
DEQP_CONFIG=${DEQP_CONFIG:-rgba8888d24s8ms0}
 | 
			
		||||
DEQP_VARIANT=${DEQP_VARIANT:-master}
 | 
			
		||||
 | 
			
		||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-width=$DEQP_WIDTH --deqp-surface-height=$DEQP_HEIGHT"
 | 
			
		||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=pbuffer"
 | 
			
		||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-gl-config-name=$DEQP_CONFIG"
 | 
			
		||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-visibility=hidden"
 | 
			
		||||
 | 
			
		||||
if [ -z "$DEQP_VER" ]; then
 | 
			
		||||
   echo 'DEQP_VER must be set to something like "gles2", "gles31" or "vk" for the test run'
 | 
			
		||||
   exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ "$DEQP_VER" = "vk" ]; then
 | 
			
		||||
   if [ -z "$VK_DRIVER" ]; then
 | 
			
		||||
      echo 'VK_DRIVER must be to something like "radeon" or "intel" for the test run'
 | 
			
		||||
      exit 1
 | 
			
		||||
   fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$DEQP_SKIPS" ]; then
 | 
			
		||||
   echo 'DEQP_SKIPS must be set to something like "deqp-default-skips.txt"'
 | 
			
		||||
   exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
INSTALL=`pwd`/install
 | 
			
		||||
 | 
			
		||||
# Set up the driver environment.
 | 
			
		||||
export LD_LIBRARY_PATH=`pwd`/install/lib/
 | 
			
		||||
export EGL_PLATFORM=surfaceless
 | 
			
		||||
export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.`uname -m`.json
 | 
			
		||||
 | 
			
		||||
# the runner was failing to look for libkms in /usr/local/lib for some reason
 | 
			
		||||
# I never figured out.
 | 
			
		||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
 | 
			
		||||
 | 
			
		||||
RESULTS=`pwd`/${DEQP_RESULTS_DIR:-results}
 | 
			
		||||
mkdir -p $RESULTS
 | 
			
		||||
 | 
			
		||||
# Generate test case list file.
 | 
			
		||||
if [ "$DEQP_VER" = "vk" ]; then
 | 
			
		||||
   cp /deqp/mustpass/vk-$DEQP_VARIANT.txt /tmp/case-list.txt
 | 
			
		||||
   DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
 | 
			
		||||
elif [ "$DEQP_VER" = "gles2" -o "$DEQP_VER" = "gles3" -o "$DEQP_VER" = "gles31" ]; then
 | 
			
		||||
   cp /deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt /tmp/case-list.txt
 | 
			
		||||
   DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
 | 
			
		||||
   SUITE=dEQP
 | 
			
		||||
else
 | 
			
		||||
   cp /deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt /tmp/case-list.txt
 | 
			
		||||
   DEQP=/deqp/external/openglcts/modules/glcts
 | 
			
		||||
   SUITE=KHR
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# If the job is parallel, take the corresponding fraction of the caselist.
 | 
			
		||||
# Note: N~M is a gnu sed extension to match every nth line (first line is #1).
 | 
			
		||||
if [ -n "$CI_NODE_INDEX" ]; then
 | 
			
		||||
   sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -n "$DEQP_CASELIST_FILTER" ]; then
 | 
			
		||||
    sed -ni "/$DEQP_CASELIST_FILTER/p" /tmp/case-list.txt
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ ! -s /tmp/case-list.txt ]; then
 | 
			
		||||
    echo "Caselist generation failed"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -n "$DEQP_EXPECTED_FAILS" ]; then
 | 
			
		||||
    BASELINE="--baseline $INSTALL/$DEQP_EXPECTED_FAILS"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -n "$DEQP_FLAKES" ]; then
 | 
			
		||||
    FLAKES="--flakes $INSTALL/$DEQP_FLAKES"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
 | 
			
		||||
if [ -n "$DEQP_PARALLEL" ]; then
 | 
			
		||||
   JOB="--jobs $DEQP_PARALLEL"
 | 
			
		||||
elif [ -n "$FDO_CI_CONCURRENT" ]; then
 | 
			
		||||
   JOB="--jobs $FDO_CI_CONCURRENT"
 | 
			
		||||
else
 | 
			
		||||
   JOB="--jobs 4"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# If this CI lab lacks artifacts support, print the whole list of failures/flakes.
 | 
			
		||||
if [ -z "$DEQP_NO_SAVE_RESULTS" ]; then
 | 
			
		||||
   SUMMARY_LIMIT="--summary-limit 0"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Silence the debug output for apps triggering GL errors, since dEQP will do a lot of that.
 | 
			
		||||
export MESA_DEBUG=silent
 | 
			
		||||
 | 
			
		||||
run_cts() {
 | 
			
		||||
    deqp=$1
 | 
			
		||||
    caselist=$2
 | 
			
		||||
    output=$3
 | 
			
		||||
    deqp-runner \
 | 
			
		||||
        run \
 | 
			
		||||
        --deqp $deqp \
 | 
			
		||||
        --output $RESULTS \
 | 
			
		||||
        --caselist $caselist \
 | 
			
		||||
        --skips $INSTALL/$DEQP_SKIPS \
 | 
			
		||||
        $BASELINE \
 | 
			
		||||
        $FLAKES \
 | 
			
		||||
        $JOB \
 | 
			
		||||
        $SUMMARY_LIMIT \
 | 
			
		||||
	$DEQP_RUNNER_OPTIONS \
 | 
			
		||||
        -- \
 | 
			
		||||
        $DEQP_OPTIONS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
report_flakes() {
 | 
			
		||||
    flakes=`grep ",Flake" $1 | sed 's|,Flake.*||g'`
 | 
			
		||||
    if [ -z "$flakes" ]; then
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ -z "$FLAKES_CHANNEL" ]; then
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # The nick needs to be something unique so that multiple runners
 | 
			
		||||
    # connecting at the same time don't race for one nick and get blocked.
 | 
			
		||||
    # freenode has a 16-char limit on nicks (9 is the IETF standard, but
 | 
			
		||||
    # various servers extend that).  So, trim off the common prefixes of the
 | 
			
		||||
    # runner name, and append the job ID so that software runners with more
 | 
			
		||||
    # than one concurrent job (think swrast) don't collide.  For freedreno,
 | 
			
		||||
    # that gives us a nick as long as db410c-N-JJJJJJJJ, and it'll be a while
 | 
			
		||||
    # before we make it to 9-digit jobs (we're at 7 so far).
 | 
			
		||||
    runner=`echo $CI_RUNNER_DESCRIPTION | sed 's|mesa-||' | sed 's|google-freedreno-||g'`
 | 
			
		||||
    bot="$runner-$CI_JOB_ID"
 | 
			
		||||
    channel="$FLAKES_CHANNEL"
 | 
			
		||||
    (
 | 
			
		||||
    echo NICK $bot
 | 
			
		||||
    echo USER $bot unused unused :Gitlab CI Notifier
 | 
			
		||||
    sleep 10
 | 
			
		||||
    echo "JOIN $channel"
 | 
			
		||||
    sleep 1
 | 
			
		||||
    desc="Flakes detected in job: $CI_JOB_URL on $CI_RUNNER_DESCRIPTION"
 | 
			
		||||
    if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then
 | 
			
		||||
        desc="$desc on branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ($CI_MERGE_REQUEST_TITLE)"
 | 
			
		||||
    elif [ -n "$CI_COMMIT_BRANCH" ]; then
 | 
			
		||||
        desc="$desc on branch $CI_COMMIT_BRANCH ($CI_COMMIT_TITLE)"
 | 
			
		||||
    fi
 | 
			
		||||
    echo "PRIVMSG $channel :$desc"
 | 
			
		||||
    for flake in $flakes; do
 | 
			
		||||
        echo "PRIVMSG $channel :$flake"
 | 
			
		||||
    done
 | 
			
		||||
    echo "PRIVMSG $channel :See $CI_JOB_URL/artifacts/browse/results/"
 | 
			
		||||
    echo "QUIT"
 | 
			
		||||
    ) | nc irc.freenode.net 6667 > /dev/null
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Generate junit results
 | 
			
		||||
generate_junit() {
 | 
			
		||||
    results=$1
 | 
			
		||||
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
 | 
			
		||||
    echo "<testsuites>"
 | 
			
		||||
    echo "<testsuite name=\"$DEQP_VER-$CI_NODE_INDEX\">"
 | 
			
		||||
    while read line; do
 | 
			
		||||
        testcase=${line%,*}
 | 
			
		||||
        result=${line#*,}
 | 
			
		||||
        # avoid counting Skip's in the # of tests:
 | 
			
		||||
        if [ "$result" = "Skip" ]; then
 | 
			
		||||
            continue;
 | 
			
		||||
        fi
 | 
			
		||||
        echo "<testcase name=\"$testcase\">"
 | 
			
		||||
        if [ "$result" != "Pass" ]; then
 | 
			
		||||
            echo "<failure type=\"$result\">"
 | 
			
		||||
            echo "$result: See $CI_JOB_URL/artifacts/results/$testcase.xml"
 | 
			
		||||
            echo "</failure>"
 | 
			
		||||
        fi
 | 
			
		||||
        echo "</testcase>"
 | 
			
		||||
    done < $results
 | 
			
		||||
    echo "</testsuite>"
 | 
			
		||||
    echo "</testsuites>"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
parse_renderer() {
 | 
			
		||||
    RENDERER=`grep -A1 TestCaseResult.\*info.renderer $RESULTS/deqp-info.qpa | grep '<Text' | sed 's|.*<Text>||g' | sed 's|</Text>||g'`
 | 
			
		||||
    VERSION=`grep -A1 TestCaseResult.\*info.version $RESULTS/deqp-info.qpa | grep '<Text' | sed 's|.*<Text>||g' | sed 's|</Text>||g'`
 | 
			
		||||
    echo "Renderer: $RENDERER"
 | 
			
		||||
    echo "Version: $VERSION "
 | 
			
		||||
 | 
			
		||||
    if ! echo $RENDERER | grep -q $DEQP_EXPECTED_RENDERER; then
 | 
			
		||||
        echo "Expected GL_RENDERER $DEQP_EXPECTED_RENDERER"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_renderer() {
 | 
			
		||||
    echo "Capturing renderer info for GLES driver sanity checks"
 | 
			
		||||
    # If you're having trouble loading your driver, uncommenting this may help
 | 
			
		||||
    # debug.
 | 
			
		||||
    # export EGL_LOG_LEVEL=debug
 | 
			
		||||
    VERSION=`echo $DEQP_VER | tr '[a-z]' '[A-Z]'`
 | 
			
		||||
    $DEQP $DEQP_OPTIONS --deqp-case=$SUITE-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa
 | 
			
		||||
    parse_renderer
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_vk_device_name() {
 | 
			
		||||
    echo "Capturing device info for VK driver sanity checks"
 | 
			
		||||
    $DEQP $DEQP_OPTIONS --deqp-case=dEQP-VK.info.device --deqp-log-filename=$RESULTS/deqp-info.qpa
 | 
			
		||||
    DEVICENAME=`grep deviceName $RESULTS/deqp-info.qpa | sed 's|deviceName: ||g'`
 | 
			
		||||
    echo "deviceName: $DEVICENAME"
 | 
			
		||||
    if [ -n "$DEQP_EXPECTED_RENDERER" -a "x$DEVICENAME" != "x$DEQP_EXPECTED_RENDERER" ]; then
 | 
			
		||||
        echo "Expected deviceName $DEQP_EXPECTED_RENDERER"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# wrapper to supress +x to avoid spamming the log
 | 
			
		||||
quiet() {
 | 
			
		||||
    set +x
 | 
			
		||||
    "$@"
 | 
			
		||||
    set -x
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
 | 
			
		||||
    # deqp is to use virpipe, and virgl_test_server llvmpipe
 | 
			
		||||
    export GALLIUM_DRIVER="$GALLIUM_DRIVER"
 | 
			
		||||
 | 
			
		||||
    VTEST_ARGS="--use-egl-surfaceless"
 | 
			
		||||
    if [ "$VIRGL_HOST_API" = "GLES" ]; then
 | 
			
		||||
        VTEST_ARGS="$VTEST_ARGS --use-gles"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    GALLIUM_DRIVER=llvmpipe \
 | 
			
		||||
    GALLIVM_PERF="nopt,no_filter_hacks" \
 | 
			
		||||
    virgl_test_server $VTEST_ARGS >$RESULTS/vtest-log.txt 2>&1 &
 | 
			
		||||
 | 
			
		||||
    sleep 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ $DEQP_VER = vk ]; then
 | 
			
		||||
    quiet check_vk_device_name
 | 
			
		||||
else
 | 
			
		||||
    quiet check_renderer
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
RESULTS_CSV=$RESULTS/results.csv
 | 
			
		||||
FAILURES_CSV=$RESULTS/failures.csv
 | 
			
		||||
 | 
			
		||||
run_cts $DEQP /tmp/case-list.txt $RESULTS_CSV
 | 
			
		||||
DEQP_EXITCODE=$?
 | 
			
		||||
 | 
			
		||||
echo "System load: $(cut -d' ' -f1-3 < /proc/loadavg)"
 | 
			
		||||
echo "# of CPU cores: $(cat /proc/cpuinfo | grep processor | wc -l)"
 | 
			
		||||
 | 
			
		||||
# Remove the shader cache, no need to include in the artifacts.
 | 
			
		||||
find $RESULTS -name \*.shader_cache | xargs rm -f
 | 
			
		||||
 | 
			
		||||
# junit is disabled, because it overloads gitlab.freedesktop.org to parse it.
 | 
			
		||||
# quiet generate_junit $RESULTS_CSV > $RESULTS/results.xml
 | 
			
		||||
 | 
			
		||||
# Turn up to the first 50 individual test QPA files from failures or flakes into
 | 
			
		||||
# XML results you can view from the browser.
 | 
			
		||||
qpas=`find $RESULTS -name \*.qpa -a ! -name deqp-info.qpa`
 | 
			
		||||
if [ -n "$qpas" ]; then
 | 
			
		||||
    shard_qpas=`echo "$qpas" | grep dEQP- | head -n 50`
 | 
			
		||||
    for qpa in $shard_qpas; do
 | 
			
		||||
        xml=`echo $qpa | sed 's|\.qpa|.xml|'`
 | 
			
		||||
        /deqp/executor/testlog-to-xml $qpa $xml
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    cp /deqp/testlog.css "$RESULTS/"
 | 
			
		||||
    cp /deqp/testlog.xsl "$RESULTS/"
 | 
			
		||||
 | 
			
		||||
    # Remove all the QPA files (extracted or not) now that we have the XML we want.
 | 
			
		||||
    echo $qpas | xargs rm -f
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Report the flakes to the IRC channel for monitoring (if configured):
 | 
			
		||||
quiet report_flakes $RESULTS_CSV
 | 
			
		||||
 | 
			
		||||
exit $DEQP_EXITCODE
 | 
			
		||||
@@ -1,802 +0,0 @@
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z,Fail
 | 
			
		||||
dEQP-GLES2.functional.polygon_offset.default_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-GLES2.functional.rasterization.limits.points,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.point.wide_point_clip,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z,Fail
 | 
			
		||||
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z,Fail
 | 
			
		||||
dEQP-GLES3.functional.draw.random.124,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_color,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r11f_g11f_b10f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rg16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rg8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb10_a2,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb565,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb5_a1,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba4,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.srgb8_alpha8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth24_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth32f_stencil8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component16,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component24,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component32f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r11f_g11f_b10f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg16f,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb10_a2,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb565,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb5_a1,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba4,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.srgb8_alpha8,Fail
 | 
			
		||||
dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_alpha_to_coverage,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage_inverted,Fail
 | 
			
		||||
dEQP-GLES3.functional.multisample.fbo_max_samples.sample_coverage_invert,Fail
 | 
			
		||||
dEQP-GLES3.functional.negative_api.buffer.blit_framebuffer_multisample,Fail
 | 
			
		||||
dEQP-GLES3.functional.negative_api.buffer.read_pixels_fbo_format_mismatch,Fail
 | 
			
		||||
dEQP-GLES3.functional.polygon_offset.default_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES3.functional.polygon_offset.fixed16_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES3.functional.polygon_offset.fixed24_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES3.functional.polygon_offset.float32_displacement_with_units,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_highp,Fail
 | 
			
		||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_mediump,Fail
 | 
			
		||||
dEQP-GLES3.functional.state_query.integers.max_samples_getfloat,Fail
 | 
			
		||||
dEQP-GLES3.functional.state_query.integers.max_samples_getinteger64,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_nearest_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_linear_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_nearest_linear_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_clamp,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_divisible,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_not_divisible,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_divisible,Fail
 | 
			
		||||
dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_not_divisible,Fail
 | 
			
		||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads1,Fail
 | 
			
		||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads256,Fail
 | 
			
		||||
dEQP-GLES31.functional.debug.error_filters.case_29,Fail
 | 
			
		||||
dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer.read_pixels_fbo_format_mismatch,Fail
 | 
			
		||||
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer_multisample,Fail
 | 
			
		||||
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_fbo_format_mismatch,Fail
 | 
			
		||||
dEQP-GLES31.functional.debug.negative_coverage.log.buffer.read_pixels_fbo_format_mismatch,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_base_vertex.draw_elements_instanced_base_vertex.line_loop.instanced_attributes,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.0,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.1,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.10,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.11,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.12,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.14,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.16,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.19,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.2,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.3,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.4,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.5,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.6,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.7,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.8,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.9,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.0,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.1,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.14,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.15,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.16,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.17,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.19,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.2,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.4,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.5,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.7,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.9,Fail
 | 
			
		||||
dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip.multiple_attributes,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.17x512ms4_default_16x16ms2,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.1x1ms0_default_2048x2048ms4,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.2048x2048ms4_default_1x1ms0,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms0_default_512x512ms2,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms2_default_128x512ms0,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.multisample.samples2,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.multisample.samples3,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.multisample.samples4,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.random.1,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.random.11,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.random.14,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.random.15,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.random.4,Fail
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.random.9,Fail
 | 
			
		||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_amplification,Fail
 | 
			
		||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_instanced,Fail
 | 
			
		||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_no_amplification,Fail
 | 
			
		||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_no_geometry,Fail
 | 
			
		||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_partial_primitives,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil_fbo,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_depth,Fail
 | 
			
		||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_depth_fbo,Fail
 | 
			
		||||
dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.dynamically_uniform_geometry,Crash
 | 
			
		||||
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getfloat,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger64,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_float,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_integer,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_int,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_uint,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_float,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_integer,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_pure_int,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_pure_uint,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_float,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_integer,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_pure_int,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_pure_uint,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_float,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_integer,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_pure_int,Fail
 | 
			
		||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_pure_uint,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.linear_size_npot,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.linear_size_pot,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_clamp,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_repeat_clamp,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_repeat_clamp,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_clamp_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_mirror_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_repeat_clamp,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_clamp,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_nearest_repeat_mirror,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb565_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb565_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb9_e5_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb9_e5_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba4_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba4_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_snorm_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_snorm_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.sr8_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.srgb8_alpha8_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.srgb8_alpha8_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.63x63x18_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.64x64x12_nearest_mipmap_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.64x64x12_nearest_mipmap_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.8x8x6_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.alpha_zero_one_red,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.blue_alpha_zero_one,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.green_blue_alpha_zero,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.one_red_green_blue,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.red_green_blue_alpha,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.zero_one_red_green,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.green_blue_alpha_zero,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.red_green_blue_alpha,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.red_green_blue_alpha,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.alpha_zero_one_red,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.blue_alpha_zero_one,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.green_blue_alpha_zero,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.one_red_green_blue,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.red_green_blue_alpha,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.zero_one_red_green,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.green_blue_alpha_zero,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.red_green_blue_alpha,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.green_blue_alpha_zero,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.red_green_blue_alpha,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_alpha_to_coverage,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage_and_alpha_to_coverage,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_non_effective_bits,Fail
 | 
			
		||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_only,Fail
 | 
			
		||||
KHR-GL33.CommonBugs.CommonBug_ParenthesisInLayoutQualifierIntegerValue,Fail
 | 
			
		||||
KHR-GL33.clip_distance.functional,Fail
 | 
			
		||||
KHR-GL33.cull_distance.functional,Fail
 | 
			
		||||
KHR-GL33.pipeline_statistics_query_tests_ARB.functional_compute_shader_invocations,Fail
 | 
			
		||||
KHR-GL33.pipeline_statistics_query_tests_ARB.functional_fragment_shader_invocations,Fail
 | 
			
		||||
KHR-GL33.pipeline_statistics_query_tests_ARB.functional_primitives_vertices_submitted_and_clipping_input_output_primitives,Fail
 | 
			
		||||
KHR-GL33.texture_size_promotion.functional,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.capture_geometry_interleaved_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.capture_geometry_separate_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.capture_vertex_interleaved_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.capture_vertex_separate_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.discard_vertex_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.draw_xfb_instanced_test,Crash
 | 
			
		||||
KHR-GL33.transform_feedback.draw_xfb_stream_instanced_test,Crash
 | 
			
		||||
KHR-GL33.transform_feedback.draw_xfb_stream_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.query_geometry_interleaved_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.query_geometry_separate_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.query_vertex_interleaved_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback.query_vertex_separate_test,Fail
 | 
			
		||||
KHR-GL33.transform_feedback_overflow_query_ARB.advanced-single-stream-interleaved-attribs,Fail
 | 
			
		||||
KHR-GL33.transform_feedback_overflow_query_ARB.advanced-single-stream-separate-attribs,Fail
 | 
			
		||||
KHR-GL33.transform_feedback_overflow_query_ARB.basic-single-stream-interleaved-attribs,Fail
 | 
			
		||||
KHR-GL33.transform_feedback_overflow_query_ARB.basic-single-stream-separate-attribs,Fail
 | 
			
		||||
KHR-GL33.transform_feedback_overflow_query_ARB.multiple-streams-multiple-buffers-per-stream,Fail
 | 
			
		||||
KHR-GL33.transform_feedback_overflow_query_ARB.multiple-streams-one-buffer-per-stream,Fail
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.geometry.isampler2darray
 | 
			
		||||
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.geometry.isampler3d
 | 
			
		||||
@@ -1,27 +0,0 @@
 | 
			
		||||
# Note: skips lists for CI are just a list of lines that, when
 | 
			
		||||
# non-zero-length and not starting with '#', will regex match to
 | 
			
		||||
# delete lines from the test list.  Be careful.
 | 
			
		||||
 | 
			
		||||
# Skip the perf/stress tests to keep runtime manageable
 | 
			
		||||
dEQP-GLES[0-9]*.performance.*
 | 
			
		||||
dEQP-GLES[0-9]*.stress.*
 | 
			
		||||
 | 
			
		||||
# These are really slow on tiling architectures (including llvmpipe).
 | 
			
		||||
dEQP-GLES[0-9]*.functional.flush_finish.*
 | 
			
		||||
 | 
			
		||||
# Random failures
 | 
			
		||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_color_mask_buffer_color_mask
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.maximums.all
 | 
			
		||||
dEQP-GLES31.functional.fbo.no_attachments.maximums.size
 | 
			
		||||
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.points
 | 
			
		||||
dEQP-GLES31.functional.shaders.builtin_functions.*geometry
 | 
			
		||||
dEQP-GLES31.functional.shaders.linkage.es31.geometry.uniform.types.uvec4
 | 
			
		||||
dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.types.uvec4
 | 
			
		||||
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.geometry.usampler3d
 | 
			
		||||
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.geometry.sampler2darray
 | 
			
		||||
dEQP-GLES31.functional.primitive_bounding_box.wide_points.global_state.vertex_geometry_fragment.fbo_bbox_larger
 | 
			
		||||
 | 
			
		||||
# This one is really slow and can time out (~56 seconds locally)
 | 
			
		||||
KHR-GL33.texture_swizzle.smoke
 | 
			
		||||
# Another slow one post NIR transition
 | 
			
		||||
KHR-GL33.texture_swizzle.functional
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,2 +0,0 @@
 | 
			
		||||
# Sometimes crashes, e.g. https://gitlab.freedesktop.org/kusma/mesa/-/jobs/4109419
 | 
			
		||||
dEQP-GLES31.functional.compute.basic.empty
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user