File tree Expand file tree Collapse file tree
extensions/cl_khr_external_semaphore_dx_fence Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -4,10 +4,13 @@ set(DIRECTX_WRAPPER_SOURCES
44
55add_library (directx_wrapper STATIC ${DIRECTX_WRAPPER_SOURCES} )
66
7- include_directories (${CMAKE_CURRENT_SOURCE_DIR} )
7+ target_include_directories (directx_wrapper
8+ INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} )
89
9- include_directories (${CLConform_INCLUDE_DIR} )
10+ target_compile_definitions (directx_wrapper
11+ PUBLIC
12+ $<$<BOOL :${D3D12_IS_SUPPORTED} >:D3D12_IS_SUPPORTED >)
1013
11- if ( WIN32 )
12- target_link_libraries ( directx_wrapper d3d12 )
13- endif ( )
14+ target_link_libraries ( directx_wrapper
15+ dxgi
16+ $<$< BOOL : ${D3D12_IS_SUPPORTED} >: d3d12 > )
Original file line number Diff line number Diff line change 1414// limitations under the License.
1515//
1616
17+ #include < stdexcept>
18+
1719#include " directx_wrapper.hpp"
1820
19- DirectXWrapper::DirectXWrapper ()
21+ #if D3D12_IS_SUPPORTED
22+ DirectX12Wrapper::DirectX12Wrapper ()
2023{
2124
2225 HRESULT hr = D3D12CreateDevice (nullptr , D3D_FEATURE_LEVEL_12_0,
@@ -44,18 +47,18 @@ DirectXWrapper::DirectXWrapper()
4447 }
4548}
4649
47- ID3D12Device* DirectXWrapper ::getDXDevice () const { return dx_device.Get (); }
50+ ID3D12Device* DirectX12Wrapper ::getDXDevice () const { return dx_device.Get (); }
4851
49- ID3D12CommandQueue* DirectXWrapper ::getDXCommandQueue () const
52+ ID3D12CommandQueue* DirectX12Wrapper ::getDXCommandQueue () const
5053{
5154 return dx_command_queue.Get ();
5255}
53- ID3D12CommandAllocator* DirectXWrapper ::getDXCommandAllocator () const
56+ ID3D12CommandAllocator* DirectX12Wrapper ::getDXCommandAllocator () const
5457{
5558 return dx_command_allocator.Get ();
5659}
5760
58- DirectXFenceWrapper::DirectXFenceWrapper (ID3D12Device* dx_device)
61+ DirectX12FenceWrapper::DirectX12FenceWrapper (ID3D12Device* dx_device)
5962 : dx_device(dx_device)
6063{
6164 if (!dx_device)
@@ -69,3 +72,4 @@ DirectXFenceWrapper::DirectXFenceWrapper(ID3D12Device* dx_device)
6972 throw std::runtime_error (" Failed to create the DirectX fence" );
7073 }
7174}
75+ #endif
Original file line number Diff line number Diff line change 1616
1717#pragma once
1818
19+ #if D3D12_IS_SUPPORTED
1920#include < d3d12.h>
21+ #endif
2022#include < wrl/client.h>
21- #include < stdexcept>
2223
2324using namespace Microsoft ::WRL;
2425
25- class DirectXWrapper {
26+ #if D3D12_IS_SUPPORTED
27+ class DirectX12Wrapper {
2628public:
27- DirectXWrapper ();
29+ DirectX12Wrapper ();
2830
2931 [[nodiscard]] ID3D12Device* getDXDevice () const ;
3032 [[nodiscard]] ID3D12CommandQueue* getDXCommandQueue () const ;
@@ -36,12 +38,13 @@ class DirectXWrapper {
3638 ComPtr<ID3D12CommandAllocator> dx_command_allocator = nullptr ;
3739};
3840
39- class DirectXFenceWrapper {
41+ class DirectX12FenceWrapper {
4042public:
41- DirectXFenceWrapper (ID3D12Device* dx_device);
43+ DirectX12FenceWrapper (ID3D12Device* dx_device);
4244 [[nodiscard]] ID3D12Fence* get () const { return dx_fence.Get (); }
4345
4446private:
4547 ComPtr<ID3D12Fence> dx_fence = nullptr ;
4648 ComPtr<ID3D12Device> dx_device = nullptr ;
47- };
49+ };
50+ #endif
Original file line number Diff line number Diff line change @@ -20,7 +20,6 @@ if (WIN32)
2020 PROPERTIES LANGUAGE CXX )
2121
2222 include_directories (${CMAKE_CURRENT_SOURCE_DIR} )
23- include_directories ("../../common/directx_wrapper" )
2423 include (../../CMakeCommon.txt )
2524endif (WIN32 )
2625
Original file line number Diff line number Diff line change @@ -67,7 +67,7 @@ struct DXFenceTestBase
6767 " supported import types" );
6868
6969 // Import D3D12 fence into OpenCL
70- fence_wrapper = new DirectXFenceWrapper (dx_wrapper.getDXDevice ());
70+ fence_wrapper = new DirectX12FenceWrapper (dx_wrapper.getDXDevice ());
7171 semaphore = createSemaphoreFromFence (fence_wrapper->get ());
7272 test_assert_error (!!semaphore, " Could not create semaphore" );
7373
@@ -83,12 +83,12 @@ struct DXFenceTestBase
8383 cl_context context = nullptr ;
8484 cl_command_queue queue = nullptr ;
8585 cl_int num_elems = 0 ;
86- DirectXWrapper dx_wrapper;
86+ DirectX12Wrapper dx_wrapper;
8787
8888 cl_semaphore_payload_khr semaphore_payload = 1 ;
8989 cl_semaphore_khr semaphore = nullptr ;
9090 HANDLE fence_handle = nullptr ;
91- DirectXFenceWrapper *fence_wrapper = nullptr ;
91+ DirectX12FenceWrapper *fence_wrapper = nullptr ;
9292
9393 clCreateSemaphoreWithPropertiesKHR_fn clCreateSemaphoreWithPropertiesKHR =
9494 nullptr ;
Original file line number Diff line number Diff line change @@ -191,7 +191,7 @@ struct MultipleWaitSignal final : DXFenceTestBase
191191 int SetUp () override
192192 {
193193 DXFenceTestBase::SetUp ();
194- fence_wrapper_2 = new DirectXFenceWrapper (dx_wrapper.getDXDevice ());
194+ fence_wrapper_2 = new DirectX12FenceWrapper (dx_wrapper.getDXDevice ());
195195 semaphore_2 = createSemaphoreFromFence (fence_wrapper_2->get ());
196196 test_assert_error (!!semaphore_2, " Could not create semaphore" );
197197
@@ -282,7 +282,7 @@ struct MultipleWaitSignal final : DXFenceTestBase
282282protected:
283283 cl_semaphore_khr semaphore_2 = nullptr ;
284284 HANDLE fence_handle_2 = nullptr ;
285- DirectXFenceWrapper *fence_wrapper_2 = nullptr ;
285+ DirectX12FenceWrapper *fence_wrapper_2 = nullptr ;
286286};
287287
288288// Confirm that multiple waits in OpenCL followed by signals in DX12 and waits
You can’t perform that action at this time.
0 commit comments