Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:45:13

0001 //===- Auto-generated file, part of the LLVM/Offload project --------------===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 // Auto-generated file, do not manually edit.
0010 
0011 #pragma once
0012 
0013 #include <stddef.h>
0014 #include <stdint.h>
0015 
0016 #if defined(__cplusplus)
0017 extern "C" {
0018 #endif
0019 
0020 ///////////////////////////////////////////////////////////////////////////////
0021 #ifndef OL_VERSION_MAJOR
0022 /// @brief Major version of the Offload API
0023 #define OL_VERSION_MAJOR 0
0024 #endif // OL_VERSION_MAJOR
0025 
0026 ///////////////////////////////////////////////////////////////////////////////
0027 #ifndef OL_VERSION_MINOR
0028 /// @brief Minor version of the Offload API
0029 #define OL_VERSION_MINOR 0
0030 #endif // OL_VERSION_MINOR
0031 
0032 ///////////////////////////////////////////////////////////////////////////////
0033 #ifndef OL_VERSION_PATCH
0034 /// @brief Patch version of the Offload API
0035 #define OL_VERSION_PATCH 1
0036 #endif // OL_VERSION_PATCH
0037 
0038 ///////////////////////////////////////////////////////////////////////////////
0039 #ifndef OL_APICALL
0040 #if defined(_WIN32)
0041 /// @brief Calling convention for all API functions
0042 #define OL_APICALL __cdecl
0043 #else
0044 #define OL_APICALL
0045 #endif // defined(_WIN32)
0046 #endif // OL_APICALL
0047 
0048 ///////////////////////////////////////////////////////////////////////////////
0049 #ifndef OL_APIEXPORT
0050 #if defined(_WIN32)
0051 /// @brief Microsoft-specific dllexport storage-class attribute
0052 #define OL_APIEXPORT __declspec(dllexport)
0053 #else
0054 #define OL_APIEXPORT
0055 #endif // defined(_WIN32)
0056 #endif // OL_APIEXPORT
0057 
0058 ///////////////////////////////////////////////////////////////////////////////
0059 #ifndef OL_DLLEXPORT
0060 #if defined(_WIN32)
0061 /// @brief Microsoft-specific dllexport storage-class attribute
0062 #define OL_DLLEXPORT __declspec(dllexport)
0063 #endif // defined(_WIN32)
0064 #endif // OL_DLLEXPORT
0065 
0066 ///////////////////////////////////////////////////////////////////////////////
0067 #ifndef OL_DLLEXPORT
0068 #if __GNUC__ >= 4
0069 /// @brief GCC-specific dllexport storage-class attribute
0070 #define OL_DLLEXPORT __attribute__((visibility("default")))
0071 #else
0072 #define OL_DLLEXPORT
0073 #endif // __GNUC__ >= 4
0074 #endif // OL_DLLEXPORT
0075 
0076 ///////////////////////////////////////////////////////////////////////////////
0077 /// @brief Handle of a platform instance
0078 typedef struct ol_platform_handle_t_ *ol_platform_handle_t;
0079 
0080 ///////////////////////////////////////////////////////////////////////////////
0081 /// @brief Handle of platform's device object
0082 typedef struct ol_device_handle_t_ *ol_device_handle_t;
0083 
0084 ///////////////////////////////////////////////////////////////////////////////
0085 /// @brief Handle of context object
0086 typedef struct ol_context_handle_t_ *ol_context_handle_t;
0087 
0088 ///////////////////////////////////////////////////////////////////////////////
0089 /// @brief Defines Return/Error codes
0090 typedef enum ol_errc_t {
0091   /// Success
0092   OL_ERRC_SUCCESS = 0,
0093   /// Invalid Value
0094   OL_ERRC_INVALID_VALUE = 1,
0095   /// Invalid platform
0096   OL_ERRC_INVALID_PLATFORM = 2,
0097   /// Device not found
0098   OL_ERRC_DEVICE_NOT_FOUND = 3,
0099   /// Invalid device
0100   OL_ERRC_INVALID_DEVICE = 4,
0101   /// Device hung, reset, was removed, or driver update occurred
0102   OL_ERRC_DEVICE_LOST = 5,
0103   /// plugin is not initialized or specific entry-point is not implemented
0104   OL_ERRC_UNINITIALIZED = 6,
0105   /// Out of resources
0106   OL_ERRC_OUT_OF_RESOURCES = 7,
0107   /// generic error code for unsupported versions
0108   OL_ERRC_UNSUPPORTED_VERSION = 8,
0109   /// generic error code for unsupported features
0110   OL_ERRC_UNSUPPORTED_FEATURE = 9,
0111   /// generic error code for invalid arguments
0112   OL_ERRC_INVALID_ARGUMENT = 10,
0113   /// handle argument is not valid
0114   OL_ERRC_INVALID_NULL_HANDLE = 11,
0115   /// pointer argument may not be nullptr
0116   OL_ERRC_INVALID_NULL_POINTER = 12,
0117   /// invalid size or dimensions (e.g., must not be zero, or is out of bounds)
0118   OL_ERRC_INVALID_SIZE = 13,
0119   /// enumerator argument is not valid
0120   OL_ERRC_INVALID_ENUMERATION = 14,
0121   /// enumerator argument is not supported by the device
0122   OL_ERRC_UNSUPPORTED_ENUMERATION = 15,
0123   /// Unknown or internal error
0124   OL_ERRC_UNKNOWN = 16,
0125   /// @cond
0126   OL_ERRC_FORCE_UINT32 = 0x7fffffff
0127   /// @endcond
0128 
0129 } ol_errc_t;
0130 
0131 ///////////////////////////////////////////////////////////////////////////////
0132 /// @brief Details of the error condition returned by an API call
0133 typedef struct ol_error_struct_t {
0134   ol_errc_t Code;      /// The error code
0135   const char *Details; /// String containing error details
0136 } ol_error_struct_t;
0137 
0138 ///////////////////////////////////////////////////////////////////////////////
0139 /// @brief Result type returned by all entry points.
0140 typedef const ol_error_struct_t *ol_result_t;
0141 
0142 ///////////////////////////////////////////////////////////////////////////////
0143 #ifndef OL_SUCCESS
0144 /// @brief Success condition
0145 #define OL_SUCCESS NULL
0146 #endif // OL_SUCCESS
0147 
0148 ///////////////////////////////////////////////////////////////////////////////
0149 /// @brief Code location information that can optionally be associated with an
0150 /// API call
0151 typedef struct ol_code_location_t {
0152   const char *FunctionName; /// Function name
0153   const char *SourceFile;   /// Source code file
0154   uint32_t LineNumber;      /// Source code line number
0155   uint32_t ColumnNumber;    /// Source code column number
0156 } ol_code_location_t;
0157 
0158 ///////////////////////////////////////////////////////////////////////////////
0159 /// @brief Perform initialization of the Offload library and plugins
0160 ///
0161 /// @details
0162 ///    - This must be the first API call made by a user of the Offload library
0163 ///    - Each call will increment an internal reference count that is
0164 ///    decremented by `olShutDown`
0165 ///
0166 /// @returns
0167 ///     - ::OL_RESULT_SUCCESS
0168 ///     - ::OL_ERRC_UNINITIALIZED
0169 ///     - ::OL_ERRC_DEVICE_LOST
0170 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0171 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0172 OL_APIEXPORT ol_result_t OL_APICALL olInit();
0173 
0174 ///////////////////////////////////////////////////////////////////////////////
0175 /// @brief Release the resources in use by Offload
0176 ///
0177 /// @details
0178 ///    - This decrements an internal reference count. When this reaches 0, all
0179 ///    resources will be released
0180 ///    - Subsequent API calls made after this are not valid
0181 ///
0182 /// @returns
0183 ///     - ::OL_RESULT_SUCCESS
0184 ///     - ::OL_ERRC_UNINITIALIZED
0185 ///     - ::OL_ERRC_DEVICE_LOST
0186 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0187 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0188 OL_APIEXPORT ol_result_t OL_APICALL olShutDown();
0189 
0190 ///////////////////////////////////////////////////////////////////////////////
0191 /// @brief Retrieves all available platforms
0192 ///
0193 /// @details
0194 ///    - Multiple calls to this function will return identical platforms
0195 ///    handles, in the same order.
0196 ///
0197 /// @returns
0198 ///     - ::OL_RESULT_SUCCESS
0199 ///     - ::OL_ERRC_UNINITIALIZED
0200 ///     - ::OL_ERRC_DEVICE_LOST
0201 ///     - ::OL_ERRC_INVALID_SIZE
0202 ///         + `NumEntries == 0`
0203 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0204 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0205 ///         + `NULL == Platforms`
0206 OL_APIEXPORT ol_result_t OL_APICALL olGetPlatform(
0207     // [in] The number of platforms to be added to Platforms. NumEntries must be
0208     // greater than zero.
0209     uint32_t NumEntries,
0210     // [out] Array of handle of platforms. If NumEntries is less than the number
0211     // of platforms available, then olGetPlatform shall only retrieve that
0212     // number of platforms.
0213     ol_platform_handle_t *Platforms);
0214 
0215 ///////////////////////////////////////////////////////////////////////////////
0216 /// @brief Retrieves the number of available platforms
0217 ///
0218 /// @details
0219 ///
0220 /// @returns
0221 ///     - ::OL_RESULT_SUCCESS
0222 ///     - ::OL_ERRC_UNINITIALIZED
0223 ///     - ::OL_ERRC_DEVICE_LOST
0224 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0225 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0226 ///         + `NULL == NumPlatforms`
0227 OL_APIEXPORT ol_result_t OL_APICALL olGetPlatformCount(
0228     // [out] returns the total number of platforms available.
0229     uint32_t *NumPlatforms);
0230 
0231 ///////////////////////////////////////////////////////////////////////////////
0232 /// @brief Supported platform info
0233 typedef enum ol_platform_info_t {
0234   /// [char[]] The string denoting name of the platform. The size of the info
0235   /// needs to be dynamically queried.
0236   OL_PLATFORM_INFO_NAME = 0,
0237   /// [char[]] The string denoting name of the vendor of the platform. The size
0238   /// of the info needs to be dynamically queried.
0239   OL_PLATFORM_INFO_VENDOR_NAME = 1,
0240   /// [char[]] The string denoting the version of the platform. The size of the
0241   /// info needs to be dynamically queried.
0242   OL_PLATFORM_INFO_VERSION = 2,
0243   /// [ol_platform_backend_t] The native backend of the platform.
0244   OL_PLATFORM_INFO_BACKEND = 3,
0245   /// @cond
0246   OL_PLATFORM_INFO_FORCE_UINT32 = 0x7fffffff
0247   /// @endcond
0248 
0249 } ol_platform_info_t;
0250 
0251 ///////////////////////////////////////////////////////////////////////////////
0252 /// @brief Identifies the native backend of the platform
0253 typedef enum ol_platform_backend_t {
0254   /// The backend is not recognized
0255   OL_PLATFORM_BACKEND_UNKNOWN = 0,
0256   /// The backend is CUDA
0257   OL_PLATFORM_BACKEND_CUDA = 1,
0258   /// The backend is AMDGPU
0259   OL_PLATFORM_BACKEND_AMDGPU = 2,
0260   /// @cond
0261   OL_PLATFORM_BACKEND_FORCE_UINT32 = 0x7fffffff
0262   /// @endcond
0263 
0264 } ol_platform_backend_t;
0265 
0266 ///////////////////////////////////////////////////////////////////////////////
0267 /// @brief Queries the given property of the platform
0268 ///
0269 /// @details
0270 ///    - `olGetPlatformInfoSize` can be used to query the storage size required
0271 ///    for the given query.
0272 ///
0273 /// @returns
0274 ///     - ::OL_RESULT_SUCCESS
0275 ///     - ::OL_ERRC_UNINITIALIZED
0276 ///     - ::OL_ERRC_DEVICE_LOST
0277 ///     - ::OL_ERRC_UNSUPPORTED_ENUMERATION
0278 ///         + If `PropName` is not supported by the platform.
0279 ///     - ::OL_ERRC_INVALID_SIZE
0280 ///         + `PropSize == 0`
0281 ///         + If `PropSize` is less than the real number of bytes needed to
0282 ///         return the info.
0283 ///     - ::OL_ERRC_INVALID_PLATFORM
0284 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0285 ///         + `NULL == Platform`
0286 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0287 ///         + `NULL == PropValue`
0288 OL_APIEXPORT ol_result_t OL_APICALL olGetPlatformInfo(
0289     // [in] handle of the platform
0290     ol_platform_handle_t Platform,
0291     // [in] type of the info to retrieve
0292     ol_platform_info_t PropName,
0293     // [in] the number of bytes pointed to by pPlatformInfo.
0294     size_t PropSize,
0295     // [out] array of bytes holding the info. If Size is not equal to or greater
0296     // to the real number of bytes needed to return the info then the
0297     // OL_ERRC_INVALID_SIZE error is returned and pPlatformInfo is not used.
0298     void *PropValue);
0299 
0300 ///////////////////////////////////////////////////////////////////////////////
0301 /// @brief Returns the storage size of the given platform query
0302 ///
0303 /// @details
0304 ///
0305 /// @returns
0306 ///     - ::OL_RESULT_SUCCESS
0307 ///     - ::OL_ERRC_UNINITIALIZED
0308 ///     - ::OL_ERRC_DEVICE_LOST
0309 ///     - ::OL_ERRC_UNSUPPORTED_ENUMERATION
0310 ///         + If `PropName` is not supported by the platform.
0311 ///     - ::OL_ERRC_INVALID_PLATFORM
0312 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0313 ///         + `NULL == Platform`
0314 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0315 ///         + `NULL == PropSizeRet`
0316 OL_APIEXPORT ol_result_t OL_APICALL olGetPlatformInfoSize(
0317     // [in] handle of the platform
0318     ol_platform_handle_t Platform,
0319     // [in] type of the info to query
0320     ol_platform_info_t PropName,
0321     // [out] pointer to the number of bytes required to store the query
0322     size_t *PropSizeRet);
0323 
0324 ///////////////////////////////////////////////////////////////////////////////
0325 /// @brief Supported device types
0326 typedef enum ol_device_type_t {
0327   /// The default device type as preferred by the runtime
0328   OL_DEVICE_TYPE_DEFAULT = 0,
0329   /// Devices of all types
0330   OL_DEVICE_TYPE_ALL = 1,
0331   /// GPU device type
0332   OL_DEVICE_TYPE_GPU = 2,
0333   /// CPU device type
0334   OL_DEVICE_TYPE_CPU = 3,
0335   /// @cond
0336   OL_DEVICE_TYPE_FORCE_UINT32 = 0x7fffffff
0337   /// @endcond
0338 
0339 } ol_device_type_t;
0340 
0341 ///////////////////////////////////////////////////////////////////////////////
0342 /// @brief Supported device info
0343 typedef enum ol_device_info_t {
0344   /// [ol_device_type_t] type of the device
0345   OL_DEVICE_INFO_TYPE = 0,
0346   /// [ol_platform_handle_t] the platform associated with the device
0347   OL_DEVICE_INFO_PLATFORM = 1,
0348   /// [char[]] Device name
0349   OL_DEVICE_INFO_NAME = 2,
0350   /// [char[]] Device vendor
0351   OL_DEVICE_INFO_VENDOR = 3,
0352   /// [char[]] Driver version
0353   OL_DEVICE_INFO_DRIVER_VERSION = 4,
0354   /// @cond
0355   OL_DEVICE_INFO_FORCE_UINT32 = 0x7fffffff
0356   /// @endcond
0357 
0358 } ol_device_info_t;
0359 
0360 ///////////////////////////////////////////////////////////////////////////////
0361 /// @brief Retrieves the number of available devices within a platform
0362 ///
0363 /// @details
0364 ///
0365 /// @returns
0366 ///     - ::OL_RESULT_SUCCESS
0367 ///     - ::OL_ERRC_UNINITIALIZED
0368 ///     - ::OL_ERRC_DEVICE_LOST
0369 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0370 ///         + `NULL == Platform`
0371 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0372 ///         + `NULL == NumDevices`
0373 OL_APIEXPORT ol_result_t OL_APICALL olGetDeviceCount(
0374     // [in] handle of the platform instance
0375     ol_platform_handle_t Platform,
0376     // [out] pointer to the number of devices.
0377     uint32_t *NumDevices);
0378 
0379 ///////////////////////////////////////////////////////////////////////////////
0380 /// @brief Retrieves devices within a platform
0381 ///
0382 /// @details
0383 ///    - Multiple calls to this function will return identical device handles,
0384 ///    in the same order.
0385 ///
0386 /// @returns
0387 ///     - ::OL_RESULT_SUCCESS
0388 ///     - ::OL_ERRC_UNINITIALIZED
0389 ///     - ::OL_ERRC_DEVICE_LOST
0390 ///     - ::OL_ERRC_INVALID_SIZE
0391 ///         + `NumEntries == 0`
0392 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0393 ///         + `NULL == Platform`
0394 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0395 ///         + `NULL == Devices`
0396 OL_APIEXPORT ol_result_t OL_APICALL olGetDevice(
0397     // [in] handle of the platform instance
0398     ol_platform_handle_t Platform,
0399     // [in] the number of devices to be added to phDevices, which must be
0400     // greater than zero
0401     uint32_t NumEntries,
0402     // [out] Array of device handles. If NumEntries is less than the number of
0403     // devices available, then this function shall only retrieve that number of
0404     // devices.
0405     ol_device_handle_t *Devices);
0406 
0407 ///////////////////////////////////////////////////////////////////////////////
0408 /// @brief Queries the given property of the device
0409 ///
0410 /// @details
0411 ///
0412 /// @returns
0413 ///     - ::OL_RESULT_SUCCESS
0414 ///     - ::OL_ERRC_UNINITIALIZED
0415 ///     - ::OL_ERRC_DEVICE_LOST
0416 ///     - ::OL_ERRC_UNSUPPORTED_ENUMERATION
0417 ///         + If `PropName` is not supported by the device.
0418 ///     - ::OL_ERRC_INVALID_SIZE
0419 ///         + `PropSize == 0`
0420 ///         + If `PropSize` is less than the real number of bytes needed to
0421 ///         return the info.
0422 ///     - ::OL_ERRC_INVALID_DEVICE
0423 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0424 ///         + `NULL == Device`
0425 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0426 ///         + `NULL == PropValue`
0427 OL_APIEXPORT ol_result_t OL_APICALL olGetDeviceInfo(
0428     // [in] handle of the device instance
0429     ol_device_handle_t Device,
0430     // [in] type of the info to retrieve
0431     ol_device_info_t PropName,
0432     // [in] the number of bytes pointed to by PropValue.
0433     size_t PropSize,
0434     // [out] array of bytes holding the info. If PropSize is not equal to or
0435     // greater than the real number of bytes needed to return the info then the
0436     // OL_ERRC_INVALID_SIZE error is returned and PropValue is not used.
0437     void *PropValue);
0438 
0439 ///////////////////////////////////////////////////////////////////////////////
0440 /// @brief Returns the storage size of the given device query
0441 ///
0442 /// @details
0443 ///
0444 /// @returns
0445 ///     - ::OL_RESULT_SUCCESS
0446 ///     - ::OL_ERRC_UNINITIALIZED
0447 ///     - ::OL_ERRC_DEVICE_LOST
0448 ///     - ::OL_ERRC_UNSUPPORTED_ENUMERATION
0449 ///         + If `PropName` is not supported by the device.
0450 ///     - ::OL_ERRC_INVALID_DEVICE
0451 ///     - ::OL_ERRC_INVALID_NULL_HANDLE
0452 ///         + `NULL == Device`
0453 ///     - ::OL_ERRC_INVALID_NULL_POINTER
0454 ///         + `NULL == PropSizeRet`
0455 OL_APIEXPORT ol_result_t OL_APICALL olGetDeviceInfoSize(
0456     // [in] handle of the device instance
0457     ol_device_handle_t Device,
0458     // [in] type of the info to retrieve
0459     ol_device_info_t PropName,
0460     // [out] pointer to the number of bytes required to store the query
0461     size_t *PropSizeRet);
0462 
0463 ///////////////////////////////////////////////////////////////////////////////
0464 /// @brief Function parameters for olGetPlatform
0465 /// @details Each entry is a pointer to the parameter passed to the function;
0466 typedef struct ol_get_platform_params_t {
0467   uint32_t *pNumEntries;
0468   ol_platform_handle_t **pPlatforms;
0469 } ol_get_platform_params_t;
0470 
0471 ///////////////////////////////////////////////////////////////////////////////
0472 /// @brief Function parameters for olGetPlatformCount
0473 /// @details Each entry is a pointer to the parameter passed to the function;
0474 typedef struct ol_get_platform_count_params_t {
0475   uint32_t **pNumPlatforms;
0476 } ol_get_platform_count_params_t;
0477 
0478 ///////////////////////////////////////////////////////////////////////////////
0479 /// @brief Function parameters for olGetPlatformInfo
0480 /// @details Each entry is a pointer to the parameter passed to the function;
0481 typedef struct ol_get_platform_info_params_t {
0482   ol_platform_handle_t *pPlatform;
0483   ol_platform_info_t *pPropName;
0484   size_t *pPropSize;
0485   void **pPropValue;
0486 } ol_get_platform_info_params_t;
0487 
0488 ///////////////////////////////////////////////////////////////////////////////
0489 /// @brief Function parameters for olGetPlatformInfoSize
0490 /// @details Each entry is a pointer to the parameter passed to the function;
0491 typedef struct ol_get_platform_info_size_params_t {
0492   ol_platform_handle_t *pPlatform;
0493   ol_platform_info_t *pPropName;
0494   size_t **pPropSizeRet;
0495 } ol_get_platform_info_size_params_t;
0496 
0497 ///////////////////////////////////////////////////////////////////////////////
0498 /// @brief Function parameters for olGetDeviceCount
0499 /// @details Each entry is a pointer to the parameter passed to the function;
0500 typedef struct ol_get_device_count_params_t {
0501   ol_platform_handle_t *pPlatform;
0502   uint32_t **pNumDevices;
0503 } ol_get_device_count_params_t;
0504 
0505 ///////////////////////////////////////////////////////////////////////////////
0506 /// @brief Function parameters for olGetDevice
0507 /// @details Each entry is a pointer to the parameter passed to the function;
0508 typedef struct ol_get_device_params_t {
0509   ol_platform_handle_t *pPlatform;
0510   uint32_t *pNumEntries;
0511   ol_device_handle_t **pDevices;
0512 } ol_get_device_params_t;
0513 
0514 ///////////////////////////////////////////////////////////////////////////////
0515 /// @brief Function parameters for olGetDeviceInfo
0516 /// @details Each entry is a pointer to the parameter passed to the function;
0517 typedef struct ol_get_device_info_params_t {
0518   ol_device_handle_t *pDevice;
0519   ol_device_info_t *pPropName;
0520   size_t *pPropSize;
0521   void **pPropValue;
0522 } ol_get_device_info_params_t;
0523 
0524 ///////////////////////////////////////////////////////////////////////////////
0525 /// @brief Function parameters for olGetDeviceInfoSize
0526 /// @details Each entry is a pointer to the parameter passed to the function;
0527 typedef struct ol_get_device_info_size_params_t {
0528   ol_device_handle_t *pDevice;
0529   ol_device_info_t *pPropName;
0530   size_t **pPropSizeRet;
0531 } ol_get_device_info_size_params_t;
0532 
0533 ///////////////////////////////////////////////////////////////////////////////
0534 /// @brief Variant of olInit that also sets source code location information
0535 /// @details See also ::olInit
0536 OL_APIEXPORT ol_result_t OL_APICALL
0537 olInitWithCodeLoc(ol_code_location_t *CodeLocation);
0538 
0539 ///////////////////////////////////////////////////////////////////////////////
0540 /// @brief Variant of olShutDown that also sets source code location information
0541 /// @details See also ::olShutDown
0542 OL_APIEXPORT ol_result_t OL_APICALL
0543 olShutDownWithCodeLoc(ol_code_location_t *CodeLocation);
0544 
0545 ///////////////////////////////////////////////////////////////////////////////
0546 /// @brief Variant of olGetPlatform that also sets source code location
0547 /// information
0548 /// @details See also ::olGetPlatform
0549 OL_APIEXPORT ol_result_t OL_APICALL
0550 olGetPlatformWithCodeLoc(uint32_t NumEntries, ol_platform_handle_t *Platforms,
0551                          ol_code_location_t *CodeLocation);
0552 
0553 ///////////////////////////////////////////////////////////////////////////////
0554 /// @brief Variant of olGetPlatformCount that also sets source code location
0555 /// information
0556 /// @details See also ::olGetPlatformCount
0557 OL_APIEXPORT ol_result_t OL_APICALL olGetPlatformCountWithCodeLoc(
0558     uint32_t *NumPlatforms, ol_code_location_t *CodeLocation);
0559 
0560 ///////////////////////////////////////////////////////////////////////////////
0561 /// @brief Variant of olGetPlatformInfo that also sets source code location
0562 /// information
0563 /// @details See also ::olGetPlatformInfo
0564 OL_APIEXPORT ol_result_t OL_APICALL olGetPlatformInfoWithCodeLoc(
0565     ol_platform_handle_t Platform, ol_platform_info_t PropName, size_t PropSize,
0566     void *PropValue, ol_code_location_t *CodeLocation);
0567 
0568 ///////////////////////////////////////////////////////////////////////////////
0569 /// @brief Variant of olGetPlatformInfoSize that also sets source code location
0570 /// information
0571 /// @details See also ::olGetPlatformInfoSize
0572 OL_APIEXPORT ol_result_t OL_APICALL olGetPlatformInfoSizeWithCodeLoc(
0573     ol_platform_handle_t Platform, ol_platform_info_t PropName,
0574     size_t *PropSizeRet, ol_code_location_t *CodeLocation);
0575 
0576 ///////////////////////////////////////////////////////////////////////////////
0577 /// @brief Variant of olGetDeviceCount that also sets source code location
0578 /// information
0579 /// @details See also ::olGetDeviceCount
0580 OL_APIEXPORT ol_result_t OL_APICALL
0581 olGetDeviceCountWithCodeLoc(ol_platform_handle_t Platform, uint32_t *NumDevices,
0582                             ol_code_location_t *CodeLocation);
0583 
0584 ///////////////////////////////////////////////////////////////////////////////
0585 /// @brief Variant of olGetDevice that also sets source code location
0586 /// information
0587 /// @details See also ::olGetDevice
0588 OL_APIEXPORT ol_result_t OL_APICALL olGetDeviceWithCodeLoc(
0589     ol_platform_handle_t Platform, uint32_t NumEntries,
0590     ol_device_handle_t *Devices, ol_code_location_t *CodeLocation);
0591 
0592 ///////////////////////////////////////////////////////////////////////////////
0593 /// @brief Variant of olGetDeviceInfo that also sets source code location
0594 /// information
0595 /// @details See also ::olGetDeviceInfo
0596 OL_APIEXPORT ol_result_t OL_APICALL olGetDeviceInfoWithCodeLoc(
0597     ol_device_handle_t Device, ol_device_info_t PropName, size_t PropSize,
0598     void *PropValue, ol_code_location_t *CodeLocation);
0599 
0600 ///////////////////////////////////////////////////////////////////////////////
0601 /// @brief Variant of olGetDeviceInfoSize that also sets source code location
0602 /// information
0603 /// @details See also ::olGetDeviceInfoSize
0604 OL_APIEXPORT ol_result_t OL_APICALL olGetDeviceInfoSizeWithCodeLoc(
0605     ol_device_handle_t Device, ol_device_info_t PropName, size_t *PropSizeRet,
0606     ol_code_location_t *CodeLocation);
0607 
0608 #if defined(__cplusplus)
0609 } // extern "C"
0610 #endif