Skip to content

Commit b20b5ff

Browse files
authored
add tracing for a few more extensions (#445)
* add tracing for cl_ext_image_unsigned_10x6_12x4_14x2 * add tracing for cl_img_safety_mechanisms * add support for a few more extensions cl_img_unified_svm_external_memory_dma_buf cl_qcom_perf_hint * remove trailing whitespace * fix call logging string
1 parent 60c044e commit b20b5ff

File tree

5 files changed

+158
-10
lines changed

5 files changed

+158
-10
lines changed

intercept/src/cli_ext.h

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,11 +1122,6 @@ cl_int CL_API_CALL clSetKernelArgDevicePointerEXT(
11221122
#define CL_PARTITION_BY_COUNTS_LIST_END_EXT 0x0
11231123
#define CL_PARTITION_BY_NAMES_LIST_END_EXT -1
11241124

1125-
///////////////////////////////////////////////////////////////////////////////
1126-
// cl_ext_immutable_memory_objects
1127-
1128-
#define CL_MEM_IMMUTABLE_EXT (1 << 6)
1129-
11301125
///////////////////////////////////////////////////////////////////////////////
11311126
// cl_ext_float_atomics
11321127

@@ -1173,6 +1168,21 @@ cl_int CL_API_CALL clGetImageRequirementsInfoEXT(
11731168
void* param_value,
11741169
size_t* param_value_size_ret);
11751170

1171+
///////////////////////////////////////////////////////////////////////////////
1172+
// cl_ext_image_unsigned_10x6_12x4_14x2
1173+
1174+
#define CL_UNSIGNED_INT10X6_EXT 0x10E6
1175+
#define CL_UNSIGNED_INT12X4_EXT 0x10E7
1176+
#define CL_UNSIGNED_INT14X2_EXT 0x10E8
1177+
#define CL_UNORM_INT10X6_EXT 0x10E1
1178+
#define CL_UNORM_INT12X4_EXT 0x10E9
1179+
#define CL_UNORM_INT14X2_EXT 0x10EA
1180+
1181+
///////////////////////////////////////////////////////////////////////////////
1182+
// cl_ext_immutable_memory_objects
1183+
1184+
#define CL_MEM_IMMUTABLE_EXT (1 << 6)
1185+
11761186
///////////////////////////////////////////////////////////////////////////////
11771187
// cl_altera_compiler_mode
11781188

@@ -1303,6 +1313,27 @@ cl_int CL_API_CALL clGetImageRequirementsInfoEXT(
13031313

13041314
#define CL_DEVICE_MEMORY_CAPABILITIES_IMG 0x40D8
13051315

1316+
///////////////////////////////////////////////////////////////////////////////
1317+
// cl_img_safety_mechanisms
1318+
1319+
#define CL_CONTEXT_SAFETY_PROPERTIES_IMG 0x40D9
1320+
1321+
#define CL_DEVICE_WORKGROUP_PROTECTION_SVM_CAPABILITIES_IMG 0x40DA
1322+
#define CL_DEVICE_WORKGROUP_PROTECTION_DEVICE_ENQUEUE_CAPABILITIES_IMG 0x40DB
1323+
#define CL_DEVICE_SAFETY_MEM_SIZE_IMG 0x40DC
1324+
1325+
#define CL_ECC_RECOVERED_IMG 0x40DD
1326+
#define CL_PAGE_FAULT_IMG -1127
1327+
#define CL_SAFETY_FAULT_IMG -1128
1328+
#define CL_GENERAL_FAULT_IMG -1129
1329+
#define CL_ECC_UNRECOVERED_IMG -1130
1330+
1331+
///////////////////////////////////////////////////////////////////////////////
1332+
// cl_img_unified_svm_external_memory_dma_buf
1333+
1334+
#define CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_VIRTUAL_ADDRESS_IMG 0x4220
1335+
#define CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_IMG 0x4221
1336+
13061337
///////////////////////////////////////////////////////////////////////////////
13071338
// cl_img_yuv_image
13081339

@@ -1945,6 +1976,21 @@ cl_mem CL_API_CALL clCreateBufferNV(
19451976

19461977
#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8
19471978

1979+
///////////////////////////////////////////////////////////////////////////////
1980+
// cl_qcom_perf_hint
1981+
1982+
#define CL_PERF_HINT_HIGH_QCOM 0x40C3
1983+
#define CL_PERF_HINT_NORMAL_QCOM 0x40C4
1984+
#define CL_PERF_HINT_LOW_QCOM 0x40C5
1985+
#define CL_CONTEXT_PERF_HINT_QCOM 0x40C2
1986+
1987+
typedef cl_uint cl_perf_hint_qcom;
1988+
1989+
extern CL_API_ENTRY
1990+
cl_int CL_API_CALL clSetPerfHintQCOM(
1991+
cl_context context,
1992+
cl_perf_hint_qcom perf_hint) ;
1993+
19481994
///////////////////////////////////////////////////////////////////////////////
19491995
// Unofficial MDAPI extension:
19501996

intercept/src/dispatch.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8779,6 +8779,43 @@ CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9ObjectsINTEL(
87798779
}
87808780
#endif
87818781

8782+
///////////////////////////////////////////////////////////////////////////////
8783+
//
8784+
// cl_qcom_perf_hint
8785+
CL_API_ENTRY cl_int CL_API_CALL clSetPerfHintQCOM(
8786+
cl_context context,
8787+
cl_perf_hint_qcom perf_hint)
8788+
{
8789+
CLIntercept* pIntercept = GetIntercept();
8790+
8791+
if( pIntercept )
8792+
{
8793+
const auto& dispatchX = pIntercept->dispatchX(context);
8794+
if( dispatchX.clSetPerfHintQCOM )
8795+
{
8796+
GET_ENQUEUE_COUNTER();
8797+
8798+
CALL_LOGGING_ENTER( "context = %p, perf_hint = %s (%llX)",
8799+
context,
8800+
pIntercept->enumName().name( perf_hint ).c_str(),
8801+
perf_hint );
8802+
HOST_PERFORMANCE_TIMING_START();
8803+
8804+
cl_int retVal = dispatchX.clSetPerfHintQCOM(
8805+
context,
8806+
perf_hint );
8807+
8808+
HOST_PERFORMANCE_TIMING_END();
8809+
CHECK_ERROR( retVal );
8810+
CALL_LOGGING_EXIT( retVal );
8811+
8812+
return retVal;
8813+
}
8814+
}
8815+
8816+
NULL_FUNCTION_POINTER_RETURN_ERROR(CL_INVALID_CONTEXT);
8817+
}
8818+
87828819
///////////////////////////////////////////////////////////////////////////////
87838820
//
87848821
// Unofficial MDAPI extension:

intercept/src/dispatch.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,11 @@ struct CLdispatchX
539539
void* param_value,
540540
size_t* param_value_size_ret);
541541

542+
// cl_qcom_perf_hint
543+
cl_int (CL_API_CALL *clSetPerfHintQCOM) (
544+
cl_context context,
545+
cl_perf_hint_qcom perf_hint);
546+
542547
// Unofficial MDAPI extension:
543548
cl_command_queue (CL_API_CALL *clCreatePerfCountersCommandQueueINTEL) (
544549
cl_context context,

intercept/src/enummap.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,14 @@ CEnumNameMap::CEnumNameMap()
947947
ADD_ENUM_NAME( m_cl_int, CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT );
948948
ADD_ENUM_NAME( m_cl_int, CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT );
949949

950+
// cl_ext_image_unsigned_10x6_12x4_14x2
951+
ADD_ENUM_NAME( m_cl_int, CL_UNSIGNED_INT10X6_EXT );
952+
ADD_ENUM_NAME( m_cl_int, CL_UNSIGNED_INT12X4_EXT );
953+
ADD_ENUM_NAME( m_cl_int, CL_UNSIGNED_INT14X2_EXT );
954+
ADD_ENUM_NAME( m_cl_int, CL_UNORM_INT10X6_EXT );
955+
ADD_ENUM_NAME( m_cl_int, CL_UNORM_INT12X4_EXT );
956+
ADD_ENUM_NAME( m_cl_int, CL_UNORM_INT14X2_EXT );
957+
950958
// cl_ext_immutable_memory_objects
951959
ADD_ENUM_NAME( m_cl_mem_flags, CL_MEM_IMMUTABLE_EXT );
952960

@@ -1037,6 +1045,21 @@ CEnumNameMap::CEnumNameMap()
10371045
ADD_ENUM_NAME( m_cl_int, CL_MEM_ALLOC_FLAGS_IMG );
10381046
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_MEMORY_CAPABILITIES_IMG );
10391047

1048+
// cl_img_safety_mechanisms
1049+
ADD_ENUM_NAME( m_cl_int, CL_CONTEXT_SAFETY_PROPERTIES_IMG );
1050+
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_WORKGROUP_PROTECTION_SVM_CAPABILITIES_IMG );
1051+
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_WORKGROUP_PROTECTION_DEVICE_ENQUEUE_CAPABILITIES_IMG );
1052+
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_SAFETY_MEM_SIZE_IMG );
1053+
ADD_ENUM_NAME( m_cl_int, CL_ECC_RECOVERED_IMG );
1054+
ADD_ENUM_NAME( m_cl_int, CL_PAGE_FAULT_IMG );
1055+
ADD_ENUM_NAME( m_cl_int, CL_SAFETY_FAULT_IMG );
1056+
ADD_ENUM_NAME( m_cl_int, CL_GENERAL_FAULT_IMG );
1057+
ADD_ENUM_NAME( m_cl_int, CL_ECC_UNRECOVERED_IMG );
1058+
1059+
// cl_img_unified_svm_external_memory_dma_buf
1060+
ADD_ENUM_NAME( m_cl_int, CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_VIRTUAL_ADDRESS_IMG );
1061+
ADD_ENUM_NAME( m_cl_int, CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_IMG );
1062+
10401063
// cl_img_yuv_image
10411064
ADD_ENUM_NAME( m_cl_int, CL_NV21_IMG );
10421065
ADD_ENUM_NAME( m_cl_int, CL_YV12_IMG );
@@ -1281,6 +1304,12 @@ CEnumNameMap::CEnumNameMap()
12811304
// cl_qcom_ion_host_ptr extension
12821305
ADD_ENUM_NAME( m_cl_int, CL_MEM_ION_HOST_PTR_QCOM );
12831306

1307+
// cl_qcom_perf_hint
1308+
ADD_ENUM_NAME( m_cl_int, CL_PERF_HINT_HIGH_QCOM );
1309+
ADD_ENUM_NAME( m_cl_int, CL_PERF_HINT_NORMAL_QCOM );
1310+
ADD_ENUM_NAME( m_cl_int, CL_PERF_HINT_LOW_QCOM );
1311+
ADD_ENUM_NAME( m_cl_int, CL_CONTEXT_PERF_HINT_QCOM );
1312+
12841313
// Unofficial MDAPI extension:
12851314
ADD_ENUM_NAME( m_cl_int, CL_QUEUE_MDAPI_PROPERTIES_INTEL );
12861315
ADD_ENUM_NAME( m_cl_int, CL_QUEUE_MDAPI_CONFIGURATION_INTEL );

intercept/src/intercept.cpp

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2281,6 +2281,14 @@ void CLIntercept::getContextPropertiesString(
22812281
str += enumName().name_bool( value );
22822282
}
22832283
break;
2284+
case CL_CONTEXT_MEMORY_INITIALIZE_KHR: // cl_context_memory_initialize_khr
2285+
case CL_CONTEXT_SAFETY_PROPERTIES_IMG: // cl_context_safety_properties_img
2286+
{
2287+
const cl_ulong* pu = (const cl_ulong*)( properties + 1);
2288+
CLI_SPRINTF( s, 256, "0x%" PRIx64, pu[0] );
2289+
str += s;
2290+
}
2291+
break;
22842292
case CL_PRINTF_BUFFERSIZE_ARM:
22852293
{
22862294
const size_t* psz = (const size_t*)( properties + 1);
@@ -2289,9 +2297,13 @@ void CLIntercept::getContextPropertiesString(
22892297
str += s;
22902298
}
22912299
break;
2292-
case CL_CONTEXT_MEMORY_INITIALIZE_KHR:
2293-
// TODO: this is a cl_context_memory_initialize_khr bitfield.
2294-
// Fall through for now.
2300+
case CL_CONTEXT_PERF_HINT_QCOM:
2301+
{
2302+
const cl_uint* pu = (const cl_uint*)( properties + 1);
2303+
cl_uint value = pu[0];
2304+
str += enumName().name( value );
2305+
}
2306+
break;
22952307
default:
22962308
{
22972309
CLI_SPRINTF( s, 256, "<Unknown %08X!>", (cl_uint)property );
@@ -2613,6 +2625,22 @@ void CLIntercept::getSVMAllocPropertiesString(
26132625
properties += 2;
26142626
}
26152627
break;
2628+
case CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_VIRTUAL_ADDRESS_IMG:
2629+
{
2630+
auto pptr = (const void**)( properties + 1);
2631+
CLI_SPRINTF( s, 256, "%p", pptr[0] );
2632+
str += s;
2633+
properties += 2;
2634+
}
2635+
break;
2636+
case CL_SVM_ALLOC_EXTERNAL_MEMORY_DMA_BUF_IMG:
2637+
{
2638+
auto pfd = (const int*)( properties + 1);
2639+
CLI_SPRINTF( s, 256, "%d", pfd[0] );
2640+
str += s;
2641+
properties += 2;
2642+
}
2643+
break;
26162644
default:
26172645
{
26182646
CLI_SPRINTF( s, 256, "<Unknown %08X!>", (cl_uint)property );
@@ -2786,8 +2814,8 @@ void CLIntercept::getSemaphorePropertiesString(
27862814
case CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR:
27872815
case CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR:
27882816
{
2789-
auto pfd = (const void**)( properties + 1);
2790-
CLI_SPRINTF( s, 256, "%p", pfd[0] );
2817+
auto ph = (const void**)( properties + 1);
2818+
CLI_SPRINTF( s, 256, "%p", ph[0] );
27912819
str += s;
27922820
properties += 2;
27932821
}
@@ -13709,6 +13737,9 @@ void* CLIntercept::getExtensionFunctionAddress(
1370913737
// cl_ext_image_requirements_info
1371013738
CHECK_RETURN_EXTENSION_FUNCTION( clGetImageRequirementsInfoEXT );
1371113739

13740+
// cl_qcom_perf_hint
13741+
CHECK_RETURN_EXTENSION_FUNCTION( clSetPerfHintQCOM );
13742+
1371213743
// Unofficial MDAPI extension:
1371313744
CHECK_RETURN_EXTENSION_FUNCTION( clCreatePerfCountersCommandQueueINTEL );
1371413745
CHECK_RETURN_EXTENSION_FUNCTION( clSetPerformanceConfigurationINTEL );

0 commit comments

Comments
 (0)