Skip to content

Commit 26cc04e

Browse files
aarongreigkbenzie
authored andcommitted
Merge pull request #1433 from Seanst98/sean/cubemaps-UR
[Bindless][CUDA] Add support for cubemaps
1 parent 410c023 commit 26cc04e

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
@@ -1625,6 +1626,10 @@ typedef enum ur_device_info_t {
16251626
///< semaphore resources
16261627
UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP = 0x200F, ///< [::ur_bool_t] returns true if the device supports exporting internal
16271628
///< event resources
1629+
UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP = 0x2010, ///< [::ur_bool_t] returns true if the device supports allocating and
1630+
///< accessing cubemap resources
1631+
UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP = 0x2011, ///< [::ur_bool_t] returns true if the device supports sampling cubemapped
1632+
///< images across face boundaries
16281633
/// @cond
16291634
UR_DEVICE_INFO_FORCE_UINT32 = 0x7fffffff
16301635
/// @endcond
@@ -1650,7 +1655,7 @@ typedef enum ur_device_info_t {
16501655
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
16511656
/// + `NULL == hDevice`
16521657
/// - ::UR_RESULT_ERROR_INVALID_ENUMERATION
1653-
/// + `::UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP < propName`
1658+
/// + `::UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP < propName`
16541659
/// - ::UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION
16551660
/// + If `propName` is not supported by the adapter.
16561661
/// - ::UR_RESULT_ERROR_INVALID_SIZE
@@ -2421,13 +2426,14 @@ typedef enum ur_mem_flag_t {
24212426
///////////////////////////////////////////////////////////////////////////////
24222427
/// @brief Memory types
24232428
typedef enum ur_mem_type_t {
2424-
UR_MEM_TYPE_BUFFER = 0, ///< Buffer object
2425-
UR_MEM_TYPE_IMAGE2D = 1, ///< 2D image object
2426-
UR_MEM_TYPE_IMAGE3D = 2, ///< 3D image object
2427-
UR_MEM_TYPE_IMAGE2D_ARRAY = 3, ///< 2D image array object
2428-
UR_MEM_TYPE_IMAGE1D = 4, ///< 1D image object
2429-
UR_MEM_TYPE_IMAGE1D_ARRAY = 5, ///< 1D image array object
2430-
UR_MEM_TYPE_IMAGE1D_BUFFER = 6, ///< 1D image buffer object
2429+
UR_MEM_TYPE_BUFFER = 0, ///< Buffer object
2430+
UR_MEM_TYPE_IMAGE2D = 1, ///< 2D image object
2431+
UR_MEM_TYPE_IMAGE3D = 2, ///< 3D image object
2432+
UR_MEM_TYPE_IMAGE2D_ARRAY = 3, ///< 2D image array object
2433+
UR_MEM_TYPE_IMAGE1D = 4, ///< 1D image object
2434+
UR_MEM_TYPE_IMAGE1D_ARRAY = 5, ///< 1D image array object
2435+
UR_MEM_TYPE_IMAGE1D_BUFFER = 6, ///< 1D image buffer object
2436+
UR_MEM_TYPE_IMAGE_CUBEMAP_EXP = 0x2000, ///< Experimental cubemap image object
24312437
/// @cond
24322438
UR_MEM_TYPE_FORCE_UINT32 = 0x7fffffff
24332439
/// @endcond
@@ -7238,6 +7244,17 @@ typedef enum ur_exp_image_copy_flag_t {
72387244
/// @brief Bit Mask for validating ur_exp_image_copy_flags_t
72397245
#define UR_EXP_IMAGE_COPY_FLAGS_MASK 0xfffffff8
72407246

7247+
///////////////////////////////////////////////////////////////////////////////
7248+
/// @brief Sampler cubemap seamless filtering mode.
7249+
typedef enum ur_exp_sampler_cubemap_filter_mode_t {
7250+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED = 0, ///< Disable seamless filtering
7251+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS = 1, ///< Enable Seamless filtering
7252+
/// @cond
7253+
UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_FORCE_UINT32 = 0x7fffffff
7254+
/// @endcond
7255+
7256+
} ur_exp_sampler_cubemap_filter_mode_t;
7257+
72417258
///////////////////////////////////////////////////////////////////////////////
72427259
/// @brief File descriptor
72437260
typedef struct ur_exp_file_descriptor_t {
@@ -7292,6 +7309,21 @@ typedef struct ur_exp_sampler_addr_modes_t {
72927309

72937310
} ur_exp_sampler_addr_modes_t;
72947311

7312+
///////////////////////////////////////////////////////////////////////////////
7313+
/// @brief Describes cubemap sampler properties
7314+
///
7315+
/// @details
7316+
/// - Specify these properties in ::urSamplerCreate via ::ur_sampler_desc_t
7317+
/// as part of a `pNext` chain.
7318+
typedef struct ur_exp_sampler_cubemap_properties_t {
7319+
ur_structure_type_t stype; ///< [in] type of this structure, must be
7320+
///< ::UR_STRUCTURE_TYPE_EXP_SAMPLER_CUBEMAP_PROPERTIES
7321+
void *pNext; ///< [in,out][optional] pointer to extension-specific structure
7322+
ur_exp_sampler_cubemap_filter_mode_t cubemapFilterMode; ///< [in] enables or disables seamless cubemap filtering between cubemap
7323+
///< faces
7324+
7325+
} ur_exp_sampler_cubemap_properties_t;
7326+
72957327
///////////////////////////////////////////////////////////////////////////////
72967328
/// @brief Describes an interop memory resource descriptor
72977329
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;
@@ -2546,6 +2556,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_device_info_t value) {
25462556
case UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP:
25472557
os << "UR_DEVICE_INFO_INTEROP_SEMAPHORE_EXPORT_SUPPORT_EXP";
25482558
break;
2559+
case UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP:
2560+
os << "UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP";
2561+
break;
2562+
case UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP:
2563+
os << "UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP";
2564+
break;
25492565
default:
25502566
os << "unknown enumerator";
25512567
break;
@@ -4150,6 +4166,30 @@ inline ur_result_t printTagged(std::ostream &os, const void *ptr, ur_device_info
41504166

41514167
os << ")";
41524168
} break;
4169+
case UR_DEVICE_INFO_CUBEMAP_SUPPORT_EXP: {
4170+
const ur_bool_t *tptr = (const ur_bool_t *)ptr;
4171+
if (sizeof(ur_bool_t) > size) {
4172+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(ur_bool_t) << ")";
4173+
return UR_RESULT_ERROR_INVALID_SIZE;
4174+
}
4175+
os << (const void *)(tptr) << " (";
4176+
4177+
os << *tptr;
4178+
4179+
os << ")";
4180+
} break;
4181+
case UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP: {
4182+
const ur_bool_t *tptr = (const ur_bool_t *)ptr;
4183+
if (sizeof(ur_bool_t) > size) {
4184+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(ur_bool_t) << ")";
4185+
return UR_RESULT_ERROR_INVALID_SIZE;
4186+
}
4187+
os << (const void *)(tptr) << " (";
4188+
4189+
os << *tptr;
4190+
4191+
os << ")";
4192+
} break;
41534193
default:
41544194
os << "unknown enumerator";
41554195
return UR_RESULT_ERROR_INVALID_ENUMERATION;
@@ -5326,6 +5366,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_mem_type_t value) {
53265366
case UR_MEM_TYPE_IMAGE1D_BUFFER:
53275367
os << "UR_MEM_TYPE_IMAGE1D_BUFFER";
53285368
break;
5369+
case UR_MEM_TYPE_IMAGE_CUBEMAP_EXP:
5370+
os << "UR_MEM_TYPE_IMAGE_CUBEMAP_EXP";
5371+
break;
53295372
default:
53305373
os << "unknown enumerator";
53315374
break;
@@ -9137,6 +9180,24 @@ inline ur_result_t printFlag<ur_exp_image_copy_flag_t>(std::ostream &os, uint32_
91379180
}
91389181
} // namespace ur::details
91399182
///////////////////////////////////////////////////////////////////////////////
9183+
/// @brief Print operator for the ur_exp_sampler_cubemap_filter_mode_t type
9184+
/// @returns
9185+
/// std::ostream &
9186+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_sampler_cubemap_filter_mode_t value) {
9187+
switch (value) {
9188+
case UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED:
9189+
os << "UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_DISJOINTED";
9190+
break;
9191+
case UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS:
9192+
os << "UR_EXP_SAMPLER_CUBEMAP_FILTER_MODE_SEAMLESS";
9193+
break;
9194+
default:
9195+
os << "unknown enumerator";
9196+
break;
9197+
}
9198+
return os;
9199+
}
9200+
///////////////////////////////////////////////////////////////////////////////
91409201
/// @brief Print operator for the ur_exp_file_descriptor_t type
91419202
/// @returns
91429203
/// std::ostream &
@@ -9259,6 +9320,31 @@ inline std::ostream &operator<<(std::ostream &os, const struct ur_exp_sampler_ad
92599320
return os;
92609321
}
92619322
///////////////////////////////////////////////////////////////////////////////
9323+
/// @brief Print operator for the ur_exp_sampler_cubemap_properties_t type
9324+
/// @returns
9325+
/// std::ostream &
9326+
inline std::ostream &operator<<(std::ostream &os, const struct ur_exp_sampler_cubemap_properties_t params) {
9327+
os << "(struct ur_exp_sampler_cubemap_properties_t){";
9328+
9329+
os << ".stype = ";
9330+
9331+
os << (params.stype);
9332+
9333+
os << ", ";
9334+
os << ".pNext = ";
9335+
9336+
ur::details::printStruct(os,
9337+
(params.pNext));
9338+
9339+
os << ", ";
9340+
os << ".cubemapFilterMode = ";
9341+
9342+
os << (params.cubemapFilterMode);
9343+
9344+
os << "}";
9345+
return os;
9346+
}
9347+
///////////////////////////////////////////////////////////////////////////////
92629348
/// @brief Print operator for the ur_exp_interop_mem_desc_t type
92639349
/// @returns
92649350
/// 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)