diff --git a/sycl/unittests/SYCL2020/SpecConstDefaultValues.cpp b/sycl/unittests/SYCL2020/SpecConstDefaultValues.cpp index 83c18e1ec72b1..f7eb5315d9f39 100644 --- a/sycl/unittests/SYCL2020/SpecConstDefaultValues.cpp +++ b/sycl/unittests/SYCL2020/SpecConstDefaultValues.cpp @@ -82,7 +82,7 @@ static sycl::unittest::PiImage generateImageWithSpecConsts() { } sycl::unittest::PiImage Img = generateImageWithSpecConsts(); -sycl::unittest::PiImageArray ImgArray{Img}; +sycl::unittest::PiImageArray<1> ImgArray{&Img}; TEST(SpecConstDefaultValues, DISABLED_DefaultValuesAreSet) { sycl::platform Plt{sycl::default_selector()}; diff --git a/sycl/unittests/helpers/PiImage.hpp b/sycl/unittests/helpers/PiImage.hpp index 85c7225f6f2fb..86d7facab4893 100644 --- a/sycl/unittests/helpers/PiImage.hpp +++ b/sycl/unittests/helpers/PiImage.hpp @@ -233,46 +233,29 @@ class PiImage { /// Convenience wrapper around pi_device_binaries_struct, that manages mock /// device images' lifecycle. -class PiImageArray { +template class PiImageArray { public: - /// Constructs an array of device images from a single image and registers - /// it with SYCL runtime. - PiImageArray(PiImage Image) { - MImages.push_back(std::move(Image)); - convertImages(); - MAllBinaries = pi_device_binaries_struct{ - PI_DEVICE_BINARIES_VERSION, - 1, // num binaries - MNativeImages.data(), - nullptr, // not used, for compatibility with OpenMP - nullptr // not used, for compatibility with OpenMP - }; - __sycl_register_lib(&MAllBinaries); - } + static constexpr size_t NumberOfImages = __NumberOfImages; + + PiImageArray(const PiImage *Imgs) { + for (size_t Idx = 0; Idx < NumberOfImages; ++Idx) + MNativeImages[Idx] = Imgs[Idx].convertToNativeType(); - /// Constructs an array of device images and registers it with SYCL runtime. - PiImageArray(std::vector Images) : MImages(std::move(Images)) { - convertImages(); MAllBinaries = pi_device_binaries_struct{ PI_DEVICE_BINARIES_VERSION, - static_cast(MNativeImages.size()), // num binaries - MNativeImages.data(), - nullptr, // not used, for compatibility with OpenMP - nullptr // not used, for compatibility with OpenMP + NumberOfImages, + MNativeImages, + nullptr, // not used, put here for compatibility with OpenMP + nullptr, // not used, put here for compatibility with OpenMP }; + __sycl_register_lib(&MAllBinaries); } ~PiImageArray() { __sycl_unregister_lib(&MAllBinaries); } private: - void convertImages() { - std::transform( - MImages.begin(), MImages.end(), std::back_inserter(MNativeImages), - [](const PiImage &Img) { return Img.convertToNativeType(); }); - } - std::vector MImages; - std::vector MNativeImages; + pi_device_binary_struct MNativeImages[NumberOfImages]; pi_device_binaries_struct MAllBinaries; }; diff --git a/sycl/unittests/misc/KernelBuildOptions.cpp b/sycl/unittests/misc/KernelBuildOptions.cpp index f97c599deeaa0..eeaf9b827226e 100644 --- a/sycl/unittests/misc/KernelBuildOptions.cpp +++ b/sycl/unittests/misc/KernelBuildOptions.cpp @@ -208,7 +208,7 @@ static sycl::unittest::PiImage generateDefaultImage() { } sycl::unittest::PiImage Img = generateDefaultImage(); -sycl::unittest::PiImageArray ImgArray{Img}; +sycl::unittest::PiImageArray<1> ImgArray{&Img}; TEST(KernelBuildOptions, KernelBundleBasic) { sycl::platform Plt{sycl::default_selector()}; diff --git a/sycl/unittests/program_manager/itt_annotations.cpp b/sycl/unittests/program_manager/itt_annotations.cpp index 3f06fd5653aa1..4b86bc239f266 100644 --- a/sycl/unittests/program_manager/itt_annotations.cpp +++ b/sycl/unittests/program_manager/itt_annotations.cpp @@ -239,7 +239,7 @@ static sycl::unittest::PiImage generateDefaultImage() { } sycl::unittest::PiImage Img = generateDefaultImage(); -sycl::unittest::PiImageArray ImgArray{Img}; +sycl::unittest::PiImageArray<1> ImgArray{&Img}; TEST(ITTNotify, UseKernelBundle) { set_env(ITTProfileEnvVarName, "1"); diff --git a/sycl/unittests/scheduler/RequiredWGSize.cpp b/sycl/unittests/scheduler/RequiredWGSize.cpp index 2bb65b673390e..23607bfe0064c 100644 --- a/sycl/unittests/scheduler/RequiredWGSize.cpp +++ b/sycl/unittests/scheduler/RequiredWGSize.cpp @@ -226,7 +226,7 @@ static sycl::unittest::PiImage generateDefaultImage() { } sycl::unittest::PiImage Img = generateDefaultImage(); -sycl::unittest::PiImageArray ImgArray{Img}; +sycl::unittest::PiImageArray<1> ImgArray{&Img}; static void performChecks() { sycl::platform Plt{sycl::default_selector()};