Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 51 additions & 5 deletions intercept/src/cli_ext.h
Original file line number Diff line number Diff line change
Expand Up @@ -1122,11 +1122,6 @@ cl_int CL_API_CALL clSetKernelArgDevicePointerEXT(
#define CL_PARTITION_BY_COUNTS_LIST_END_EXT 0x0
#define CL_PARTITION_BY_NAMES_LIST_END_EXT -1

///////////////////////////////////////////////////////////////////////////////
// cl_ext_immutable_memory_objects

#define CL_MEM_IMMUTABLE_EXT (1 << 6)

///////////////////////////////////////////////////////////////////////////////
// cl_ext_float_atomics

Expand Down Expand Up @@ -1173,6 +1168,21 @@ cl_int CL_API_CALL clGetImageRequirementsInfoEXT(
void* param_value,
size_t* param_value_size_ret);

///////////////////////////////////////////////////////////////////////////////
// cl_ext_image_unsigned_10x6_12x4_14x2

#define CL_UNSIGNED_INT10X6_EXT 0x10E6
#define CL_UNSIGNED_INT12X4_EXT 0x10E7
#define CL_UNSIGNED_INT14X2_EXT 0x10E8
#define CL_UNORM_INT10X6_EXT 0x10E1
#define CL_UNORM_INT12X4_EXT 0x10E9
#define CL_UNORM_INT14X2_EXT 0x10EA

///////////////////////////////////////////////////////////////////////////////
// cl_ext_immutable_memory_objects

#define CL_MEM_IMMUTABLE_EXT (1 << 6)

///////////////////////////////////////////////////////////////////////////////
// cl_altera_compiler_mode

Expand Down Expand Up @@ -1303,6 +1313,27 @@ cl_int CL_API_CALL clGetImageRequirementsInfoEXT(

#define CL_DEVICE_MEMORY_CAPABILITIES_IMG 0x40D8

///////////////////////////////////////////////////////////////////////////////
// cl_img_safety_mechanisms

#define CL_CONTEXT_SAFETY_PROPERTIES_IMG 0x40D9

#define CL_DEVICE_WORKGROUP_PROTECTION_SVM_CAPABILITIES_IMG 0x40DA
#define CL_DEVICE_WORKGROUP_PROTECTION_DEVICE_ENQUEUE_CAPABILITIES_IMG 0x40DB
#define CL_DEVICE_SAFETY_MEM_SIZE_IMG 0x40DC

#define CL_ECC_RECOVERED_IMG 0x40DD
#define CL_PAGE_FAULT_IMG -1127
#define CL_SAFETY_FAULT_IMG -1128
#define CL_GENERAL_FAULT_IMG -1129
#define CL_ECC_UNRECOVERED_IMG -1130

///////////////////////////////////////////////////////////////////////////////
// cl_img_unified_svm_external_memory_dma_buf

#define CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_VIRTUAL_ADDRESS_IMG 0x4220
#define CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_IMG 0x4221

///////////////////////////////////////////////////////////////////////////////
// cl_img_yuv_image

Expand Down Expand Up @@ -1945,6 +1976,21 @@ cl_mem CL_API_CALL clCreateBufferNV(

#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8

///////////////////////////////////////////////////////////////////////////////
// cl_qcom_perf_hint

#define CL_PERF_HINT_HIGH_QCOM 0x40C3
#define CL_PERF_HINT_NORMAL_QCOM 0x40C4
#define CL_PERF_HINT_LOW_QCOM 0x40C5
#define CL_CONTEXT_PERF_HINT_QCOM 0x40C2

typedef cl_uint cl_perf_hint_qcom;

extern CL_API_ENTRY
cl_int CL_API_CALL clSetPerfHintQCOM(
cl_context context,
cl_perf_hint_qcom perf_hint) ;

///////////////////////////////////////////////////////////////////////////////
// Unofficial MDAPI extension:

Expand Down
37 changes: 37 additions & 0 deletions intercept/src/dispatch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8779,6 +8779,43 @@ CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9ObjectsINTEL(
}
#endif

///////////////////////////////////////////////////////////////////////////////
//
// cl_qcom_perf_hint
CL_API_ENTRY cl_int CL_API_CALL clSetPerfHintQCOM(
cl_context context,
cl_perf_hint_qcom perf_hint)
{
CLIntercept* pIntercept = GetIntercept();

if( pIntercept )
{
const auto& dispatchX = pIntercept->dispatchX(context);
if( dispatchX.clSetPerfHintQCOM )
{
GET_ENQUEUE_COUNTER();

CALL_LOGGING_ENTER( "context = %p, perf_hint = %s (%llX)",
context,
pIntercept->enumName().name( perf_hint ).c_str(),
perf_hint );
HOST_PERFORMANCE_TIMING_START();

cl_int retVal = dispatchX.clSetPerfHintQCOM(
context,
perf_hint );

HOST_PERFORMANCE_TIMING_END();
CHECK_ERROR( retVal );
CALL_LOGGING_EXIT( retVal );

return retVal;
}
}

NULL_FUNCTION_POINTER_RETURN_ERROR(CL_INVALID_CONTEXT);
}

///////////////////////////////////////////////////////////////////////////////
//
// Unofficial MDAPI extension:
Expand Down
5 changes: 5 additions & 0 deletions intercept/src/dispatch.h
Original file line number Diff line number Diff line change
Expand Up @@ -539,6 +539,11 @@ struct CLdispatchX
void* param_value,
size_t* param_value_size_ret);

// cl_qcom_perf_hint
cl_int (CL_API_CALL *clSetPerfHintQCOM) (
cl_context context,
cl_perf_hint_qcom perf_hint);

// Unofficial MDAPI extension:
cl_command_queue (CL_API_CALL *clCreatePerfCountersCommandQueueINTEL) (
cl_context context,
Expand Down
29 changes: 29 additions & 0 deletions intercept/src/enummap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -947,6 +947,14 @@ CEnumNameMap::CEnumNameMap()
ADD_ENUM_NAME( m_cl_int, CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT );
ADD_ENUM_NAME( m_cl_int, CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT );

// cl_ext_image_unsigned_10x6_12x4_14x2
ADD_ENUM_NAME( m_cl_int, CL_UNSIGNED_INT10X6_EXT );
ADD_ENUM_NAME( m_cl_int, CL_UNSIGNED_INT12X4_EXT );
ADD_ENUM_NAME( m_cl_int, CL_UNSIGNED_INT14X2_EXT );
ADD_ENUM_NAME( m_cl_int, CL_UNORM_INT10X6_EXT );
ADD_ENUM_NAME( m_cl_int, CL_UNORM_INT12X4_EXT );
ADD_ENUM_NAME( m_cl_int, CL_UNORM_INT14X2_EXT );

// cl_ext_immutable_memory_objects
ADD_ENUM_NAME( m_cl_mem_flags, CL_MEM_IMMUTABLE_EXT );

Expand Down Expand Up @@ -1037,6 +1045,21 @@ CEnumNameMap::CEnumNameMap()
ADD_ENUM_NAME( m_cl_int, CL_MEM_ALLOC_FLAGS_IMG );
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_MEMORY_CAPABILITIES_IMG );

// cl_img_safety_mechanisms
ADD_ENUM_NAME( m_cl_int, CL_CONTEXT_SAFETY_PROPERTIES_IMG );
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_WORKGROUP_PROTECTION_SVM_CAPABILITIES_IMG );
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_WORKGROUP_PROTECTION_DEVICE_ENQUEUE_CAPABILITIES_IMG );
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_SAFETY_MEM_SIZE_IMG );
ADD_ENUM_NAME( m_cl_int, CL_ECC_RECOVERED_IMG );
ADD_ENUM_NAME( m_cl_int, CL_PAGE_FAULT_IMG );
ADD_ENUM_NAME( m_cl_int, CL_SAFETY_FAULT_IMG );
ADD_ENUM_NAME( m_cl_int, CL_GENERAL_FAULT_IMG );
ADD_ENUM_NAME( m_cl_int, CL_ECC_UNRECOVERED_IMG );

// cl_img_unified_svm_external_memory_dma_buf
ADD_ENUM_NAME( m_cl_int, CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_VIRTUAL_ADDRESS_IMG );
ADD_ENUM_NAME( m_cl_int, CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_IMG );

// cl_img_yuv_image
ADD_ENUM_NAME( m_cl_int, CL_NV21_IMG );
ADD_ENUM_NAME( m_cl_int, CL_YV12_IMG );
Expand Down Expand Up @@ -1281,6 +1304,12 @@ CEnumNameMap::CEnumNameMap()
// cl_qcom_ion_host_ptr extension
ADD_ENUM_NAME( m_cl_int, CL_MEM_ION_HOST_PTR_QCOM );

// cl_qcom_perf_hint
ADD_ENUM_NAME( m_cl_int, CL_PERF_HINT_HIGH_QCOM );
ADD_ENUM_NAME( m_cl_int, CL_PERF_HINT_NORMAL_QCOM );
ADD_ENUM_NAME( m_cl_int, CL_PERF_HINT_LOW_QCOM );
ADD_ENUM_NAME( m_cl_int, CL_CONTEXT_PERF_HINT_QCOM );

// Unofficial MDAPI extension:
ADD_ENUM_NAME( m_cl_int, CL_QUEUE_MDAPI_PROPERTIES_INTEL );
ADD_ENUM_NAME( m_cl_int, CL_QUEUE_MDAPI_CONFIGURATION_INTEL );
Expand Down
41 changes: 36 additions & 5 deletions intercept/src/intercept.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2281,6 +2281,14 @@ void CLIntercept::getContextPropertiesString(
str += enumName().name_bool( value );
}
break;
case CL_CONTEXT_MEMORY_INITIALIZE_KHR: // cl_context_memory_initialize_khr
case CL_CONTEXT_SAFETY_PROPERTIES_IMG: // cl_context_safety_properties_img
{
const cl_ulong* pu = (const cl_ulong*)( properties + 1);
CLI_SPRINTF( s, 256, "0x%" PRIx64, pu[0] );
str += s;
}
break;
case CL_PRINTF_BUFFERSIZE_ARM:
{
const size_t* psz = (const size_t*)( properties + 1);
Expand All @@ -2289,9 +2297,13 @@ void CLIntercept::getContextPropertiesString(
str += s;
}
break;
case CL_CONTEXT_MEMORY_INITIALIZE_KHR:
// TODO: this is a cl_context_memory_initialize_khr bitfield.
// Fall through for now.
case CL_CONTEXT_PERF_HINT_QCOM:
{
const cl_uint* pu = (const cl_uint*)( properties + 1);
cl_uint value = pu[0];
str += enumName().name( value );
}
break;
default:
{
CLI_SPRINTF( s, 256, "<Unknown %08X!>", (cl_uint)property );
Expand Down Expand Up @@ -2613,6 +2625,22 @@ void CLIntercept::getSVMAllocPropertiesString(
properties += 2;
}
break;
case CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_VIRTUAL_ADDRESS_IMG:
{
auto pptr = (const void**)( properties + 1);
CLI_SPRINTF( s, 256, "%p", pptr[0] );
str += s;
properties += 2;
}
break;
case CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_IMG:
{
auto pfd = (const int*)( properties + 1);
CLI_SPRINTF( s, 256, "%d", pfd[0] );
str += s;
properties += 2;
}
break;
default:
{
CLI_SPRINTF( s, 256, "<Unknown %08X!>", (cl_uint)property );
Expand Down Expand Up @@ -2786,8 +2814,8 @@ void CLIntercept::getSemaphorePropertiesString(
case CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR:
case CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR:
{
auto pfd = (const void**)( properties + 1);
CLI_SPRINTF( s, 256, "%p", pfd[0] );
auto ph = (const void**)( properties + 1);
CLI_SPRINTF( s, 256, "%p", ph[0] );
str += s;
properties += 2;
}
Expand Down Expand Up @@ -13709,6 +13737,9 @@ void* CLIntercept::getExtensionFunctionAddress(
// cl_ext_image_requirements_info
CHECK_RETURN_EXTENSION_FUNCTION( clGetImageRequirementsInfoEXT );

// cl_qcom_perf_hint
CHECK_RETURN_EXTENSION_FUNCTION( clSetPerfHintQCOM );

// Unofficial MDAPI extension:
CHECK_RETURN_EXTENSION_FUNCTION( clCreatePerfCountersCommandQueueINTEL );
CHECK_RETURN_EXTENSION_FUNCTION( clSetPerformanceConfigurationINTEL );
Expand Down