Skip to content

Commit 664e9a7

Browse files
authored
minor updates for recent extensions (#341)
* Add support for mutable dispatch asserts. * Disambiguate external memory and semaphore device handle lists. * Add CL_DEVICE_EXTERNAL_MEMORY_IMPORT_ASSUME_LINEAR_IMAGES_HANDLE_TYPES_KHR. * Add CL_SEMAPHORE_EXPORTABLE_KHR. * Add CL_QUEUE_COMPUTE_UNIT_LIMIT_ARM.
1 parent 0019d67 commit 664e9a7

File tree

5 files changed

+59
-16
lines changed

5 files changed

+59
-16
lines changed

intercept/src/cli_ext.h

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ clRemapCommandBufferKHR(
273273
///////////////////////////////////////////////////////////////////////////////
274274
// cl_khr_command_buffer_mutable_dispatch
275275

276-
// Note: This implements the provisional extension v0.9.0.
276+
// Note: This implements the provisional extension v0.9.1.
277277

278278
typedef cl_uint cl_command_buffer_structure_type_khr;
279279
typedef cl_bitfield cl_mutable_dispatch_fields_khr;
@@ -309,6 +309,7 @@ typedef struct _cl_mutable_base_config_khr {
309309
cl_uint num_mutable_dispatch;
310310
const cl_mutable_dispatch_config_khr* mutable_dispatch_list;
311311
} cl_mutable_base_config_khr;
312+
typedef cl_bitfield cl_mutable_dispatch_asserts_khr;
312313

313314
#define CL_COMMAND_BUFFER_MUTABLE_KHR (1 << 1)
314315

@@ -336,6 +337,12 @@ typedef struct _cl_mutable_base_config_khr {
336337
#define CL_STRUCTURE_TYPE_MUTABLE_BASE_CONFIG_KHR 0
337338
#define CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR 1
338339

340+
#define CL_COMMAND_BUFFER_MUTABLE_DISPATCH_ASSERTS_KHR 0x12B7
341+
342+
#define CL_MUTABLE_DISPATCH_ASSERTS_KHR 0x12B8
343+
344+
#define CL_MUTABLE_DISPATCH_ASSERT_NO_ADDITIONAL_WORK_GROUPS_KHR (1 << 0)
345+
339346
extern CL_API_ENTRY cl_int CL_API_CALL
340347
clUpdateMutableCommandsKHR(
341348
cl_command_buffer_khr command_buffer,
@@ -646,16 +653,17 @@ typedef struct _cl_name_version_khr
646653
///////////////////////////////////////////////////////////////////////////////
647654
// cl_khr_external_memory
648655

649-
// Note: This implements the provisional extension v0.9.0.
656+
// Note: This implements the provisional extension v0.9.3.
650657

651658
typedef cl_uint cl_external_memory_handle_type_khr;
652659

653660
#define CL_PLATFORM_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x2044
654661

655662
#define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x204F
663+
#define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_ASSUME_LINEAR_IMAGES_HANDLE_TYPES_KHR 0x2052
656664

657-
#define CL_DEVICE_HANDLE_LIST_KHR 0x2051
658-
#define CL_DEVICE_HANDLE_LIST_END_KHR 0
665+
#define CL_MEM_DEVICE_HANDLE_LIST_KHR 0x2051
666+
#define CL_MEM_DEVICE_HANDLE_LIST_END_KHR 0
659667

660668
#define CL_COMMAND_ACQUIRE_EXTERNAL_MEM_OBJECTS_KHR 0x2047
661669
#define CL_COMMAND_RELEASE_EXTERNAL_MEM_OBJECTS_KHR 0x2048
@@ -709,6 +717,8 @@ typedef cl_uint cl_external_semaphore_handle_type_khr;
709717
#define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x203F
710718
#define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_LIST_END_KHR 0
711719

720+
#define CL_SEMAPHORE_EXPORTABLE_KHR 0x2054
721+
712722
extern CL_API_ENTRY cl_int CL_API_CALL
713723
clGetSemaphoreHandleForTypeKHR(
714724
cl_semaphore_khr semaphore,
@@ -727,6 +737,14 @@ clGetSemaphoreHandleForTypeKHR(
727737
// cl_khr_external_semaphore_sync_fd
728738
#define CL_SEMAPHORE_HANDLE_SYNC_FD_KHR 0x2058
729739

740+
typedef cl_properties cl_semaphore_reimport_properties_khr;
741+
742+
extern CL_API_ENTRY cl_int CL_API_CALL
743+
clReImportSemaphoreSyncFdKHR(
744+
cl_semaphore_khr sema_object,
745+
cl_semaphore_reimport_properties_khr* reimport_props,
746+
int fd);
747+
730748
// cl_khr_external_semaphore_win32
731749
#define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR 0x2056
732750
#define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR 0x2057
@@ -782,6 +800,9 @@ cl_program CL_API_CALL clCreateProgramWithILKHR(
782800

783801
#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030
784802

803+
#define CL_CONTEXT_MEMORY_INITIALIZE_LOCAL_KHR (1 << 0)
804+
#define CL_CONTEXT_MEMORY_INITIALIZE_PRIVATE_KHR (1 << 1)
805+
785806
///////////////////////////////////////////////////////////////////////////////
786807
// cl_khr_integer_dot_product
787808

@@ -834,9 +855,8 @@ typedef cl_ulong cl_semaphore_payload_khr;
834855
#define CL_SEMAPHORE_PAYLOAD_KHR 0x203C
835856
#define CL_SEMAPHORE_TYPE_KHR 0x203D
836857

837-
// Shared with cl_khr_external_memory:
838-
//#define CL_DEVICE_HANDLE_LIST_KHR 0x2051
839-
//#define CL_DEVICE_HANDLE_LIST_END_KHR 0
858+
#define CL_SEMAPHORE_DEVICE_HANDLE_LIST_KHR 0x2053
859+
#define CL_SEMAPHORE_DEVICE_HANDLE_LIST_END_KHR 0
840860

841861
#define CL_COMMAND_SEMAPHORE_WAIT_KHR 0x2042
842862
#define CL_COMMAND_SEMAPHORE_SIGNAL_KHR 0x2043
@@ -1086,10 +1106,15 @@ cl_int CL_API_CALL clGetImageRequirementsInfoEXT(
10861106
#define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_ARM (1 << 1)
10871107
#define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_MODIFIER_ARM (1 << 2)
10881108
#define CL_DEVICE_SCHEDULING_DEFERRED_FLUSH_ARM (1 << 3)
1109+
#define CL_DEVICE_SCHEDULING_REGISTER_ALLOCATION_ARM (1 << 4)
1110+
#define CL_DEVICE_SCHEDULING_WARP_THROTTLING_ARM (1 << 5)
1111+
#define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_BATCH_QUEUE_SIZE_ARM (1 << 6)
1112+
#define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_LIMIT_ARM (1 << 7)
10891113
#define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM 0x41E5
10901114
#define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM 0x41E6
10911115
#define CL_QUEUE_KERNEL_BATCHING_ARM 0x41E7
10921116
#define CL_QUEUE_DEFERRED_FLUSH_ARM 0x41EC
1117+
#define CL_QUEUE_COMPUTE_UNIT_LIMIT_ARM 0x41F3
10931118

10941119
///////////////////////////////////////////////////////////////////////////////
10951120
// cl_intel_accelerator

intercept/src/dispatch.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11161,6 +11161,7 @@ CL_API_ENTRY cl_int CL_API_CALL clCommandNDRangeKernelKHR(
1116111161
std::string argsString;
1116211162
if( pIntercept->config().CallLogging )
1116311163
{
11164+
// TODO: properties string.
1116411165
pIntercept->getEnqueueNDRangeKernelArgsString(
1116511166
work_dim,
1116611167
global_work_offset,

intercept/src/enummap.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,12 @@ CEnumNameMap::CEnumNameMap()
758758
ADD_ENUM_NAME( m_cl_command_buffer_structure_type_khr, CL_STRUCTURE_TYPE_MUTABLE_BASE_CONFIG_KHR );
759759
ADD_ENUM_NAME( m_cl_command_buffer_structure_type_khr, CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR );
760760

761+
ADD_ENUM_NAME( m_cl_int, CL_COMMAND_BUFFER_MUTABLE_DISPATCH_ASSERTS_KHR );
762+
763+
ADD_ENUM_NAME( m_cl_int, CL_MUTABLE_DISPATCH_ASSERTS_KHR );
764+
765+
ADD_ENUM_NAME( m_cl_mutable_dispatch_asserts_khr, CL_MUTABLE_DISPATCH_ASSERT_NO_ADDITIONAL_WORK_GROUPS_KHR );
766+
761767
// cl_khr_extended_versioning extension
762768
// Most enums for this extension were added to OpenCL 3.0.
763769
//CL_PLATFORM_NUMERIC_VERSION_KHR 0x0906
@@ -771,7 +777,8 @@ CEnumNameMap::CEnumNameMap()
771777
// cl_khr_external_memory
772778
ADD_ENUM_NAME( m_cl_int, CL_PLATFORM_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR );
773779
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR );
774-
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_HANDLE_LIST_KHR );
780+
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_EXTERNAL_MEMORY_IMPORT_ASSUME_LINEAR_IMAGES_HANDLE_TYPES_KHR );
781+
ADD_ENUM_NAME( m_cl_int, CL_MEM_DEVICE_HANDLE_LIST_KHR );
775782
ADD_ENUM_NAME( m_cl_int, CL_COMMAND_ACQUIRE_EXTERNAL_MEM_OBJECTS_KHR );
776783
ADD_ENUM_NAME( m_cl_int, CL_COMMAND_RELEASE_EXTERNAL_MEM_OBJECTS_KHR );
777784

@@ -797,6 +804,7 @@ CEnumNameMap::CEnumNameMap()
797804
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR );
798805
ADD_ENUM_NAME( m_cl_int, CL_DEVICE_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR );
799806
ADD_ENUM_NAME( m_cl_int, CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR );
807+
ADD_ENUM_NAME( m_cl_int, CL_SEMAPHORE_EXPORTABLE_KHR );
800808

801809
// cl_khr_external_semaphore_dx_fence
802810
ADD_ENUM_NAME( m_cl_int, CL_SEMAPHORE_HANDLE_D3D12_FENCE_KHR );
@@ -843,8 +851,7 @@ CEnumNameMap::CEnumNameMap()
843851
ADD_ENUM_NAME( m_cl_int, CL_SEMAPHORE_PROPERTIES_KHR );
844852
ADD_ENUM_NAME( m_cl_int, CL_SEMAPHORE_PAYLOAD_KHR );
845853
ADD_ENUM_NAME( m_cl_int, CL_SEMAPHORE_TYPE_KHR );
846-
// Shared with cl_khr_external_memory:
847-
//CL_DEVICE_HANDLE_LIST_KHR 0x2051
854+
ADD_ENUM_NAME( m_cl_int, CL_SEMAPHORE_DEVICE_HANDLE_LIST_KHR );
848855
ADD_ENUM_NAME( m_cl_int, CL_COMMAND_SEMAPHORE_WAIT_KHR );
849856
ADD_ENUM_NAME( m_cl_int, CL_COMMAND_SEMAPHORE_SIGNAL_KHR );
850857
ADD_ENUM_NAME( m_cl_int, CL_INVALID_SEMAPHORE_KHR );
@@ -955,6 +962,7 @@ CEnumNameMap::CEnumNameMap()
955962
ADD_ENUM_NAME( m_cl_int, CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM );
956963
ADD_ENUM_NAME( m_cl_int, CL_QUEUE_KERNEL_BATCHING_ARM );
957964
ADD_ENUM_NAME( m_cl_int, CL_QUEUE_DEFERRED_FLUSH_ARM );
965+
ADD_ENUM_NAME( m_cl_int, CL_QUEUE_COMPUTE_UNIT_LIMIT_ARM );
958966

959967
// cl_intel_accelerator
960968
ADD_ENUM_NAME( m_cl_int, CL_INVALID_ACCELERATOR_INTEL );

intercept/src/enummap.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ class CEnumNameMap
115115
GENERATE_MAP_AND_BITFIELD_FUNC( name_command_buffer_flags, cl_command_buffer_flags_khr );
116116
GENERATE_MAP_AND_FUNC( name_command_buffer_structure_type, cl_command_buffer_structure_type_khr );
117117
GENERATE_MAP_AND_BITFIELD_FUNC( name_mutable_dispatch_fields, cl_mutable_dispatch_fields_khr );
118+
GENERATE_MAP_AND_BITFIELD_FUNC( name_mutable_dispatch_asserts, cl_mutable_dispatch_asserts_khr );
118119

119120
#undef GENERATE_MAP_AND_FUNC
120121
#undef GENERATE_MAP_AND_BITFIELD_FUNC

intercept/src/intercept.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2386,15 +2386,15 @@ void CLIntercept::getMemPropertiesString(
23862386

23872387
switch( property )
23882388
{
2389-
case CL_DEVICE_HANDLE_LIST_KHR:
2389+
case CL_MEM_DEVICE_HANDLE_LIST_KHR:
23902390
{
23912391
++properties;
23922392
str += "{ ";
23932393
while( true )
23942394
{
2395-
if( *properties == CL_DEVICE_HANDLE_LIST_END_KHR )
2395+
if( *properties == CL_MEM_DEVICE_HANDLE_LIST_END_KHR )
23962396
{
2397-
str += "CL_DEVICE_HANDLE_LIST_END_KHR";
2397+
str += "CL_MEM_DEVICE_HANDLE_LIST_END_KHR";
23982398
properties++;
23992399
break;
24002400
}
@@ -2499,15 +2499,16 @@ void CLIntercept::getSemaphorePropertiesString(
24992499
properties += 2;
25002500
}
25012501
break;
2502-
case CL_DEVICE_HANDLE_LIST_KHR:
2502+
case CL_SEMAPHORE_DEVICE_HANDLE_LIST_KHR:
2503+
case CL_MEM_DEVICE_HANDLE_LIST_KHR: // for older implementations, with shared enums.
25032504
{
25042505
++properties;
25052506
str += "{ ";
25062507
while( true )
25072508
{
2508-
if( *properties == CL_DEVICE_HANDLE_LIST_END_KHR )
2509+
if( *properties == CL_SEMAPHORE_DEVICE_HANDLE_LIST_END_KHR )
25092510
{
2510-
str += "CL_DEVICE_HANDLE_LIST_END_KHR";
2511+
str += "CL_SEMAPHORE_DEVICE_HANDLE_LIST_END_KHR";
25112512
properties++;
25122513
break;
25132514
}
@@ -2601,6 +2602,13 @@ void CLIntercept::getCommandBufferPropertiesString(
26012602
properties += 2;
26022603
}
26032604
break;
2605+
case CL_COMMAND_BUFFER_MUTABLE_DISPATCH_ASSERTS_KHR:
2606+
{
2607+
auto pt = (const cl_mutable_dispatch_asserts_khr*)( properties + 1 );
2608+
str += enumName().name_mutable_dispatch_asserts( pt[0] );
2609+
properties += 2;
2610+
}
2611+
break;
26042612
default:
26052613
{
26062614
CLI_SPRINTF( s, 256, "<Unknown %08X!>", (cl_uint)property );

0 commit comments

Comments
 (0)