Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bindless][Exp] Add texture fetch functionality #12447

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
3ea1db3
[Bindless][Exp] Add texture fetch functionality
przemektmalon Nov 21, 2023
8c1e542
Change UR repo link in CMakeLists to HTTPS
przemektmalon Jan 19, 2024
d4e1e01
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Jan 22, 2024
992d889
Update UR TAG in CMakeLists
przemektmalon Jan 22, 2024
25752ac
Update UR enums with _EXP suffix
przemektmalon Jan 23, 2024
9439bdd
Update UR TAG in CMakeLists
przemektmalon Feb 6, 2024
dd4317b
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 6, 2024
73614cb
Update CMakeLists UR TAG
przemektmalon Feb 6, 2024
17ba91f
Apply libclc macro changes to reduce LOC
przemektmalon Feb 12, 2024
a38a8a9
Update UR repo TAG
przemektmalon Feb 12, 2024
44c8d79
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 12, 2024
7998596
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 12, 2024
0c1119a
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 13, 2024
7e4bea5
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 14, 2024
3e81db7
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 22, 2024
73c665a
Fix deprecated function calls. Update UR tag & fetch tests
przemektmalon Feb 22, 2024
e1e22ba
Make fetch operation naming consistent across the stack (API -> libclc)
przemektmalon Feb 22, 2024
74324c6
Update UR repo TAG
przemektmalon Feb 22, 2024
d7b9057
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 22, 2024
6d497d6
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 22, 2024
0cf37c2
Add missing `fetch_image` API in specification document
przemektmalon Feb 22, 2024
72cb5a3
Fix PI versions in pi.h
przemektmalon Feb 22, 2024
e7cdd43
Fix non-e2e bindless images test
przemektmalon Feb 22, 2024
c3ec14e
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 23, 2024
743a259
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 26, 2024
d9e8b77
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 28, 2024
186f36f
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Feb 29, 2024
af532e9
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Mar 1, 2024
7b8ef09
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Mar 1, 2024
31b6eab
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Mar 4, 2024
2cb042c
Revert existing aspect macros to original values
przemektmalon Mar 4, 2024
6b11a39
Use `// REQUIRES: aspect-<...>` instead of querying the device
przemektmalon Mar 5, 2024
49c5d47
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Mar 5, 2024
cd917da
Add verbose-print parameter to LIT config
przemektmalon Mar 8, 2024
7b3434c
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Mar 8, 2024
8d792d2
Update UR TAG
przemektmalon Mar 13, 2024
db2a7d7
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Mar 13, 2024
1af8e9b
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 4, 2024
1657829
Formatting
przemektmalon Apr 4, 2024
f04cc34
Format. Use 'call' for device queries.
przemektmalon Apr 4, 2024
631e433
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 8, 2024
4e9ef99
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 9, 2024
17fa6db
Update UR repo/tag
przemektmalon Apr 9, 2024
54d1812
Undo removal of comment
przemektmalon Apr 9, 2024
ff907c2
Revert aspect queries to call_nocheck
przemektmalon Apr 9, 2024
323c64c
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 9, 2024
d80630b
Update UR tag
przemektmalon Apr 9, 2024
0220bf0
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 10, 2024
773b49c
Update UR tag
przemektmalon Apr 10, 2024
0fc3629
Update UR tag
przemektmalon Apr 10, 2024
a9cb08a
Update UR tag
przemektmalon Apr 10, 2024
711109f
Update UR tag
przemektmalon Apr 10, 2024
e59df31
Update UR tag
przemektmalon Apr 10, 2024
62b395d
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 10, 2024
94a4304
Update UR tag
przemektmalon Apr 10, 2024
0b27d61
Update UR tag
przemektmalon Apr 10, 2024
d559f35
Update UR tag
przemektmalon Apr 10, 2024
bba8213
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 10, 2024
1f45ea1
Update UR tag
przemektmalon Apr 10, 2024
ef04a75
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 17, 2024
8b87873
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 17, 2024
9572417
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 17, 2024
dabb6fe
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 22, 2024
ac28787
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon Apr 30, 2024
cb9cd5f
Update UR Tag
przemektmalon Apr 30, 2024
0e55b21
Update UR Tag
przemektmalon May 2, 2024
056df00
Merge branch 'sycl' into przemek/sampled-image-fetch
przemektmalon May 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
484 changes: 297 additions & 187 deletions libclc/ptx-nvidiacl/libspirv/images/image.cl

Large diffs are not rendered by default.

74 changes: 73 additions & 1 deletion libclc/ptx-nvidiacl/libspirv/images/image_helpers.ll
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ entry:
ret <4 x i16> %1
}

; <--- TEXTURES --->
; <--- TEXTURE SAMPLING (floating-point coordinates) --->
declare {i32,i32,i32,i32} @llvm.nvvm.tex.unified.1d.v4s32.f32(i64, float)
define <4 x i32> @__clc_llvm_nvvm_tex_1d_v4i32_f32(i64 %img, float %x) nounwind alwaysinline {
entry:
Expand Down Expand Up @@ -345,6 +345,78 @@ entry:
ret <4 x float> %1
}

; <--- TEXTURE FETCHING (integer coordinates) --->
declare {i32,i32,i32,i32} @llvm.nvvm.tex.unified.1d.v4s32.s32(i64, i32)
define <4 x i32> @__clc_llvm_nvvm_tex_1d_v4i32_s32(i64 %img, i32 %x) nounwind alwaysinline {
entry:
%0 = tail call {i32,i32,i32,i32} @llvm.nvvm.tex.unified.1d.v4s32.s32(i64 %img, i32 %x);
%1 = tail call <4 x i32>@__clc_struct32_to_vector({i32,i32,i32,i32} %0)
ret <4 x i32> %1
}

declare {i32,i32,i32,i32} @llvm.nvvm.tex.unified.2d.v4s32.s32(i64, i32, i32)
define <4 x i32> @__clc_llvm_nvvm_tex_2d_v4i32_s32(i64 %img, i32 %x, i32 %y) nounwind alwaysinline {
entry:
%0 = tail call {i32,i32,i32,i32} @llvm.nvvm.tex.unified.2d.v4s32.s32(i64 %img, i32 %x, i32 %y);
%1 = tail call <4 x i32>@__clc_struct32_to_vector({i32,i32,i32,i32} %0)
ret <4 x i32> %1
}

declare {i32,i32,i32,i32} @llvm.nvvm.tex.unified.3d.v4s32.s32(i64, i32, i32, i32)
define <4 x i32> @__clc_llvm_nvvm_tex_3d_v4i32_s32(i64 %img, i32 %x, i32 %y, i32 %z) nounwind alwaysinline {
entry:
%0 = tail call {i32,i32,i32,i32} @llvm.nvvm.tex.unified.3d.v4s32.s32(i64 %img, i32 %x, i32 %y, i32 %z);
%1 = tail call <4 x i32>@__clc_struct32_to_vector({i32,i32,i32,i32} %0)
ret <4 x i32> %1
}

declare {i32,i32,i32,i32} @llvm.nvvm.tex.unified.1d.v4u32.s32(i64, i32)
define <4 x i32> @__clc_llvm_nvvm_tex_1d_v4j32_s32(i64 %img, i32 %x) nounwind alwaysinline {
entry:
%0 = tail call {i32,i32,i32,i32} @llvm.nvvm.tex.unified.1d.v4u32.s32(i64 %img, i32 %x);
%1 = tail call <4 x i32>@__clc_struct32_to_vector({i32,i32,i32,i32} %0)
ret <4 x i32> %1
}

declare {i32,i32,i32,i32} @llvm.nvvm.tex.unified.2d.v4u32.s32(i64, i32, i32)
define <4 x i32> @__clc_llvm_nvvm_tex_2d_v4j32_s32(i64 %img, i32 %x, i32 %y) nounwind alwaysinline {
entry:
%0 = tail call {i32,i32,i32,i32} @llvm.nvvm.tex.unified.2d.v4u32.s32(i64 %img, i32 %x, i32 %y);
%1 = tail call <4 x i32>@__clc_struct32_to_vector({i32,i32,i32,i32} %0)
ret <4 x i32> %1
}

declare {i32,i32,i32,i32} @llvm.nvvm.tex.unified.3d.v4u32.s32(i64, i32, i32, i32)
define <4 x i32> @__clc_llvm_nvvm_tex_3d_v4j32_s32(i64 %img, i32 %x, i32 %y, i32 %z) nounwind alwaysinline {
entry:
%0 = tail call {i32,i32,i32,i32} @llvm.nvvm.tex.unified.3d.v4u32.s32(i64 %img, i32 %x, i32 %y, i32 %z);
%1 = tail call <4 x i32>@__clc_struct32_to_vector({i32,i32,i32,i32} %0)
ret <4 x i32> %1
}

declare {float,float,float,float} @llvm.nvvm.tex.unified.1d.v4f32.s32(i64, i32)
define <4 x float> @__clc_llvm_nvvm_tex_1d_v4f32_s32(i64 %img, i32 %x) nounwind alwaysinline {
entry:
%0 = tail call {float,float,float,float} @llvm.nvvm.tex.unified.1d.v4f32.s32(i64 %img, i32 %x)
%1 = tail call <4 x float>@__clc_structf32_to_vector({float,float,float,float} %0)
ret <4 x float> %1
}

declare {float,float,float,float} @llvm.nvvm.tex.unified.2d.v4f32.s32(i64, i32, i32)
define <4 x float> @__clc_llvm_nvvm_tex_2d_v4f32_s32(i64 %img, i32 %x, i32 %y) nounwind alwaysinline {
entry:
%0 = tail call {float,float,float,float} @llvm.nvvm.tex.unified.2d.v4f32.s32(i64 %img, i32 %x, i32 %y);
%1 = tail call <4 x float>@__clc_structf32_to_vector({float,float,float,float} %0)
ret <4 x float> %1
}

declare {float,float,float,float} @llvm.nvvm.tex.unified.3d.v4f32.s32(i64, i32, i32, i32)
define <4 x float> @__clc_llvm_nvvm_tex_3d_v4f32_s32(i64 %img, i32 %x, i32 %y, i32 %z) nounwind alwaysinline {
entry:
%0 = tail call {float,float,float,float} @llvm.nvvm.tex.unified.3d.v4f32.s32(i64 %img, i32 %x, i32 %y, i32 %z);
%1 = tail call <4 x float>@__clc_structf32_to_vector({float,float,float,float} %0)
ret <4 x float> %1
}


; <--- MIPMAP --->
Expand Down
12 changes: 11 additions & 1 deletion llvm/include/llvm/SYCLLowerIR/DeviceConfigFile.td
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ def AspectExt_oneapi_interop_semaphore_export : Aspect<"ext_oneapi_interop_semap
def AspectExt_oneapi_mipmap : Aspect<"ext_oneapi_mipmap">;
def AspectExt_oneapi_mipmap_anisotropy : Aspect<"ext_oneapi_mipmap_anisotropy">;
def AspectExt_oneapi_mipmap_level_reference : Aspect<"ext_oneapi_mipmap_level_reference">;
def AspectExt_oneapi_bindless_sampled_image_fetch_1d_usm : Aspect<"ext_oneapi_bindless_sampled_image_fetch_1d_usm">;
def AspectExt_oneapi_bindless_sampled_image_fetch_1d : Aspect<"ext_oneapi_bindless_sampled_image_fetch_1d">;
def AspectExt_oneapi_bindless_sampled_image_fetch_2d_usm : Aspect<"ext_oneapi_bindless_sampled_image_fetch_2d_usm">;
def AspectExt_oneapi_bindless_sampled_image_fetch_2d : Aspect<"ext_oneapi_bindless_sampled_image_fetch_2d">;
def AspectExt_oneapi_bindless_sampled_image_fetch_3d_usm : Aspect<"ext_oneapi_bindless_sampled_image_fetch_3d_usm">;
def AspectExt_oneapi_bindless_sampled_image_fetch_3d : Aspect<"ext_oneapi_bindless_sampled_image_fetch_3d">;
def AspectExt_oneapi_cubemap : Aspect<"ext_oneapi_cubemap">;
def AspectExt_oneapi_cubemap_seamless_filtering : Aspect<"ext_oneapi_cubemap_seamless_filtering">;
def AspectExt_intel_esimd : Aspect<"ext_intel_esimd">;
Expand Down Expand Up @@ -124,7 +130,11 @@ def : TargetInfo<"__TestAspectList",
AspectExt_oneapi_interop_memory_import, AspectExt_oneapi_interop_memory_export,
AspectExt_oneapi_interop_semaphore_import, AspectExt_oneapi_interop_semaphore_export,
AspectExt_oneapi_mipmap, AspectExt_oneapi_mipmap_anisotropy, AspectExt_oneapi_mipmap_level_reference, AspectExt_oneapi_cubemap,
AspectExt_oneapi_cubemap_seamless_filtering, AspectExt_intel_esimd,
AspectExt_oneapi_cubemap_seamless_filtering,
AspectExt_oneapi_bindless_sampled_image_fetch_1d_usm, AspectExt_oneapi_bindless_sampled_image_fetch_1d,
AspectExt_oneapi_bindless_sampled_image_fetch_2d_usm, AspectExt_oneapi_bindless_sampled_image_fetch_2d,
AspectExt_oneapi_bindless_sampled_image_fetch_3d_usm, AspectExt_oneapi_bindless_sampled_image_fetch_3d,
AspectExt_intel_esimd,
AspectExt_oneapi_ballot_group, AspectExt_oneapi_fixed_size_group, AspectExt_oneapi_opportunistic_group,
AspectExt_oneapi_tangle_group, AspectExt_intel_matrix, AspectExt_oneapi_is_composite, AspectExt_oneapi_is_component,
AspectExt_oneapi_graph, AspectExt_intel_fpga_task_sequence, AspectExt_oneapi_limited_graph,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1055,6 +1055,10 @@ namespace sycl::ext::oneapi::experimental {
template <typename DataT, typename HintT = DataT, typename CoordT>
DataT fetch_image(const unsampled_image_handle &ImageHandle,
const CoordT &Coords);

template <typename DataT, typename HintT = DataT, typename CoordT>
DataT fetch_image(const sampled_image_handle &ImageHandle,
const CoordT &Coords);
template <typename DataT, typename HintT = DataT, typename CoordT>
DataT sample_image(const sampled_image_handle &ImageHandle,
const CoordT &Coords);
Expand All @@ -1066,12 +1070,19 @@ void write_image(unsampled_image_handle ImageHandle,
```

Inside a kernel, it's possible to retrieve data from an image via `fetch_image`
or `sample_image`, passing the appropirate image handle. The `fetch_image` API
is only applicable to unsampled images, and the data will be fetched exactly as
is in device memory. The `sample_image` API is only applicable to sampled
images, the image data will be sampled according to the
or `sample_image`, passing the appropirate image handle. The `fetch_image` API
is applicable to sampled and unsampled images, and the data will be fetched
exactly as is in device memory. The `sample_image` API is only applicable to
sampled images, the image data will be sampled according to the
`bindless_image_sampler` that was passed to the image upon construction.

When fetching from a sampled image handle, data exatly as is in memory, no
sampling operations will be performed, and the `bindless_image_sampler` passed
to the image upon creation has no effect on the returned image data. Note that
not all devices may support fetching of sampled image data depending on the
dimension or backing memory type. We provide device aspect queries for this in
<<querying_sampled_image_fetch_support>>.

The user is required to pass a `DataT` template parameter, which specifies the
return type of the `fetch_image` and `sample_image` functions. If `DataT` is
not a recognized standard type, as defined in <<recognized_standard_types>>,
Expand Down Expand Up @@ -1102,9 +1113,12 @@ For fetching and writing of unsampled images, coordinates are specified by
`int`, `sycl::vec<int, 2>`, and `sycl::vec<int, 3>` for 1D, 2D, and 3D images,
respectively.

Sampled image reads take `float`, `sycl::vec<float, 2>`, and
Sampled image "sampled reads" take `float`, `sycl::vec<float, 2>`, and
`sycl::vec<float, 3>` coordinate types for 1D, 2D, and 3D images, respectively.

Sampled image "fetch reads" take `int`, `sycl::vec<int, 2>`, and
`sycl::vec<int, 3>` coordinate types for 1D, 2D, and 3D images, respectively.

Note also that all images must be used in either read-only or write-only fashion
within a single kernel invocation; read/write images are not supported.

Expand Down Expand Up @@ -1149,6 +1163,36 @@ When providing the above types as `DataT` parameters to an image read function,
the corresponding `HintT` parameters to use would be `sycl::vec<float, 4>` and
`sycl::vec<short, 2>`, respectively.

=== Querying sampled image fetch support [[querying_sampled_image_fetch_support]]

We provide the following device queries to query support for sampled image
fetch with various backing memory types and dimensionalities.

The device aspect descriptors for these queries are:

[frame="none",options="header"]
|======================
|Device descriptor | Description
|`aspect::ext_oneapi_bindless_sampled_image_fetch_1d_usm` |
Indicates if the device is capable of fetching USM backed 1D
sampled image data.
|`aspect::ext_oneapi_bindless_sampled_image_fetch_1d` |
Indicates if the device is capable of fetching non-USM backed 1D
sampled image data.
|`aspect::ext_oneapi_bindless_sampled_image_fetch_2d_usm` |
Indicates if the device is capable of fetching USM backed 2D
sampled image data.
|`aspect::ext_oneapi_bindless_sampled_image_fetch_2d` |
Indicates if the device is capable of fetching non-USM backed 2D
sampled image data.
|`aspect::ext_oneapi_bindless_sampled_image_fetch_3d_usm` |
Indicates if the device is capable of fetching USM backed 3D
sampled image data.
|`aspect::ext_oneapi_bindless_sampled_image_fetch_3d` |
Indicates if the device is capable of fetching non-USM backed 3D
sampled image data.
przemektmalon marked this conversation as resolved.
Show resolved Hide resolved
|======================

== Mipmapped images

So far, we have described how to create and operate on standard bindless images.
Expand Down Expand Up @@ -2638,4 +2682,6 @@ These features still need to be handled:
- Updated `image_array_write` with non-const handle parameter.
- Removed `&` reference qualifier from `write_xxx` handle
parameter.
|5.7|2024-04-09| - Allow fetching of sampled image data through the
`fetch_image` API.
|======================
6 changes: 6 additions & 0 deletions sycl/include/CL/__spirv/spirv_ops.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,12 @@ extern __DPCPP_SYCL_EXTERNAL void __spirv_ImageWrite(ImageT, CoordT, ValT);
template <class RetT, typename ImageT, typename TempArgT>
extern __DPCPP_SYCL_EXTERNAL RetT __spirv_ImageRead(ImageT, TempArgT);

template <class RetT, typename ImageT, typename TempArgT>
extern __DPCPP_SYCL_EXTERNAL RetT __spirv_ImageFetch(ImageT, TempArgT);

template <class RetT, typename ImageT, typename TempArgT>
extern __DPCPP_SYCL_EXTERNAL RetT __spirv_SampledImageFetch(ImageT, TempArgT);

template <class RetT, typename ImageT, typename TempArgT>
extern __DPCPP_SYCL_EXTERNAL RetT __spirv_ImageArrayFetch(ImageT, TempArgT,
int);
Expand Down
24 changes: 24 additions & 0 deletions sycl/include/sycl/detail/image_ocl_types.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,30 @@ static RetType __invoke__ImageRead(ImageT Img, CoordT Coords) {
__spirv_ImageRead<TempRetT, ImageT, decltype(TmpCoords)>(Img, TmpCoords));
}

template <typename RetType, typename ImageT, typename CoordT>
static RetType __invoke__ImageFetch(ImageT Img, CoordT Coords) {

// Convert from sycl types to builtin types to get correct function mangling.
using TempRetT = sycl::detail::ConvertToOpenCLType_t<RetType>;
auto TmpCoords = sycl::detail::convertToOpenCLType(Coords);

return sycl::detail::convertFromOpenCLTypeFor<RetType>(
__spirv_ImageFetch<TempRetT, ImageT, decltype(TmpCoords)>(Img,
TmpCoords));
}

template <typename RetType, typename ImageT, typename CoordT>
static RetType __invoke__SampledImageFetch(ImageT Img, CoordT Coords) {

// Convert from sycl types to builtin types to get correct function mangling.
using TempRetT = sycl::detail::ConvertToOpenCLType_t<RetType>;
auto TmpCoords = sycl::detail::convertToOpenCLType(Coords);

return sycl::detail::convertFromOpenCLTypeFor<RetType>(
__spirv_SampledImageFetch<TempRetT, ImageT, decltype(TmpCoords)>(
Img, TmpCoords));
}

template <typename RetType, typename ImageT, typename CoordT>
static RetType __invoke__ImageArrayFetch(ImageT Img, CoordT Coords,
int ArrayLayer) {
Expand Down
17 changes: 16 additions & 1 deletion sycl/include/sycl/detail/pi.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,16 @@
// - Added device queries for cubemap support
// - PI_EXT_ONEAPI_DEVICE_INFO_CUBEMAP_SUPPORT
// - PI_EXT_ONEAPI_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT
// 15.50 Added device queries for sampled image fetch support
// - PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_1D_USM
// - PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_1D
// - PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_2D_USM
// - PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_2D
// - PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_3D_USM
// - PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_3D

#define _PI_H_VERSION_MAJOR 15
#define _PI_H_VERSION_MINOR 48
#define _PI_H_VERSION_MINOR 50

#define _PI_STRING_HELPER(a) #a
#define _PI_CONCAT(a, b) _PI_STRING_HELPER(a.b)
Expand Down Expand Up @@ -462,6 +469,14 @@ typedef enum {
// Bindless images cubemaps
PI_EXT_ONEAPI_DEVICE_INFO_CUBEMAP_SUPPORT = 0x20115,
PI_EXT_ONEAPI_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT = 0x20116,

// Bindless images sampled image fetch
PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_1D_USM = 0x20117,
PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_1D = 0x20118,
PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_2D_USM = 0x20119,
PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_2D = 0x2011A,
PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_3D_USM = 0x2011B,
PI_EXT_ONEAPI_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_3D = 0x2011C,
} _pi_device_info;

typedef enum {
Expand Down
63 changes: 63 additions & 0 deletions sycl/include/sycl/device_aspect_macros.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,39 @@
#define __SYCL_ALL_DEVICES_HAVE_ext_oneapi_cubemap_seamless_filtering__ 0
#endif

#ifndef __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_1d_usm__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_1d_usm, 67)
#define __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_1d_usm__ \
0
#endif

#ifndef __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_1d__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_1d, 68)
#define __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_1d__ 0
#endif

#ifndef __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_2d_usm__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_2d_usm, 69)
#define __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_2d_usm__ \
0
#endif

#ifndef __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_2d__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_2d, 70)
#define __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_2d__ 0
#endif

#ifndef __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_3d_usm__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_3d_usm, 71)
#define __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_3d_usm__ \
0
#endif

#ifndef __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_3d__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_3d, 72)
#define __SYCL_ALL_DEVICES_HAVE_ext_oneapi_bindless_sampled_image_fetch_3d__ 0
#endif

#ifndef __SYCL_ANY_DEVICE_HAS_host__
// __SYCL_ASPECT(host, 0)
#define __SYCL_ANY_DEVICE_HAS_host__ 0
Expand Down Expand Up @@ -677,3 +710,33 @@
// __SYCL_ASPECT(ext_oneapi_cubemap_seamless_filtering, 66)
#define __SYCL_ANY_DEVICE_HAS_ext_oneapi_cubemap_seamless_filtering__ 0
#endif

#ifndef __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_1d_usm__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_1d_usm, 67)
#define __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_1d_usm__ 0
#endif

#ifndef __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_1d__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_1d, 68)
#define __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_1d__ 0
#endif

#ifndef __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_2d_usm__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_2d_usm, 69)
#define __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_2d_usm__ 0
#endif

#ifndef __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_2d__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_2d, 70)
#define __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_2d__ 0
#endif

#ifndef __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_3d_usm__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_3d_usm, 71)
#define __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_3d_usm__ 0
#endif

#ifndef __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_3d__
//__SYCL_ASPECT(ext_oneapi_bindless_sampled_image_fetch_3d, 72)
#define __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_sampled_image_fetch_3d__ 0
#endif
Loading
Loading