diff options
author | android-autoroll <android-autoroll@skia-public.iam.gserviceaccount.com> | 2022-04-20 20:37:31 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-20 20:37:31 +0000 |
commit | 42f1b7776ab7481c63f97833a027bef9a1e0d168 (patch) | |
tree | 1c1544f9314c2048b9ee4da5b154694ef8fc1982 | |
parent | bbe49d65a9ad23f60ccabe434726e0504e0f580b (diff) | |
parent | 8656d6e5948f74aee55264bf79dbf342af175244 (diff) | |
download | swiftshader-42f1b7776ab7481c63f97833a027bef9a1e0d168.tar.gz |
Roll SwiftShader from ea5f37f39193 to 88fe9ce05ec8 (2 revisions) am: 26228c7e58 am: 16be78422d am: 817c71276f am: 57a72b7649 am: 8656d6e594
Original change: https://android-review.googlesource.com/c/platform/external/swiftshader/+/2069369
Change-Id: Iac068531ea9553035969e059bef7ab8fc13f328c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | src/Reactor/LLVMJIT.cpp | 50 | ||||
-rw-r--r-- | src/Reactor/LLVMReactor.cpp | 69 | ||||
-rw-r--r-- | src/Reactor/LLVMReactor.hpp | 2 | ||||
-rw-r--r-- | tests/regres/deqp.json | 2 | ||||
-rw-r--r-- | tests/regres/testlists/vk-default/api.txt | 1 | ||||
-rw-r--r-- | tests/regres/testlists/vk-default/graphicsfuzz.txt | 15 | ||||
-rw-r--r-- | tests/regres/testlists/vk-default/ray-query.txt | 72 |
7 files changed, 140 insertions, 71 deletions
diff --git a/src/Reactor/LLVMJIT.cpp b/src/Reactor/LLVMJIT.cpp index a217b92a2..959082032 100644 --- a/src/Reactor/LLVMJIT.cpp +++ b/src/Reactor/LLVMJIT.cpp @@ -31,6 +31,7 @@ __pragma(warning(push)) #include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h" #include "llvm/ExecutionEngine/SectionMemoryManager.h" #include "llvm/IR/DiagnosticInfo.h" +#include "llvm/IR/Verifier.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Host.h" #include "llvm/Support/TargetSelect.h" @@ -52,7 +53,9 @@ __pragma(warning(push)) # include "llvm/Transforms/Scalar/SimplifyCFG.h" #else // Legacy pass manager # include "llvm/IR/LegacyPassManager.h" -# include "llvm/Transforms/Scalar.h" +# include "llvm/Pass.h" +# include "llvm/Transforms/Coroutines.h" +# include "llvm/Transforms/IPO.h" #endif #ifdef _MSC_VER @@ -854,8 +857,46 @@ JITBuilder::JITBuilder(const rr::Config &config) } } -void JITBuilder::optimize(const rr::Config &cfg) +void JITBuilder::runPasses(const rr::Config &cfg) { + if(coroutine.id) // Run manadory coroutine transforms. + { +#if LLVM_VERSION_MAJOR >= 13 // New pass manager + llvm::PassBuilder pb; + llvm::LoopAnalysisManager lam; + llvm::FunctionAnalysisManager fam; + llvm::CGSCCAnalysisManager cgam; + llvm::ModuleAnalysisManager mam; + + pb.registerModuleAnalyses(mam); + pb.registerCGSCCAnalyses(cgam); + pb.registerFunctionAnalyses(fam); + pb.registerLoopAnalyses(lam); + pb.crossRegisterProxies(lam, fam, cgam, mam); + + llvm::ModulePassManager mpm = + pb.buildO0DefaultPipeline(llvm::OptimizationLevel::O0); + mpm.run(*module, mam); +#else // Legacy pass manager + llvm::legacy::PassManager pm; + + pm.add(llvm::createCoroEarlyLegacyPass()); + pm.add(llvm::createCoroSplitLegacyPass()); + pm.add(llvm::createCoroElideLegacyPass()); + pm.add(llvm::createBarrierNoopPass()); + pm.add(llvm::createCoroCleanupLegacyPass()); + + pm.run(*module); +#endif + } + +#if defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG) + if(llvm::verifyModule(*module, &llvm::errs())) + { + llvm::report_fatal_error("Invalid LLVM module"); + } +#endif + #ifdef ENABLE_RR_DEBUG_INFO if(debugInfo != nullptr) { @@ -892,8 +933,9 @@ void JITBuilder::optimize(const rr::Config &cfg) { case rr::Optimization::Pass::Disabled: break; case rr::Optimization::Pass::CFGSimplification: fpm.addPass(llvm::SimplifyCFGPass()); break; - case rr::Optimization::Pass::LICM: fpm.addPass(llvm::createFunctionToLoopPassAdaptor( - llvm::LICMPass(llvm::SetLicmMssaOptCap, llvm::SetLicmMssaNoAccForPromotionCap, true))); + case rr::Optimization::Pass::LICM: + fpm.addPass(llvm::createFunctionToLoopPassAdaptor( + llvm::LICMPass(llvm::SetLicmMssaOptCap, llvm::SetLicmMssaNoAccForPromotionCap, true))); break; case rr::Optimization::Pass::AggressiveDCE: fpm.addPass(llvm::ADCEPass()); break; case rr::Optimization::Pass::GVN: fpm.addPass(llvm::GVNPass()); break; diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp index 33904af54..c958c8b2c 100644 --- a/src/Reactor/LLVMReactor.cpp +++ b/src/Reactor/LLVMReactor.cpp @@ -23,23 +23,9 @@ #include "llvm/IR/Intrinsics.h" #include "llvm/IR/IntrinsicsX86.h" -#include "llvm/IR/Verifier.h" -#include "llvm/Pass.h" #include "llvm/Support/Alignment.h" +#include "llvm/Support/Error.h" #include "llvm/Support/ManagedStatic.h" -#include "llvm/Transforms/Coroutines.h" -#include "llvm/Transforms/IPO.h" -#include "llvm/Transforms/Scalar.h" - -#if LLVM_VERSION_MAJOR >= 13 // New pass manager -# include "llvm/Passes/PassBuilder.h" -#else // Legacy pass manager -# include "llvm/IR/LegacyPassManager.h" -# include "llvm/Pass.h" -# include "llvm/Transforms/Coroutines.h" -# include "llvm/Transforms/IPO.h" -# include "llvm/Transforms/Scalar.h" -#endif #include <fstream> #include <iostream> @@ -622,14 +608,7 @@ std::shared_ptr<Routine> Nucleus::acquireRoutine(const char *name, const Config: jit->module->print(file, 0); } -#if defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG) - if(llvm::verifyModule(*jit->module, &llvm::errs())) - { - llvm::report_fatal_error("Invalid LLVM module"); - } -#endif // defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG) - - jit->optimize(cfg); + jit->runPasses(cfg); if(false) { @@ -4364,8 +4343,7 @@ void Nucleus::yield(Value *val) std::shared_ptr<Routine> Nucleus::acquireCoroutine(const char *name, const Config::Edit *cfgEdit /* = nullptr */) { - bool isCoroutine = jit->coroutine.id != nullptr; - if(isCoroutine) + if(jit->coroutine.id) { jit->builder->CreateBr(jit->coroutine.endBlock); } @@ -4397,51 +4375,12 @@ std::shared_ptr<Routine> Nucleus::acquireCoroutine(const char *name, const Confi jit->module->print(file, 0); } - if(isCoroutine) - { -#if LLVM_VERSION_MAJOR >= 13 // New pass manager - llvm::PassBuilder pb; - llvm::LoopAnalysisManager lam; - llvm::FunctionAnalysisManager fam; - llvm::CGSCCAnalysisManager cgam; - llvm::ModuleAnalysisManager mam; - - pb.registerModuleAnalyses(mam); - pb.registerCGSCCAnalyses(cgam); - pb.registerFunctionAnalyses(fam); - pb.registerLoopAnalyses(lam); - pb.crossRegisterProxies(lam, fam, cgam, mam); - - llvm::ModulePassManager mpm = - pb.buildO0DefaultPipeline(llvm::OptimizationLevel::O0); - mpm.run(*jit->module, mam); -#else - // Run manadory coroutine transforms. - llvm::legacy::PassManager pm; - - pm.add(llvm::createCoroEarlyLegacyPass()); - pm.add(llvm::createCoroSplitLegacyPass()); - pm.add(llvm::createCoroElideLegacyPass()); - pm.add(llvm::createBarrierNoopPass()); - pm.add(llvm::createCoroCleanupLegacyPass()); - - pm.run(*jit->module); -#endif - } - -#if defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG) - if(llvm::verifyModule(*jit->module, &llvm::errs())) - { - llvm::report_fatal_error("Invalid LLVM module"); - } -#endif // defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG) - Config cfg = jit->config; if(cfgEdit) { cfg = cfgEdit->apply(jit->config); } - jit->optimize(cfg); + jit->runPasses(cfg); if(false) { diff --git a/src/Reactor/LLVMReactor.hpp b/src/Reactor/LLVMReactor.hpp index 54a44c3ea..dad54a733 100644 --- a/src/Reactor/LLVMReactor.hpp +++ b/src/Reactor/LLVMReactor.hpp @@ -90,7 +90,7 @@ class JITBuilder public: JITBuilder(const rr::Config &config); - void optimize(const rr::Config &cfg); + void runPasses(const rr::Config &cfg); std::shared_ptr<rr::Routine> acquireRoutine(const char *name, llvm::Function **funcs, size_t count, const rr::Config &cfg); diff --git a/tests/regres/deqp.json b/tests/regres/deqp.json index 227d3272f..5e187f9c8 100644 --- a/tests/regres/deqp.json +++ b/tests/regres/deqp.json @@ -1,7 +1,7 @@ { "remote": "https://github.com/KhronosGroup/VK-GL-CTS.git", "branch": "", - "sha": "20a474e64382e8f5144122b30b3d7cab182421b8", + "sha": "a22069b4e3b7f68cc0c161e8c93b1308bff0925f", "patches": [ "tests/regres/deqp-patches/deqp-x11.patch" ] diff --git a/tests/regres/testlists/vk-default/api.txt b/tests/regres/testlists/vk-default/api.txt index 03f82dc2c..b80935e2d 100644 --- a/tests/regres/testlists/vk-default/api.txt +++ b/tests/regres/testlists/vk-default/api.txt @@ -1450,6 +1450,7 @@ dEQP-VK.api.info.vulkan1p2_limits_validation.fragment_density_map dEQP-VK.api.info.vulkan1p2_limits_validation.nv_ray_tracing dEQP-VK.api.info.vulkan1p2_limits_validation.timeline_semaphore dEQP-VK.api.info.vulkan1p2_limits_validation.ext_line_rasterization +dEQP-VK.api.info.vulkan1p2_limits_validation.robustness2 dEQP-VK.api.info.vulkan1p3_limits_validation.khr_maintenance4 dEQP-VK.api.info.vulkan1p3_limits_validation.max_inline_uniform_total_size dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8 diff --git a/tests/regres/testlists/vk-default/graphicsfuzz.txt b/tests/regres/testlists/vk-default/graphicsfuzz.txt index c887501ce..20b789703 100644 --- a/tests/regres/testlists/vk-default/graphicsfuzz.txt +++ b/tests/regres/testlists/vk-default/graphicsfuzz.txt @@ -186,18 +186,22 @@ dEQP-VK.graphicsfuzz.cov-function-call-twice-clamp-global-variable dEQP-VK.graphicsfuzz.cov-function-divide-argument-until-lt-one dEQP-VK.graphicsfuzz.cov-function-find-lsb-ivec2-one dEQP-VK.graphicsfuzz.cov-function-fragcoord-condition-always-return +dEQP-VK.graphicsfuzz.cov-function-global-loop-counter-sample-texture +dEQP-VK.graphicsfuzz.cov-function-index-array-redundant-clamps dEQP-VK.graphicsfuzz.cov-function-infinite-loop-always-return dEQP-VK.graphicsfuzz.cov-function-infinite-loop-return-identical-condition dEQP-VK.graphicsfuzz.cov-function-large-array-max-clamp dEQP-VK.graphicsfuzz.cov-function-large-loop-break-argument-lte-global-loop-bound dEQP-VK.graphicsfuzz.cov-function-loop-check-determinant-zero-return-vector dEQP-VK.graphicsfuzz.cov-function-loop-clamp-no-effect +dEQP-VK.graphicsfuzz.cov-function-loop-condition-constant-array-always-false dEQP-VK.graphicsfuzz.cov-function-loop-condition-uniform-shift-right dEQP-VK.graphicsfuzz.cov-function-loop-condition-variable-less-than-min-itself dEQP-VK.graphicsfuzz.cov-function-loop-copy-array-elements-based-on-arguments dEQP-VK.graphicsfuzz.cov-function-loop-modify-ivec-components-infinite-loop-never-executed dEQP-VK.graphicsfuzz.cov-function-loop-same-conditions-multiple-times-struct-array dEQP-VK.graphicsfuzz.cov-function-loop-switch-increment-array-element-return +dEQP-VK.graphicsfuzz.cov-function-max-all-ones-select-always-true dEQP-VK.graphicsfuzz.cov-function-min-integer-large-shift-unused dEQP-VK.graphicsfuzz.cov-function-loop-variable-multiplied-unused dEQP-VK.graphicsfuzz.cov-function-loops-vector-mul-matrix-never-executed @@ -208,6 +212,7 @@ dEQP-VK.graphicsfuzz.cov-function-nested-loops-limit-uniform-xor-uniform dEQP-VK.graphicsfuzz.cov-function-set-struct-field-zero-loop-reset-first-element dEQP-VK.graphicsfuzz.cov-function-parameter-zero-divided-by-uniform dEQP-VK.graphicsfuzz.cov-function-round-unpack-half-2x16 +dEQP-VK.graphicsfuzz.cov-function-struct-int-array-loop-check-element dEQP-VK.graphicsfuzz.cov-function-switch-case-constant-clamp-transpose-identity-matrices dEQP-VK.graphicsfuzz.cov-function-trivial-switch-case dEQP-VK.graphicsfuzz.cov-function-two-loops-limit-using-arguments-array-element-copies @@ -322,9 +327,11 @@ dEQP-VK.graphicsfuzz.cov-loop-array-index-decrement-never-negative dEQP-VK.graphicsfuzz.cov-loop-array-struct-field-index-array-with-uniforms dEQP-VK.graphicsfuzz.cov-loop-break-after-first-iteration-set-array-element dEQP-VK.graphicsfuzz.cov-loop-break-floor-nan-never-executed +dEQP-VK.graphicsfuzz.cov-loop-break-fragcoord-x-empty-loop dEQP-VK.graphicsfuzz.cov-loop-clamp-to-one-empty-condition dEQP-VK.graphicsfuzz.cov-loop-condition-bitfield-extract-set-array-elements dEQP-VK.graphicsfuzz.cov-loop-condition-clamp-vec-of-ones +dEQP-VK.graphicsfuzz.cov-loop-condition-constant-struct-field-data dEQP-VK.graphicsfuzz.cov-loop-condition-divide-by-uniform-always-false dEQP-VK.graphicsfuzz.cov-loop-condition-double-negate dEQP-VK.graphicsfuzz.cov-loop-condition-filter-some-iterations-never-discard @@ -343,6 +350,7 @@ dEQP-VK.graphicsfuzz.cov-loop-findmsb-findlsb dEQP-VK.graphicsfuzz.cov-loop-fragcoord-identical-condition dEQP-VK.graphicsfuzz.cov-loop-global-counter-break-set-ivec-elements dEQP-VK.graphicsfuzz.cov-loop-function-call-negative-argument +dEQP-VK.graphicsfuzz.cov-loop-global-counter-increment-iterator-select-uniform dEQP-VK.graphicsfuzz.cov-loop-increase-iterator-condition-uniform-copy-array-elements dEQP-VK.graphicsfuzz.cov-loop-increment-array-elements-clamp-index dEQP-VK.graphicsfuzz.cov-loop-increment-array-index-array-usuborrow-feedback @@ -360,6 +368,7 @@ dEQP-VK.graphicsfuzz.cov-loop-limiter-min-findlsb dEQP-VK.graphicsfuzz.cov-loop-limiter-uniform-bitwise-and-one-always-break dEQP-VK.graphicsfuzz.cov-loop-logical-xor dEQP-VK.graphicsfuzz.cov-loop-multiple-iterator-variables-copy-array-elements +dEQP-VK.graphicsfuzz.cov-loop-never-iterated-constant-vector-condition dEQP-VK.graphicsfuzz.cov-loop-read-array-index-from-array-data dEQP-VK.graphicsfuzz.cov-loop-max-divide-integer-by-ten dEQP-VK.graphicsfuzz.cov-loop-overwrite-sample-texture-as-color-output @@ -368,6 +377,7 @@ dEQP-VK.graphicsfuzz.cov-loop-replace-output-color-restore-original dEQP-VK.graphicsfuzz.cov-loop-returns-behind-true-and-false dEQP-VK.graphicsfuzz.cov-loop-sampled-texel-integer-counter dEQP-VK.graphicsfuzz.cov-loop-set-vector-components-pow-two +dEQP-VK.graphicsfuzz.cov-loop-start-fragcoord-while-iterates-once dEQP-VK.graphicsfuzz.cov-loop-start-from-one-switch-case-invalid-color-never-executed dEQP-VK.graphicsfuzz.cov-loop-start-from-one-switch-case-never-executed dEQP-VK.graphicsfuzz.cov-loop-struct-array-field-set-value-self-dependency @@ -404,6 +414,7 @@ dEQP-VK.graphicsfuzz.cov-modf-integer-to-private dEQP-VK.graphicsfuzz.cov-modulo-zero-never-executed dEQP-VK.graphicsfuzz.cov-multiple-fragcoord-conditions-false-never-return-sample-texture dEQP-VK.graphicsfuzz.cov-multiple-fragcoord-conditions-never-return-color-uninitialized +dEQP-VK.graphicsfuzz.cov-multiple-functions-global-never-change dEQP-VK.graphicsfuzz.cov-multiple-loops-same-condition-always-false-global-loop-counter dEQP-VK.graphicsfuzz.cov-multiple-one-iteration-loops-global-counter-write-matrices dEQP-VK.graphicsfuzz.cov-negative-integer-bitwise-or-uniform-increment-loop @@ -411,6 +422,7 @@ dEQP-VK.graphicsfuzz.cov-nested-functions-accumulate-global-matrix dEQP-VK.graphicsfuzz.cov-nested-functions-compare-fragcood-length-zero-vector dEQP-VK.graphicsfuzz.cov-nested-functions-loop-assign-global-array-element dEQP-VK.graphicsfuzz.cov-nested-functions-struct-arrays-vector-lengths +dEQP-VK.graphicsfuzz.cov-nested-functions-vec4-array-element-argument dEQP-VK.graphicsfuzz.cov-nested-loop-continue-inner-copy-array-element dEQP-VK.graphicsfuzz.cov-nested-loop-decrease-vector-components dEQP-VK.graphicsfuzz.cov-nested-loop-initializer-value-increased-inside @@ -436,6 +448,7 @@ dEQP-VK.graphicsfuzz.cov-nested-loops-global-loop-counter-fragcoord-negative-alw dEQP-VK.graphicsfuzz.cov-nested-loops-global-loop-counter-index-array-vec2 dEQP-VK.graphicsfuzz.cov-nested-loops-global-loop-counter-iterator-dependency dEQP-VK.graphicsfuzz.cov-nested-loops-global-loop-counter-output-color-from-backup +dEQP-VK.graphicsfuzz.cov-nested-loops-global-loop-counter-reached-second-iteration dEQP-VK.graphicsfuzz.cov-nested-loops-identical-iterator-names-multiply-divide dEQP-VK.graphicsfuzz.cov-nested-loops-identical-iterators-compare-same-array-elements dEQP-VK.graphicsfuzz.cov-nested-loops-increase-integer-dot-product @@ -530,8 +543,10 @@ dEQP-VK.graphicsfuzz.cov-transpose-multiply dEQP-VK.graphicsfuzz.cov-trunc-fract-always-zero dEQP-VK.graphicsfuzz.cov-two-functions-loops-copy-elements-infinite-loops-never-executed dEQP-VK.graphicsfuzz.cov-two-functions-modify-struct-array-element-return-from-loop +dEQP-VK.graphicsfuzz.cov-two-loops-global-loop-counter-clamp-ivec-elements-index-array dEQP-VK.graphicsfuzz.cov-two-loops-global-loop-counter-shift-right-zero-increment-array-element dEQP-VK.graphicsfuzz.cov-two-loops-increment-integer-global-counter-break-square-threshold +dEQP-VK.graphicsfuzz.cov-two-loops-never-iterated dEQP-VK.graphicsfuzz.cov-two-nested-loops-switch-case-matrix-array-increment dEQP-VK.graphicsfuzz.cov-types-return-in-main-never-hit dEQP-VK.graphicsfuzz.cov-uadd-carry-bit-count-index-array diff --git a/tests/regres/testlists/vk-default/ray-query.txt b/tests/regres/testlists/vk-default/ray-query.txt index 2bb070f5a..97237ad94 100644 --- a/tests/regres/testlists/vk-default/ray-query.txt +++ b/tests/regres/testlists/vk-default/ray-query.txt @@ -23426,3 +23426,75 @@ dEQP-VK.ray_query.non_uniform_args.miss_cause_3 dEQP-VK.ray_query.non_uniform_args.miss_cause_4 dEQP-VK.ray_query.non_uniform_args.miss_cause_5 dEQP-VK.ray_query.non_uniform_args.miss_cause_6 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_cubic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_cubic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_cubic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.regular.linear_cubic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.regular.cubic_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.regular.cubic_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.regular.cubic_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.regular.cubic_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_cubic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_cubic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_cubic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.linear_cubic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.cubic_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.cubic_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.cubic_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.coarse.cubic_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_cubic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_cubic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_cubic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.fine.linear_cubic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.fine.cubic_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.fine.cubic_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.gpu.fine.cubic_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.gpu.fine.cubic_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_cubic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_cubic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_cubic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.regular.linear_cubic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.regular.cubic_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.regular.cubic_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.regular.cubic_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.regular.cubic_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_cubic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_cubic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_cubic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.linear_cubic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.cubic_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.cubic_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.cubic_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.coarse.cubic_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_quadratic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_cubic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_cubic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_cubic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.fine.linear_cubic.32x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.fine.cubic_quadratic.64x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.fine.cubic_quadratic.64x64.64x32 +dEQP-VK.ray_query.helper_invocations.cpu.fine.cubic_quadratic.32x64.64x64 +dEQP-VK.ray_query.helper_invocations.cpu.fine.cubic_quadratic.32x64.64x32 |