Skip to content

Commit bda7c56

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 ed1f8bf commit bda7c56

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
@@ -278,6 +278,7 @@ typedef enum ur_structure_type_t {
278278
UR_STRUCTURE_TYPE_EXP_FILE_DESCRIPTOR = 0x2003, ///< ::ur_exp_file_descriptor_t
279279
UR_STRUCTURE_TYPE_EXP_WIN32_HANDLE = 0x2004, ///< ::ur_exp_win32_handle_t
280280
UR_STRUCTURE_TYPE_EXP_SAMPLER_ADDR_MODES = 0x2005, ///< ::ur_exp_sampler_addr_modes_t
281+
UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES = 0x2006, ///< ::ur_exp_sampler_cubemap_properties_t
281282
/// @cond
282283
UR_STRUCTURE_TYPE_FORCE_UINT32 = 0x7fffffff
283284
/// @endcond
@@ -1623,6 +1624,10 @@ typedef enum ur_device_info_t {
16231624
///< semaphore resources
16241625
UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP = 0x200F, ///< [::ur_bool_t] returns true if the device supports exporting internal
16251626
///< event resources
1627+
UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP = 0x2010, ///< [::ur_bool_t] returns true if the device supports allocating and
1628+
///< accessing cubemap resources
1629+
UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP = 0x2011, ///< [::ur_bool_t] returns true if the device supports sampling cubemapped
1630+
///< images across face boundaries
16261631
/// @cond
16271632
UR_DEVICE_INFO_FORCE_UINT32 = 0x7fffffff
16281633
/// @endcond
@@ -1648,7 +1653,7 @@ typedef enum ur_device_info_t {
16481653
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
16491654
/// + `NULL == hDevice`
16501655
/// - ::UR_RESULT_ERROR_INVALID_ENUMERATION
1651-
/// + `::UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP < propName`
1656+
/// + `::UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP < propName`
16521657
/// - ::UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION
16531658
/// + If `propName` is not supported by the adapter.
16541659
/// - ::UR_RESULT_ERROR_INVALID_SIZE
@@ -2419,13 +2424,14 @@ typedef enum ur_mem_flag_t {
24192424
///////////////////////////////////////////////////////////////////////////////
24202425
/// @brief Memory types
24212426
typedef enum ur_mem_type_t {
2422-
UR_MEM_TYPE_BUFFER = 0, ///< Buffer object
2423-
UR_MEM_TYPE_IMAGE2D = 1, ///< 2D image object
2424-
UR_MEM_TYPE_IMAGE3D = 2, ///< 3D image object
2425-
UR_MEM_TYPE_IMAGE2D_ARRAY = 3, ///< 2D image array object
2426-
UR_MEM_TYPE_IMAGE1D = 4, ///< 1D image object
2427-
UR_MEM_TYPE_IMAGE1D_ARRAY = 5, ///< 1D image array object
2428-
UR_MEM_TYPE_IMAGE1D_BUFFER = 6, ///< 1D image buffer object
2427+
UR_MEM_TYPE_BUFFER = 0, ///< Buffer object
2428+
UR_MEM_TYPE_IMAGE2D = 1, ///< 2D image object
2429+
UR_MEM_TYPE_IMAGE3D = 2, ///< 3D image object
2430+
UR_MEM_TYPE_IMAGE2D_ARRAY = 3, ///< 2D image array object
2431+
UR_MEM_TYPE_IMAGE1D = 4, ///< 1D image object
2432+
UR_MEM_TYPE_IMAGE1D_ARRAY = 5, ///< 1D image array object
2433+
UR_MEM_TYPE_IMAGE1D_BUFFER = 6, ///< 1D image buffer object
2434+
UR_MEM_TYPE_IMAGE_CUBEMAP_EXP = 0x2000, ///< Experimental cubemap image object
24292435
/// @cond
24302436
UR_MEM_TYPE_FORCE_UINT32 = 0x7fffffff
24312437
/// @endcond
@@ -7185,6 +7191,17 @@ typedef enum ur_exp_image_copy_flag_t {
71857191
/// @brief Bit Mask for validating ur_exp_image_copy_flags_t
71867192
#define UR_EXP_IMAGE_COPY_FLAGS_MASK 0xfffffff8
71877193

7194+
///////////////////////////////////////////////////////////////////////////////
7195+
/// @brief Sampler cubemap seamless filtering mode.
7196+
typedef enum ur_exp_sampler_cubemap_filter_mode_t {
7197+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED = 0, ///< Disable seamless filtering
7198+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS = 1, ///< Enable Seamless filtering
7199+
/// @cond
7200+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_FORCE_UINT32 = 0x7fffffff
7201+
/// @endcond
7202+
7203+
} ur_exp_sampler_cubemap_filter_mode_t;
7204+
71887205
///////////////////////////////////////////////////////////////////////////////
71897206
/// @brief File descriptor
71907207
typedef struct ur_exp_file_descriptor_t {
@@ -7239,6 +7256,21 @@ typedef struct ur_exp_sampler_addr_modes_t {
72397256

72407257
} ur_exp_sampler_addr_modes_t;
72417258

7259+
///////////////////////////////////////////////////////////////////////////////
7260+
/// @brief Describes cubemap sampler properties
7261+
///
7262+
/// @details
7263+
/// - Specify these properties in ::urSamplerCreate via ::ur_sampler_desc_t
7264+
/// as part of a `pNext` chain.
7265+
typedef struct ur_exp_sampler_cubemap_properties_t {
7266+
ur_structure_type_t stype; ///< [in] type of this structure, must be
7267+
///< ::UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES
7268+
void *pNext; ///< [in,out][optional] pointer to extension-specific structure
7269+
ur_exp_sampler_cubemap_filter_mode_t cubemapFilterMode; ///< [in] enables or disables seamless cubemap filtering between cubemap
7270+
///< faces
7271+
7272+
} ur_exp_sampler_cubemap_properties_t;
7273+
72427274
///////////////////////////////////////////////////////////////////////////////
72437275
/// @brief Describes an interop memory resource descriptor
72447276
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);
@@ -1068,6 +1070,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_structure_type_t value
10681070
case UR_STRUCTURE_TYPE_EXP_SAMPLER_ADDR_MODES:
10691071
os << "UR_STRUCTURE_TYPE_EXP_SAMPLER_ADDR_MODES";
10701072
break;
1073+
case UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES:
1074+
os << "UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES";
1075+
break;
10711076
default:
10721077
os << "unknown enumerator";
10731078
break;
@@ -1319,6 +1324,11 @@ inline ur_result_t printStruct(std::ostream &os, const void *ptr) {
13191324
const ur_exp_sampler_addr_modes_t *pstruct = (const ur_exp_sampler_addr_modes_t *)ptr;
13201325
printPtr(os, pstruct);
13211326
} break;
1327+
1328+
case UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES: {
1329+
const ur_exp_sampler_cubemap_properties_t *pstruct = (const ur_exp_sampler_cubemap_properties_t *)ptr;
1330+
printPtr(os, pstruct);
1331+
} break;
13221332
default:
13231333
os << "unknown enumerator";
13241334
return UR_RESULT_ERROR_INVALID_ENUMERATION;
@@ -2540,6 +2550,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_device_info_t value) {
25402550
case UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP:
25412551
os << "UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP";
25422552
break;
2553+
case UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP:
2554+
os << "UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP";
2555+
break;
2556+
case UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP:
2557+
os << "UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP";
2558+
break;
25432559
default:
25442560
os << "unknown enumerator";
25452561
break;
@@ -4144,6 +4160,30 @@ inline ur_result_t printTagged(std::ostream &os, const void *ptr, ur_device_info
41444160

41454161
os << ")";
41464162
} break;
4163+
case UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP: {
4164+
const ur_bool_t *tptr = (const ur_bool_t *)ptr;
4165+
if (sizeof(ur_bool_t) > size) {
4166+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(ur_bool_t) << ")";
4167+
return UR_RESULT_ERROR_INVALID_SIZE;
4168+
}
4169+
os << (const void *)(tptr) << " (";
4170+
4171+
os << *tptr;
4172+
4173+
os << ")";
4174+
} break;
4175+
case UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP: {
4176+
const ur_bool_t *tptr = (const ur_bool_t *)ptr;
4177+
if (sizeof(ur_bool_t) > size) {
4178+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(ur_bool_t) << ")";
4179+
return UR_RESULT_ERROR_INVALID_SIZE;
4180+
}
4181+
os << (const void *)(tptr) << " (";
4182+
4183+
os << *tptr;
4184+
4185+
os << ")";
4186+
} break;
41474187
default:
41484188
os << "unknown enumerator";
41494189
return UR_RESULT_ERROR_INVALID_ENUMERATION;
@@ -5320,6 +5360,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_mem_type_t value) {
53205360
case UR_MEM_TYPE_IMAGE1D_BUFFER:
53215361
os << "UR_MEM_TYPE_IMAGE1D_BUFFER";
53225362
break;
5363+
case UR_MEM_TYPE_IMAGE_CUBEMAP_EXP:
5364+
os << "UR_MEM_TYPE_IMAGE_CUBEMAP_EXP";
5365+
break;
53235366
default:
53245367
os << "unknown enumerator";
53255368
break;
@@ -9128,6 +9171,24 @@ inline ur_result_t printFlag<ur_exp_image_copy_flag_t>(std::ostream &os, uint32_
91289171
}
91299172
} // namespace ur::details
91309173
///////////////////////////////////////////////////////////////////////////////
9174+
/// @brief Print operator for the ur_exp_sampler_cubemap_filter_mode_t type
9175+
/// @returns
9176+
/// std::ostream &
9177+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_sampler_cubemap_filter_mode_t value) {
9178+
switch (value) {
9179+
case UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED:
9180+
os << "UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED";
9181+
break;
9182+
case UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS:
9183+
os << "UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS";
9184+
break;
9185+
default:
9186+
os << "unknown enumerator";
9187+
break;
9188+
}
9189+
return os;
9190+
}
9191+
///////////////////////////////////////////////////////////////////////////////
91319192
/// @brief Print operator for the ur_exp_file_descriptor_t type
91329193
/// @returns
91339194
/// std::ostream &
@@ -9250,6 +9311,31 @@ inline std::ostream &operator<<(std::ostream &os, const struct ur_exp_sampler_ad
92509311
return os;
92519312
}
92529313
///////////////////////////////////////////////////////////////////////////////
9314+
/// @brief Print operator for the ur_exp_sampler_cubemap_properties_t type
9315+
/// @returns
9316+
/// std::ostream &
9317+
inline std::ostream &operator<<(std::ostream &os, const struct ur_exp_sampler_cubemap_properties_t params) {
9318+
os << "(struct ur_exp_sampler_cubemap_properties_t){";
9319+
9320+
os << ".stype = ";
9321+
9322+
os << (params.stype);
9323+
9324+
os << ", ";
9325+
os << ".pNext = ";
9326+
9327+
ur::details::printStruct(os,
9328+
(params.pNext));
9329+
9330+
os << ", ";
9331+
os << ".cubemapFilterMode = ";
9332+
9333+
os << (params.cubemapFilterMode);
9334+
9335+
os << "}";
9336+
return os;
9337+
}
9338+
///////////////////////////////////////////////////////////////////////////////
92539339
/// @brief Print operator for the ur_exp_interop_mem_desc_t type
92549340
/// @returns
92559341
/// 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)