Skip to content

Commit 52f13d1

Browse files
committed
[Bindless][CUDA] Add support for cubemaps
Add enum to ur_mem_type_t to represent cubemap image type Add device aspects for cubemap support: - UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP - UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP Add structs/enums for cubemap sampling: - ur_exp_sampler_cubemap_properties_t struct to enable seamless filtering between cubemap faces - ur_exp_sampler_cubemap_filter_mode_t enum to enable distinguishing between cubemap seamless filtering options
1 parent 1cf9a08 commit 52f13d1

File tree

14 files changed

+260
-15
lines changed

14 files changed

+260
-15
lines changed

include/ur_api.h

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ typedef enum ur_structure_type_t {
277277
UR_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR = 0x2003, ///< ::ur_exp_file_descriptor_t
278278
UR_STRUCTURE_TYPE_EXP_WIN32_HANDLE = 0x2004, ///< ::ur_exp_win32_handle_t
279279
UR_STRUCTURE_TYPE_EXP_SAMPLER_ADDR_MODES = 0x2005, ///< ::ur_exp_sampler_addr_modes_t
280+
UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES = 0x2006, ///< ::ur_exp_sampler_cubemap_properties_t
280281
/// @cond
281282
UR_STRUCTURE_TYPE_FORCE_UINT32 = 0x7fffffff
282283
/// @endcond
@@ -1622,6 +1623,10 @@ typedef enum ur_device_info_t {
16221623
///< semaphore resources
16231624
UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP = 0x200F, ///< [::ur_bool_t] returns true if the device supports exporting internal
16241625
///< event resources
1626+
UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP = 0x2010, ///< [::ur_bool_t] returns true if the device supports allocating and
1627+
///< accessing cubemap resources
1628+
UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP = 0x2011, ///< [::ur_bool_t] returns true if the device supports sampling cubemapped
1629+
///< images across face boundaries
16251630
/// @cond
16261631
UR_DEVICE_INFO_FORCE_UINT32 = 0x7fffffff
16271632
/// @endcond
@@ -1647,7 +1652,7 @@ typedef enum ur_device_info_t {
16471652
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
16481653
/// + `NULL == hDevice`
16491654
/// - ::UR_RESULT_ERROR_INVALID_ENUMERATION
1650-
/// + `::UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP < propName`
1655+
/// + `::UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP < propName`
16511656
/// - ::UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION
16521657
/// + If `propName` is not supported by the adapter.
16531658
/// - ::UR_RESULT_ERROR_INVALID_SIZE
@@ -2418,13 +2423,14 @@ typedef enum ur_mem_flag_t {
24182423
///////////////////////////////////////////////////////////////////////////////
24192424
/// @brief Memory types
24202425
typedef enum ur_mem_type_t {
2421-
UR_MEM_TYPE_BUFFER = 0, ///< Buffer object
2422-
UR_MEM_TYPE_IMAGE2D = 1, ///< 2D image object
2423-
UR_MEM_TYPE_IMAGE3D = 2, ///< 3D image object
2424-
UR_MEM_TYPE_IMAGE2D_ARRAY = 3, ///< 2D image array object
2425-
UR_MEM_TYPE_IMAGE1D = 4, ///< 1D image object
2426-
UR_MEM_TYPE_IMAGE1D_ARRAY = 5, ///< 1D image array object
2427-
UR_MEM_TYPE_IMAGE1D_BUFFER = 6, ///< 1D image buffer object
2426+
UR_MEM_TYPE_BUFFER = 0, ///< Buffer object
2427+
UR_MEM_TYPE_IMAGE2D = 1, ///< 2D image object
2428+
UR_MEM_TYPE_IMAGE3D = 2, ///< 3D image object
2429+
UR_MEM_TYPE_IMAGE2D_ARRAY = 3, ///< 2D image array object
2430+
UR_MEM_TYPE_IMAGE1D = 4, ///< 1D image object
2431+
UR_MEM_TYPE_IMAGE1D_ARRAY = 5, ///< 1D image array object
2432+
UR_MEM_TYPE_IMAGE1D_BUFFER = 6, ///< 1D image buffer object
2433+
UR_MEM_TYPE_IMAGE_CUBEMAP_EXP = 0x2000, ///< Experimental cubemap image object
24282434
/// @cond
24292435
UR_MEM_TYPE_FORCE_UINT32 = 0x7fffffff
24302436
/// @endcond
@@ -7148,6 +7154,17 @@ typedef enum ur_exp_image_copy_flag_t {
71487154
/// @brief Bit Mask for validating ur_exp_image_copy_flags_t
71497155
#define UR_EXP_IMAGE_COPY_FLAGS_MASK 0xfffffff8
71507156

7157+
///////////////////////////////////////////////////////////////////////////////
7158+
/// @brief Sampler cubemap seamless filtering mode.
7159+
typedef enum ur_exp_sampler_cubemap_filter_mode_t {
7160+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED = 0, ///< Disable seamless filtering
7161+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS = 1, ///< Enable Seamless filtering
7162+
/// @cond
7163+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_FORCE_UINT32 = 0x7fffffff
7164+
/// @endcond
7165+
7166+
} ur_exp_sampler_cubemap_filter_mode_t;
7167+
71517168
///////////////////////////////////////////////////////////////////////////////
71527169
/// @brief File descriptor
71537170
typedef struct ur_exp_file_descriptor_t {
@@ -7202,6 +7219,21 @@ typedef struct ur_exp_sampler_addr_modes_t {
72027219

72037220
} ur_exp_sampler_addr_modes_t;
72047221

7222+
///////////////////////////////////////////////////////////////////////////////
7223+
/// @brief Describes cubemap sampler properties
7224+
///
7225+
/// @details
7226+
/// - Specify these properties in ::urSamplerCreate via ::ur_sampler_desc_t
7227+
/// as part of a `pNext` chain.
7228+
typedef struct ur_exp_sampler_cubemap_properties_t {
7229+
ur_structure_type_t stype; ///< [in] type of this structure, must be
7230+
///< ::UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES
7231+
void *pNext; ///< [in,out][optional] pointer to extension-specific structure
7232+
ur_exp_sampler_cubemap_filter_mode_t cubemapFilterMode; ///< [in] enables or disables seamless cubemap filtering between cubemap
7233+
///< faces
7234+
7235+
} ur_exp_sampler_cubemap_properties_t;
7236+
72057237
///////////////////////////////////////////////////////////////////////////////
72067238
/// @brief Describes an interop memory resource descriptor
72077239
typedef struct ur_exp_interop_mem_desc_t {

include/ur_print.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,14 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintUsmMigrationFlags(enum ur_usm_migrati
882882
/// - `buff_size < out_size`
883883
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpImageCopyFlags(enum ur_exp_image_copy_flag_t value, char *buffer, const size_t buff_size, size_t *out_size);
884884

885+
///////////////////////////////////////////////////////////////////////////////
886+
/// @brief Print ur_exp_sampler_cubemap_filter_mode_t enum
887+
/// @returns
888+
/// - ::UR_RESULT_SUCCESS
889+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
890+
/// - `buff_size < out_size`
891+
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpSamplerCubemapFilterMode(enum ur_exp_sampler_cubemap_filter_mode_t value, char *buffer, const size_t buff_size, size_t *out_size);
892+
885893
///////////////////////////////////////////////////////////////////////////////
886894
/// @brief Print ur_exp_file_descriptor_t struct
887895
/// @returns
@@ -914,6 +922,14 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintExpSamplerMipProperties(const struct
914922
/// - `buff_size < out_size`
915923
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpSamplerAddrModes(const struct ur_exp_sampler_addr_modes_t params, char *buffer, const size_t buff_size, size_t *out_size);
916924

925+
///////////////////////////////////////////////////////////////////////////////
926+
/// @brief Print ur_exp_sampler_cubemap_properties_t struct
927+
/// @returns
928+
/// - ::UR_RESULT_SUCCESS
929+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
930+
/// - `buff_size < out_size`
931+
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpSamplerCubemapProperties(const struct ur_exp_sampler_cubemap_properties_t params, char *buffer, const size_t buff_size, size_t *out_size);
932+
917933
///////////////////////////////////////////////////////////////////////////////
918934
/// @brief Print ur_exp_interop_mem_desc_t struct
919935
/// @returns

include/ur_print.hpp

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,10 +320,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_execution_info_t value
320320
inline std::ostream &operator<<(std::ostream &os, enum ur_map_flag_t value);
321321
inline std::ostream &operator<<(std::ostream &os, enum ur_usm_migration_flag_t value);
322322
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_image_copy_flag_t value);
323+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_sampler_cubemap_filter_mode_t value);
323324
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_file_descriptor_t params);
324325
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_win32_handle_t params);
325326
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_sampler_mip_properties_t params);
326327
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_sampler_addr_modes_t params);
328+
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_sampler_cubemap_properties_t params);
327329
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_interop_mem_desc_t params);
328330
inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct ur_exp_interop_semaphore_desc_t params);
329331
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_command_buffer_info_t value);
@@ -1065,6 +1067,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_structure_type_t value
10651067
case UR_STRUCTURE_TYPE_EXP_SAMPLER_ADDR_MODES:
10661068
os << "UR_STRUCTURE_TYPE_EXP_SAMPLER_ADDR_MODES";
10671069
break;
1070+
case UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES:
1071+
os << "UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES";
1072+
break;
10681073
default:
10691074
os << "unknown enumerator";
10701075
break;
@@ -1316,6 +1321,11 @@ inline ur_result_t printStruct(std::ostream &os, const void *ptr) {
13161321
const ur_exp_sampler_addr_modes_t *pstruct = (const ur_exp_sampler_addr_modes_t *)ptr;
13171322
printPtr(os, pstruct);
13181323
} break;
1324+
1325+
case UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES: {
1326+
const ur_exp_sampler_cubemap_properties_t *pstruct = (const ur_exp_sampler_cubemap_properties_t *)ptr;
1327+
printPtr(os, pstruct);
1328+
} break;
13191329
default:
13201330
os << "unknown enumerator";
13211331
return UR_RESULT_ERROR_INVALID_ENUMERATION;
@@ -2537,6 +2547,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_device_info_t value) {
25372547
case UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP:
25382548
os << "UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP";
25392549
break;
2550+
case UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP:
2551+
os << "UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP";
2552+
break;
2553+
case UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP:
2554+
os << "UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP";
2555+
break;
25402556
default:
25412557
os << "unknown enumerator";
25422558
break;
@@ -4141,6 +4157,30 @@ inline ur_result_t printTagged(std::ostream &os, const void *ptr, ur_device_info
41414157

41424158
os << ")";
41434159
} break;
4160+
case UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP: {
4161+
const ur_bool_t *tptr = (const ur_bool_t *)ptr;
4162+
if (sizeof(ur_bool_t) > size) {
4163+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(ur_bool_t) << ")";
4164+
return UR_RESULT_ERROR_INVALID_SIZE;
4165+
}
4166+
os << (const void *)(tptr) << " (";
4167+
4168+
os << *tptr;
4169+
4170+
os << ")";
4171+
} break;
4172+
case UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP: {
4173+
const ur_bool_t *tptr = (const ur_bool_t *)ptr;
4174+
if (sizeof(ur_bool_t) > size) {
4175+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(ur_bool_t) << ")";
4176+
return UR_RESULT_ERROR_INVALID_SIZE;
4177+
}
4178+
os << (const void *)(tptr) << " (";
4179+
4180+
os << *tptr;
4181+
4182+
os << ")";
4183+
} break;
41444184
default:
41454185
os << "unknown enumerator";
41464186
return UR_RESULT_ERROR_INVALID_ENUMERATION;
@@ -5317,6 +5357,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_mem_type_t value) {
53175357
case UR_MEM_TYPE_IMAGE1D_BUFFER:
53185358
os << "UR_MEM_TYPE_IMAGE1D_BUFFER";
53195359
break;
5360+
case UR_MEM_TYPE_IMAGE_CUBEMAP_EXP:
5361+
os << "UR_MEM_TYPE_IMAGE_CUBEMAP_EXP";
5362+
break;
53205363
default:
53215364
os << "unknown enumerator";
53225365
break;
@@ -9125,6 +9168,24 @@ inline ur_result_t printFlag<ur_exp_image_copy_flag_t>(std::ostream &os, uint32_
91259168
}
91269169
} // namespace ur::details
91279170
///////////////////////////////////////////////////////////////////////////////
9171+
/// @brief Print operator for the ur_exp_sampler_cubemap_filter_mode_t type
9172+
/// @returns
9173+
/// std::ostream &
9174+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_sampler_cubemap_filter_mode_t value) {
9175+
switch (value) {
9176+
case UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED:
9177+
os << "UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED";
9178+
break;
9179+
case UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS:
9180+
os << "UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS";
9181+
break;
9182+
default:
9183+
os << "unknown enumerator";
9184+
break;
9185+
}
9186+
return os;
9187+
}
9188+
///////////////////////////////////////////////////////////////////////////////
91289189
/// @brief Print operator for the ur_exp_file_descriptor_t type
91299190
/// @returns
91309191
/// std::ostream &
@@ -9247,6 +9308,31 @@ inline std::ostream &operator<<(std::ostream &os, const struct ur_exp_sampler_ad
92479308
return os;
92489309
}
92499310
///////////////////////////////////////////////////////////////////////////////
9311+
/// @brief Print operator for the ur_exp_sampler_cubemap_properties_t type
9312+
/// @returns
9313+
/// std::ostream &
9314+
inline std::ostream &operator<<(std::ostream &os, const struct ur_exp_sampler_cubemap_properties_t params) {
9315+
os << "(struct ur_exp_sampler_cubemap_properties_t){";
9316+
9317+
os << ".stype = ";
9318+
9319+
os << (params.stype);
9320+
9321+
os << ", ";
9322+
os << ".pNext = ";
9323+
9324+
ur::details::printStruct(os,
9325+
(params.pNext));
9326+
9327+
os << ", ";
9328+
os << ".cubemapFilterMode = ";
9329+
9330+
os << (params.cubemapFilterMode);
9331+
9332+
os << "}";
9333+
return os;
9334+
}
9335+
///////////////////////////////////////////////////////////////////////////////
92509336
/// @brief Print operator for the ur_exp_interop_mem_desc_t type
92519337
/// @returns
92529338
/// std::ostream &

scripts/core/EXP-BINDLESS-IMAGES.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ Runtime:
5050
* Sampled images
5151
* Unsampled images
5252
* Mipmaps
53+
* Cubemaps
5354
* USM backed images
5455

5556
* Interoperability support
@@ -69,6 +70,7 @@ Enums
6970
${X}_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR
7071
${X}_STRUCTURE_TYPE_EXP_WIN32_HANDLE
7172
${X}_STRUCTURE_TYPE_EXP_SAMPLER_ADDR_MODES
73+
${X}_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES
7274

7375
* ${x}_device_info_t
7476
* ${X}_DEVICE_INFO_BINDLESS_IMAGES_SUPPORT_EXP
@@ -87,6 +89,8 @@ Enums
8789
* ${X}_DEVICE_INFO_INTEROP_MEMORY_EXPORT_SUPPORT_EXP
8890
* ${X}_DEVICE_INFO_INTEROP_SEMAPHORE_IMPORT_SUPPORT_EXP
8991
* ${X}_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP
92+
* ${X}_DEVICE_INFO_CUBEMAP_SUPPORT_EXP
93+
* ${X}_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP
9094

9195
* ${x}_command_t
9296
* ${X}_COMMAND_INTEROP_SEMAPHORE_WAIT_EXP
@@ -97,6 +101,10 @@ Enums
97101
* ${X}_EXP_IMAGE_COPY_FLAG_DEVICE_TO_HOST
98102
* ${X}_EXP_IMAGE_COPY_FLAG_DEVICE_TO_DEVICE
99103

104+
* ${x}_exp_sampler_cubemap_filter_mode_t
105+
* ${X}_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS
106+
* ${X}_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED
107+
100108
* ${x}_function_t
101109
* ${X}_FUNCTION_USM_PITCHED_ALLOC_EXP
102110
* ${X}_FUNCTION_BINDLESS_IMAGES_UNSAMPLED_IMAGE_HANDLE_DESTROY_EXP
@@ -117,6 +125,9 @@ Enums
117125
* ${X}_FUNCTION_BINDLESS_IMAGES_WAIT_EXTERNAL_SEMAPHORE_EXP
118126
* ${X}_FUNCTION_BINDLESS_IMAGES_SIGNAL_EXTERNAL_SEMAPHORE_EXP
119127

128+
* ${x}_mem_type_t
129+
* ${X}_MEM_TYPE_IMAGE_CUBEMAP_EXP
130+
120131
Types
121132
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122133
* ${x}_exp_sampler_mip_properties_t
@@ -129,6 +140,7 @@ Types
129140
* ${x}_exp_file_descriptor_t
130141
* ${x}_exp_win32_handle_t
131142
* ${x}_exp_sampler_addr_modes_t
143+
* ${x}_exp_sampler_cubemap_properties_t
132144

133145
Functions
134146
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -184,6 +196,9 @@ Changelog
184196
+------------------------------------------------------------------------+
185197
| 9.0 | Remove layered image properties struct. |
186198
+------------------------------------------------------------------------+
199+
| 10.0 | Added cubemap image type, sampling properties, and device |
200+
| | queries. |
201+
+----------+-------------------------------------------------------------+
187202

188203
Contributors
189204
--------------------------------------------------------------------------------

scripts/core/exp-bindless-images.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ etors:
8686
- name: INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP
8787
value: "0x200F"
8888
desc: "[$x_bool_t] returns true if the device supports exporting internal event resources"
89+
- name: CUBEMAP_SUPPORT_EXP
90+
value: "0x2010"
91+
desc: "[$x_bool_t] returns true if the device supports allocating and accessing cubemap resources"
92+
- name: CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP
93+
value: "0x2011"
94+
desc: "[$x_bool_t] returns true if the device supports sampling cubemapped images across face boundaries"
8995
--- #--------------------------------------------------------------------------
9096
type: enum
9197
extend: true
@@ -110,6 +116,9 @@ etors:
110116
- name: EXP_SAMPLER_ADDR_MODES
111117
desc: $x_exp_sampler_addr_modes_t
112118
value: "0x2005"
119+
- name: EXP_SAMPLER_CUBEMAP_PROPERTIES
120+
desc: $x_exp_sampler_cubemap_properties_t
121+
value: "0x2006"
113122
--- #--------------------------------------------------------------------------
114123
type: enum
115124
extend: true
@@ -135,6 +144,25 @@ etors:
135144
- name: DEVICE_TO_DEVICE
136145
desc: "Device to device"
137146
--- #--------------------------------------------------------------------------
147+
type: enum
148+
extend: True
149+
desc: "Memory types"
150+
name: $x_mem_type_t
151+
etors:
152+
- name: IMAGE_CUBEMAP_EXP
153+
value: "0x2000"
154+
desc: "Experimental cubemap image object"
155+
--- #--------------------------------------------------------------------------
156+
type: enum
157+
desc: "Sampler cubemap seamless filtering mode."
158+
class: $xBindlessImages
159+
name: $x_exp_sampler_cubemap_filter_mode_t
160+
etors:
161+
- name: DISJOINTED
162+
desc: "Disable seamless filtering"
163+
- name: SEAMLESS
164+
desc: "Enable Seamless filtering"
165+
--- #--------------------------------------------------------------------------
138166
type: struct
139167
desc: "File descriptor"
140168
name: $x_exp_file_descriptor_t
@@ -189,6 +217,19 @@ members:
189217
desc: "[in] Specify the address mode of the sampler per dimension"
190218
--- #--------------------------------------------------------------------------
191219
type: struct
220+
desc: "Describes cubemap sampler properties"
221+
details:
222+
- Specify these properties in $xSamplerCreate via $x_sampler_desc_t as part
223+
of a `pNext` chain.
224+
class: $xBindlessImages
225+
name: $x_exp_sampler_cubemap_properties_t
226+
base: $x_base_properties_t
227+
members:
228+
- type: $x_exp_sampler_cubemap_filter_mode_t
229+
name: cubemapFilterMode
230+
desc: "[in] enables or disables seamless cubemap filtering between cubemap faces"
231+
--- #--------------------------------------------------------------------------
232+
type: struct
192233
desc: "Describes an interop memory resource descriptor"
193234
class: $xBindlessImages
194235
name: $x_exp_interop_mem_desc_t

0 commit comments

Comments
 (0)