#ifndef __OPENCL_CL_ADDITIONS_H_
#define __OPENCL_CL_ADDITIONS_H_

/*
This file contains additions that are not part of the cl.h file
(either removed from an older version or not yet added to an official version)
This file is a trimmed down version of the file found at //devtools/main/CommonProjects/AMDTOSWrappers/Include/CL/.
It is expected that this file will go away when moving to an APPSDK version that officially supports OCL 2.0
This file is maintained by the CodeXL team and does not come from the driver tree.
*/

#ifdef __cplusplus
extern "C" {
#endif


/*******************************************
    * Shared Virtual Memory (SVM) extension
    * The declarations match the order, naming and values of the original 2.0
    * standard, except for the fact that we added the _AMD suffix to each
    * symbol
    *******************************************/
typedef cl_bitfield                      cl_device_svm_capabilities_amd;
typedef cl_bitfield                      cl_svm_mem_flags_amd;
typedef cl_uint                          cl_kernel_exec_info_amd;

/* cl_device_info */
#define CL_DEVICE_SVM_CAPABILITIES_AMD                     0x1053
#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT_AMD  0x1054

/* cl_device_svm_capabilities_amd */
#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_AMD             (1 << 0)
#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_AMD               (1 << 1)
#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_AMD               (1 << 2)
#define CL_DEVICE_SVM_ATOMICS_AMD                         (1 << 3)

/* cl_svm_mem_flags_amd */
#define CL_MEM_SVM_FINE_GRAIN_BUFFER_AMD                  (1 << 10)
#define CL_MEM_SVM_ATOMICS_AMD                            (1 << 11)

/* cl_mem_info */
#define CL_MEM_USES_SVM_POINTER_AMD                       0x1109

/* cl_kernel_exec_info_amd */
#define CL_KERNEL_EXEC_INFO_SVM_PTRS_AMD                  0x11B6
#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_AMD     0x11B7

/* cl_command_type */
#define CL_COMMAND_SVM_FREE_AMD                           0x1209
#define CL_COMMAND_SVM_MEMCPY_AMD                         0x120A
#define CL_COMMAND_SVM_MEMFILL_AMD                        0x120B
#define CL_COMMAND_SVM_MAP_AMD                            0x120C
#define CL_COMMAND_SVM_UNMAP_AMD                          0x120D

typedef CL_API_ENTRY void*
(CL_API_CALL * clSVMAllocAMD_fn)(
    cl_context            /* context */,
    cl_svm_mem_flags_amd  /* flags */,
    size_t                /* size */,
    unsigned int          /* alignment */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY void
(CL_API_CALL * clSVMFreeAMD_fn)(
    cl_context  /* context */,
    void*       /* svm_pointer */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clEnqueueSVMFreeAMD_fn)(
    cl_command_queue /* command_queue */,
    cl_uint          /* num_svm_pointers */,
    void**           /* svm_pointers */,
    void (CL_CALLBACK *)( /*pfn_free_func*/
        cl_command_queue /* queue */,
        cl_uint          /* num_svm_pointers */,
        void**           /* svm_pointers */,
        void*            /* user_data */),
    void*             /* user_data */,
    cl_uint           /* num_events_in_wait_list */,
    const cl_event*   /* event_wait_list */,
    cl_event*         /* event */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clEnqueueSVMMemcpyAMD_fn)(
    cl_command_queue /* command_queue */,
    cl_bool          /* blocking_copy */,
    void*            /* dst_ptr */,
    const void*      /* src_ptr */,
    size_t           /* size */,
    cl_uint          /* num_events_in_wait_list */,
    const cl_event*  /* event_wait_list */,
    cl_event*        /* event */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clEnqueueSVMMemFillAMD_fn)(
    cl_command_queue /* command_queue */,
    void*            /* svm_ptr */,
    const void*      /* pattern */,
    size_t           /* pattern_size */,
    size_t           /* size */,
    cl_uint          /* num_events_in_wait_list */,
    const cl_event*  /* event_wait_list */,
    cl_event*        /* event */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clEnqueueSVMMapAMD_fn)(
    cl_command_queue /* command_queue */,
    cl_bool          /* blocking_map */,
    cl_map_flags     /* map_flags */,
    void*            /* svm_ptr */,
    size_t           /* size */,
    cl_uint          /* num_events_in_wait_list */,
    const cl_event*  /* event_wait_list */,
    cl_event*        /* event */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clEnqueueSVMUnmapAMD_fn)(
    cl_command_queue /* command_queue */,
    void*            /* svm_ptr */,
    cl_uint          /* num_events_in_wait_list */,
    const cl_event*  /* event_wait_list */,
    cl_event*        /* event */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clSetKernelArgSVMPointerAMD_fn)(
    cl_kernel     /* kernel */,
    cl_uint       /* arg_index */,
    const void *  /* arg_value */
) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clSetKernelExecInfoAMD_fn)(
        cl_kernel                /* kernel */,
        cl_kernel_exec_info_amd  /* param_name */,
        size_t                   /* param_value_size */,
        const void *             /* param_value */
) CL_EXT_SUFFIX__VERSION_1_2;

// The following are the amd_internal bits that are missing from the public version of cl_ext.h

// <amd_internal>
/***************************
* cl_amd_command_intercept *
***************************/
#define CL_CONTEXT_COMMAND_INTERCEPT_CALLBACK_AMD   0x403D
#define CL_QUEUE_COMMAND_INTERCEPT_ENABLE_AMD       (1ull << 63)

typedef cl_int (CL_CALLBACK * intercept_callback_fn)(cl_event, cl_int *);

/**************************
* cl_amd_command_queue_info *
**************************/
#define CL_QUEUE_THREAD_HANDLE_AMD                  0x403E

/***************************************
* cl-gl depth buffer interop extension *
****************************************/

#define CL_UNORM_INT24                              0x10DF
#define CL_GL_NUM_SAMPLES                           0x2012
// </amd_internal>

// <amd_internal>
/*************************
* cl_amd_object_metadata *
**************************/
#define cl_amd_object_metadata 1

typedef size_t cl_key_amd;

#define CL_INVALID_OBJECT_AMD    0x403A
#define CL_INVALID_KEY_AMD       0x403B
#define CL_PLATFORM_MAX_KEYS_AMD 0x403C

typedef CL_API_ENTRY cl_key_amd (CL_API_CALL * clCreateKeyAMD_fn)(
    cl_platform_id      /* platform */,
    void (CL_CALLBACK * /* destructor */)( void* /* old_value */),
    cl_int *            /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;

typedef CL_API_ENTRY cl_int (CL_API_CALL * clObjectGetValueForKeyAMD_fn)(
    void *               /* object */,
    cl_key_amd           /* key */,
    void **              /* ret_val */) CL_API_SUFFIX__VERSION_1_1;

typedef CL_API_ENTRY cl_int (CL_API_CALL * clObjectSetValueForKeyAMD_fn)(
    void *               /* object */,
    cl_key_amd           /* key */,
    void *               /* value */) CL_API_SUFFIX__VERSION_1_1;
// </amd_internal>

/*********************************
* cl_amd_device_attribute_query *
*********************************/
#ifndef CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD
    #define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD     0x4030
#endif

#ifndef CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD
    #define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD           0x4031
#endif

#ifndef CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD
    #define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD    0x4033
#endif

#ifndef CL_DEVICE_PCIE_ID_AMD
    #define CL_DEVICE_PCIE_ID_AMD                       0x4034
#endif

/**********************
* cl_amd_liquid_flash *
***********************/
#define cl_amd_liquid_flash 1

#define CL_COMMAND_READ_SSG_FILE_AMD 0x4083
#define CL_COMMAND_WRITE_SSG_FILE_AMD  0x4087

#define CL_INVALID_FILE_OBJECT_AMD 0x4084

typedef struct _cl_file_amd * cl_file_amd;

typedef cl_uint cl_file_flags_amd;
#define CL_FILE_READ_ONLY_AMD   (1 << 0)
#define CL_FILE_WRITE_ONLY_AMD  (1 << 1)
#define CL_FILE_READ_WRITE_AMD  (1 << 2)

typedef cl_uint cl_file_info_amd;
#define CL_FILE_BLOCK_SIZE_AMD 0x4085
#define CL_FILE_SIZE_AMD       0x4086

typedef CL_API_ENTRY cl_file_amd
(CL_API_CALL * clCreateSsgFileObjectAMD_fn)(cl_context /*context*/,
    cl_file_flags_amd /*flags*/,
    const wchar_t * /*file_name*/,
    cl_int * /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clGetSsgFileObjectInfoAMD_fn)(cl_file_amd /* file */,
    cl_file_info_amd /* param_name */,
    size_t /* param_value_size */,
    void * /* param_value */,
    size_t * /* param_value_size_ret */) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clRetainSsgFileObjectAMD_fn)(cl_file_amd /*file*/) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clReleaseSsgFileObjectAMD_fn)(cl_file_amd /*file*/) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clEnqueueReadSsgFileAMD_fn)(cl_command_queue /*command_queue*/,
    cl_mem /*buffer*/,
    cl_bool /*blocking_write*/,
    size_t /*buffer_offset*/,
    size_t /*cb*/,
    cl_file_amd /*file*/,
    size_t /*file_offset*/,
    cl_uint /*num_events_in_wait_list*/,
    const cl_event * /*event_wait_list*/,
    cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2;

typedef CL_API_ENTRY cl_int
(CL_API_CALL * clEnqueueWriteSsgFileAMD_fn)(cl_command_queue /*command_queue*/,
    cl_mem /*buffer*/,
    cl_bool /*blocking_read*/,
    size_t /*buffer_offset*/,
    size_t /*cb*/,
    cl_file_amd /*file*/,
    size_t /*file_offset*/,
    cl_uint /*num_events_in_wait_list*/,
    const cl_event * /*event_wait_list*/,
    cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2;

#ifdef __cplusplus
}
#endif

#endif  /* __OPENCL_CL_ADDITIONS_H_ */
