Skip to content

Commit

Permalink
Update OpenCL interop samples to latest OpenCL spec (#1021)
Browse files Browse the repository at this point in the history
* Update assets submodule to latest commit

* Add missing extensions

* Update to recent OpenCL spec changes

* Fix extension name

* Add VK_KHR_external_fence extension
  • Loading branch information
SaschaWillems committed May 6, 2024
1 parent db55e98 commit ec7fc61
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 11 deletions.
10 changes: 5 additions & 5 deletions samples/extensions/open_cl_interop/README.adoc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
////
- Copyright (c) 2023, Sascha Willems
- Copyright (c) 2023-2024, Sascha Willems
-
- SPDX-License-Identifier: Apache-2.0
-
Expand Down Expand Up @@ -198,9 +198,9 @@ For this property list we need to get a shareable handle for the Vulkan memory b
mem_properties.push_back((cl_mem_properties) CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_FD_KHR);
mem_properties.push_back((cl_mem_properties) fd);
#endif
mem_properties.push_back((cl_mem_properties) CL_DEVICE_HANDLE_LIST_KHR);
mem_properties.push_back((cl_mem_properties) CL_MEM_DEVICE_HANDLE_LIST_KHR);
mem_properties.push_back((cl_mem_properties) opencl_objects.device_id);
mem_properties.push_back((cl_mem_properties) CL_DEVICE_HANDLE_LIST_END_KHR);
mem_properties.push_back((cl_mem_properties) CL_MEM_DEVICE_HANDLE_LIST_END_KHR);
mem_properties.push_back(0);
----

Expand Down Expand Up @@ -281,9 +281,9 @@ With the Vulkan part done, we again *switch over* to OpenCL, where we'll import
std::vector<cl_semaphore_properties_khr> semaphore_properties{
(cl_semaphore_properties_khr) CL_SEMAPHORE_TYPE_KHR,
(cl_semaphore_properties_khr) CL_SEMAPHORE_TYPE_BINARY_KHR,
(cl_semaphore_properties_khr) CL_DEVICE_HANDLE_LIST_KHR,
(cl_semaphore_properties_khr) CL_SEMAPHORE_DEVICE_HANDLE_LIST_KHR,
(cl_semaphore_properties_khr) opencl_objects.device_id,
(cl_semaphore_properties_khr) CL_DEVICE_HANDLE_LIST_END_KHR,
(cl_semaphore_properties_khr) CL_SEMAPHORE_DEVICE_HANDLE_LIST_END_KHR,
};
// CL to VK semaphore
Expand Down
14 changes: 9 additions & 5 deletions samples/extensions/open_cl_interop/open_cl_interop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,19 +101,23 @@ OpenCLInterop::OpenCLInterop()
zoom = -3.5f;
title = "Interoperability with OpenCL";

// To use external memory and semaphores, we need to enable several extensions, both on the device as well as the instance
// To use external memory, semaphores and fences, we need to enable several extensions, both on the device as well as the instance
add_device_extension(VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
add_device_extension(VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME);
add_device_extension(VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME);
// Some of the extensions are platform dependent
#ifdef _WIN32
add_device_extension(VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME);
add_device_extension(VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME);
add_device_extension(VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME);
#else
add_device_extension(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
add_device_extension(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME);
add_device_extension(VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME);
#endif
add_instance_extension(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME);
add_instance_extension(VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME);
add_instance_extension(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME);
}

OpenCLInterop::~OpenCLInterop()
Expand Down Expand Up @@ -628,9 +632,9 @@ void OpenCLInterop::prepare_shared_image()
mem_properties.push_back((cl_mem_properties) CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_FD_KHR);
mem_properties.push_back((cl_mem_properties) fd);
#endif
mem_properties.push_back((cl_mem_properties) CL_DEVICE_HANDLE_LIST_KHR);
mem_properties.push_back((cl_mem_properties) CL_MEM_DEVICE_HANDLE_LIST_KHR);
mem_properties.push_back((cl_mem_properties) opencl_objects.device_id);
mem_properties.push_back((cl_mem_properties) CL_DEVICE_HANDLE_LIST_END_KHR);
mem_properties.push_back((cl_mem_properties) CL_MEM_DEVICE_HANDLE_LIST_END_KHR);
mem_properties.push_back(0);

cl_image_format cl_img_fmt{};
Expand Down Expand Up @@ -690,9 +694,9 @@ void OpenCLInterop::prepare_sync_objects()
std::vector<cl_semaphore_properties_khr> semaphore_properties{
(cl_semaphore_properties_khr) CL_SEMAPHORE_TYPE_KHR,
(cl_semaphore_properties_khr) CL_SEMAPHORE_TYPE_BINARY_KHR,
(cl_semaphore_properties_khr) CL_DEVICE_HANDLE_LIST_KHR,
(cl_semaphore_properties_khr) CL_SEMAPHORE_DEVICE_HANDLE_LIST_KHR,
(cl_semaphore_properties_khr) opencl_objects.device_id,
(cl_semaphore_properties_khr) CL_DEVICE_HANDLE_LIST_END_KHR,
(cl_semaphore_properties_khr) CL_SEMAPHORE_DEVICE_HANDLE_LIST_END_KHR,
};

// CL to VK semaphore
Expand Down

0 comments on commit ec7fc61

Please sign in to comment.