Skip to content

Commit 3e0aa91

Browse files
test: add copy offload parameter to benchmarks
Related-To: VCV-13562 Signed-off-by: Alicja Lukaszewicz <[email protected]>
1 parent 3283b5e commit 3e0aa91

File tree

25 files changed

+172
-60
lines changed

25 files changed

+172
-60
lines changed

TESTS.md

Lines changed: 7 additions & 7 deletions
Large diffs are not rendered by default.

source/benchmarks/api_overhead_benchmark/definitions/execute_command_list_immediate_copy_queue.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2022-2023 Intel Corporation
2+
* Copyright (C) 2022-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -18,14 +18,16 @@ struct ExecuteCommandListImmediateCopyQueueArguments : TestCaseArgumentContainer
1818
UsmMemoryPlacementArgument destinationPlacement;
1919
ByteSizeArgument size;
2020
BooleanArgument useIoq;
21+
BooleanArgument withCopyOffload;
2122

2223
ExecuteCommandListImmediateCopyQueueArguments()
2324
: isCopyOnly(*this, "IsCopyOnly", "If true, Copy Engine is selected. If false, Compute Engine is selected"),
2425
measureCompletionTime(*this, "MeasureCompletionTime", "Measures time taken to complete the submission (default is to measure only Immediate call)"),
2526
sourcePlacement(*this, "src", "Placement of the source buffer"),
2627
destinationPlacement(*this, "dst", "Placement of the destination buffer"),
2728
size(*this, "size", "Size of the buffer"),
28-
useIoq(*this, "ioq", "Use In order queue") {}
29+
useIoq(*this, "ioq", "Use In order queue"),
30+
withCopyOffload(*this, "withCopyOffload", "Enable driver copy offload (only valid for L0)") {}
2931
};
3032

3133
struct ExecuteCommandListImmediateCopyQueue : TestCase<ExecuteCommandListImmediateCopyQueueArguments> {

source/benchmarks/api_overhead_benchmark/gtest/execute_command_list_immediate_copy_queue.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2022-2023 Intel Corporation
2+
* Copyright (C) 2022-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -16,7 +16,7 @@
1616

1717
[[maybe_unused]] static const inline RegisterTestCase<ExecuteCommandListImmediateCopyQueue> registerTestCase{};
1818

19-
class ExecuteCommandListImmediateCopyQueueTest : public ::testing::TestWithParam<std::tuple<Api, bool, bool, UsmMemoryPlacement, UsmMemoryPlacement, size_t, bool, TestType>> {
19+
class ExecuteCommandListImmediateCopyQueueTest : public ::testing::TestWithParam<std::tuple<Api, bool, bool, UsmMemoryPlacement, UsmMemoryPlacement, size_t, bool, bool, TestType>> {
2020
};
2121

2222
TEST_P(ExecuteCommandListImmediateCopyQueueTest, Test) {
@@ -28,11 +28,15 @@ TEST_P(ExecuteCommandListImmediateCopyQueueTest, Test) {
2828
args.destinationPlacement = std::get<4>(GetParam());
2929
args.size = std::get<5>(GetParam());
3030
args.useIoq = std::get<6>(GetParam());
31+
args.withCopyOffload = std::get<7>(GetParam());
3132

32-
const auto testType = std::get<7>(GetParam());
33+
const auto testType = std::get<8>(GetParam());
3334
if (isTestSkipped(Configuration::get().reducedSizeCAL, testType)) {
3435
GTEST_SKIP();
3536
}
37+
if (args.isCopyOnly && args.withCopyOffload) {
38+
GTEST_SKIP(); // If copy offload were to be executed on blitter
39+
}
3640

3741
ExecuteCommandListImmediateCopyQueue test;
3842
test.run(args);
@@ -51,4 +55,5 @@ INSTANTIATE_TEST_SUITE_P(
5155
::testing::ValuesIn(UsmMemoryPlacementArgument::limitedTargets),
5256
::testing::Values(64 * megaByte),
5357
::testing::Values(false, true),
58+
::testing::Values(false, true),
5459
::testing::Values(TestType::Regular)));

source/benchmarks/api_overhead_benchmark/implementations/l0/execute_command_list_immediate_copy_queue_l0.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2022-2024 Intel Corporation
2+
* Copyright (C) 2022-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -61,6 +61,12 @@ static TestResult run(const ExecuteCommandListImmediateCopyQueueArguments &argum
6161
if (arguments.useIoq) {
6262
commandQueueDesc->desc.flags = ZE_COMMAND_QUEUE_FLAG_IN_ORDER;
6363
}
64+
65+
zex_intel_queue_copy_operations_offload_hint_exp_desc_t copyOffload = {ZEX_INTEL_STRUCTURE_TYPE_QUEUE_COPY_OPERATIONS_OFFLOAD_HINT_EXP_PROPERTIES, nullptr, true};
66+
if (arguments.withCopyOffload) {
67+
commandQueueDesc->desc.flags = ZE_COMMAND_QUEUE_FLAG_IN_ORDER;
68+
commandQueueDesc->desc.pNext = &copyOffload;
69+
}
6470
ASSERT_ZE_RESULT_SUCCESS(zeCommandListCreateImmediate(levelzero.context, levelzero.device, &commandQueueDesc->desc, &cmdList));
6571

6672
// Warmup

source/benchmarks/graph_api_benchmark/implementations/l0/sin_kernel_impl_l0.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,6 @@
1919
#include <level_zero/ze_api.h>
2020
#include <math.h>
2121

22-
typedef struct _zex_intel_queue_copy_operations_offload_hint_exp_desc_t {
23-
ze_structure_type_t stype;
24-
const void *pNext;
25-
ze_bool_t copyOffloadEnabled;
26-
} zex_intel_queue_copy_operations_offload_hint_exp_desc_t;
27-
#define ZEX_INTEL_STRUCTURE_TYPE_QUEUE_COPY_OPERATIONS_OFFLOAD_HINT_EXP_PROPERTIES (ze_structure_type_t)0x0003001B
28-
2922
SinKernelGraphL0::DataFloatPtr SinKernelGraphL0::allocDevice(uint32_t count) {
3023
return mem_helper::alloc(UsmMemoryPlacement::Device, levelzero, count);
3124
}

source/benchmarks/memory_benchmark/definitions/queue_in_order_memcpy.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2023 Intel Corporation
2+
* Copyright (C) 2023-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -17,13 +17,15 @@ struct QueueInOrderMemcpyArguments : TestCaseArgumentContainer {
1717
UsmMemoryPlacementArgument destinationPlacement;
1818
ByteSizeArgument size;
1919
PositiveIntegerArgument count;
20+
BooleanArgument withCopyOffload;
2021

2122
QueueInOrderMemcpyArguments()
2223
: isCopyOnly(*this, "IsCopyOnly", "If true, Copy Engine is selected. If false, Compute Engine is selected"),
2324
sourcePlacement(*this, "sourcePlacement", "Placement of the source buffer"),
2425
destinationPlacement(*this, "destinationPlacement", "Placement of the destination buffer"),
2526
size(*this, "size", "Size of memory allocation"),
26-
count(*this, "count", "Number of memcpy operations") {}
27+
count(*this, "count", "Number of memcpy operations"),
28+
withCopyOffload(*this, "withCopyOffload", "Enable driver copy offload (only valid for L0)") {}
2729
};
2830

2931
struct QueueInOrderMemcpy : TestCase<QueueInOrderMemcpyArguments> {

source/benchmarks/memory_benchmark/definitions/usm_copy_concurrent.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2023 Intel Corporation
2+
* Copyright (C) 2023-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -16,11 +16,13 @@ struct UsmConcurrentCopyArguments : TestCaseArgumentContainer {
1616
ByteSizeArgument size;
1717
EngineArgument h2dEngine;
1818
EngineArgument d2hEngine;
19+
BooleanArgument withCopyOffload;
1920

2021
UsmConcurrentCopyArguments()
2122
: size(*this, "size", "Size of the buffer"),
2223
h2dEngine(*this, "h2dEngine", "Engine used for host to device copy"),
23-
d2hEngine(*this, "d2hEngine", "Engine used for device to host copy") {}
24+
d2hEngine(*this, "d2hEngine", "Engine used for device to host copy"),
25+
withCopyOffload(*this, "withCopyOffload", "Enable driver copy offload (only valid for L0)") {}
2426
};
2527

2628
struct UsmConcurrentCopy : TestCase<UsmConcurrentCopyArguments> {

source/benchmarks/memory_benchmark/definitions/usm_copy_immediate.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2022 Intel Corporation
2+
* Copyright (C) 2022-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -20,14 +20,16 @@ struct UsmCopyImmediateArguments : TestCaseArgumentContainer {
2020
BufferContentsArgument contents;
2121
BooleanArgument forceBlitter;
2222
BooleanArgument useEvents;
23+
BooleanArgument withCopyOffload;
2324

2425
UsmCopyImmediateArguments()
2526
: sourcePlacement(*this, "src", "Placement of the source buffer"),
2627
destinationPlacement(*this, "dst", "Placement of the destination buffer"),
2728
size(*this, "size", "Size of the buffer"),
2829
contents(*this, "contents", "Contents of the buffers"),
2930
forceBlitter(*this, "forceBlitter", CommonHelpMessage::forceBlitter()),
30-
useEvents(*this, "useEvents", CommonHelpMessage::useEvents()) {}
31+
useEvents(*this, "useEvents", CommonHelpMessage::useEvents()),
32+
withCopyOffload(*this, "withCopyOffload", "Enable driver copy offload (only valid for L0)") {}
3133
};
3234

3335
struct UsmCopyImmediate : TestCase<UsmCopyImmediateArguments> {

source/benchmarks/memory_benchmark/definitions/usm_copy_staging_buffers.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2022 Intel Corporation
2+
* Copyright (C) 2022-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -17,12 +17,14 @@ struct UsmCopyStagingBuffersArguments : TestCaseArgumentContainer {
1717
UsmMemoryPlacementArgument dstPlacement;
1818
ByteSizeArgument size;
1919
PositiveIntegerArgument chunks;
20+
BooleanArgument withCopyOffload;
2021

2122
UsmCopyStagingBuffersArguments()
2223
: forceBlitter(*this, "forceBlitter", CommonHelpMessage::forceBlitter()),
2324
dstPlacement(*this, "dst", "Memory placement of destination"),
2425
size(*this, "size", "Size of the buffer"),
25-
chunks(*this, "chunks", "How much memory chunks should the buffer be splitted into") {}
26+
chunks(*this, "chunks", "How much memory chunks should the buffer be splitted into"),
27+
withCopyOffload(*this, "withCopyOffload", "Enable driver copy offload (only valid for L0)") {}
2628
};
2729

2830
struct UsmCopyStagingBuffers : TestCase<UsmCopyStagingBuffersArguments> {

source/benchmarks/memory_benchmark/gtest/queue_in_order_memcpy.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2023 Intel Corporation
2+
* Copyright (C) 2023-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -14,7 +14,7 @@
1414

1515
[[maybe_unused]] static const inline RegisterTestCase<QueueInOrderMemcpy> registerTestCase{};
1616

17-
class QueueInOrderMemcpyTest : public ::testing::TestWithParam<std::tuple<Api, UsmMemoryPlacement, UsmMemoryPlacement, size_t, size_t, bool>> {};
17+
class QueueInOrderMemcpyTest : public ::testing::TestWithParam<std::tuple<Api, UsmMemoryPlacement, UsmMemoryPlacement, size_t, size_t, bool, bool>> {};
1818

1919
TEST_P(QueueInOrderMemcpyTest, Test) {
2020
QueueInOrderMemcpyArguments args{};
@@ -24,6 +24,12 @@ TEST_P(QueueInOrderMemcpyTest, Test) {
2424
args.size = std::get<3>(GetParam());
2525
args.count = std::get<4>(GetParam());
2626
args.isCopyOnly = std::get<5>(GetParam());
27+
args.withCopyOffload = std::get<6>(GetParam());
28+
29+
if (args.isCopyOnly && args.withCopyOffload) {
30+
GTEST_SKIP(); // If copy offload were to be executed on blitter
31+
}
32+
2733
QueueInOrderMemcpy test;
2834
test.run(args);
2935
}
@@ -37,4 +43,5 @@ INSTANTIATE_TEST_SUITE_P(
3743
::testing::Values(UsmMemoryPlacement::Host, UsmMemoryPlacement::Shared, UsmMemoryPlacement::Device),
3844
::testing::Values(1 * MemoryConstants::megaByte),
3945
::testing::Values(10),
46+
::testing::Values(true, false),
4047
::testing::Values(true, false)));

source/benchmarks/memory_benchmark/gtest/usm_copy_concurrent.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
#include <gtest/gtest.h>
1616

17-
class UsmConcurrentCopyTest : public ::testing::TestWithParam<std::tuple<Api, size_t, Engine, Engine>> {
17+
class UsmConcurrentCopyTest : public ::testing::TestWithParam<std::tuple<Api, size_t, Engine, Engine, bool>> {
1818
};
1919

2020
TEST_P(UsmConcurrentCopyTest, Test) {
@@ -23,6 +23,7 @@ TEST_P(UsmConcurrentCopyTest, Test) {
2323
args.size = std::get<1>(GetParam());
2424
args.h2dEngine = std::get<2>(GetParam());
2525
args.d2hEngine = std::get<3>(GetParam());
26+
args.withCopyOffload = std::get<4>(GetParam());
2627

2728
UsmConcurrentCopy test;
2829
test.run(args);
@@ -35,4 +36,5 @@ INSTANTIATE_TEST_SUITE_P(
3536
::testing::Values(Api::L0),
3637
::testing::Values(256 * megaByte),
3738
::testing::Values(Engine::Ccs0, Engine::Bcs),
38-
::testing::Values(Engine::Ccs0, Engine::Bcs)));
39+
::testing::Values(Engine::Ccs0, Engine::Bcs),
40+
::testing::Values(true, false)));

source/benchmarks/memory_benchmark/gtest/usm_copy_immediate.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
#include <gtest/gtest.h>
1616

17-
class UsmCopyImmediateTest : public ::testing::TestWithParam<std::tuple<UsmMemoryPlacement, UsmMemoryPlacement, size_t, BufferContents, bool, bool>> {
17+
class UsmCopyImmediateTest : public ::testing::TestWithParam<std::tuple<UsmMemoryPlacement, UsmMemoryPlacement, size_t, BufferContents, bool, bool, bool>> {
1818
};
1919

2020
TEST_P(UsmCopyImmediateTest, Test) {
@@ -26,6 +26,11 @@ TEST_P(UsmCopyImmediateTest, Test) {
2626
args.contents = std::get<3>(GetParam());
2727
args.forceBlitter = std::get<4>(GetParam());
2828
args.useEvents = std::get<5>(GetParam());
29+
args.withCopyOffload = std::get<6>(GetParam());
30+
31+
if (args.forceBlitter && args.withCopyOffload) {
32+
GTEST_SKIP(); // If copy offload were to be executed on blitter
33+
}
2934

3035
UsmCopyImmediate test;
3136
test.run(args);
@@ -41,7 +46,8 @@ INSTANTIATE_TEST_SUITE_P(
4146
::testing::Values(512 * megaByte),
4247
::testing::Values(BufferContents::Zeros),
4348
::testing::Values(false, true),
44-
::testing::Values(true)));
49+
::testing::Values(true),
50+
::testing::Values(false, true)));
4551

4652
INSTANTIATE_TEST_SUITE_P(
4753
UsmCopyImmediateTestLIMITED,
@@ -52,4 +58,5 @@ INSTANTIATE_TEST_SUITE_P(
5258
::testing::Values(512 * megaByte),
5359
::testing::Values(BufferContents::Zeros),
5460
::testing::Values(false),
55-
::testing::Values(true)));
61+
::testing::Values(true),
62+
::testing::Values(false, true)));

source/benchmarks/memory_benchmark/gtest/usm_copy_staging_buffers.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2022-2023 Intel Corporation
2+
* Copyright (C) 2022-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -14,7 +14,7 @@
1414

1515
#include <gtest/gtest.h>
1616

17-
class UsmCopyStagingBuffersTest : public ::testing::TestWithParam<std::tuple<Api, bool, UsmMemoryPlacement, size_t, size_t>> {
17+
class UsmCopyStagingBuffersTest : public ::testing::TestWithParam<std::tuple<Api, bool, UsmMemoryPlacement, size_t, size_t, bool>> {
1818
};
1919

2020
TEST_P(UsmCopyStagingBuffersTest, DISABLED_Test) {
@@ -24,6 +24,11 @@ TEST_P(UsmCopyStagingBuffersTest, DISABLED_Test) {
2424
args.dstPlacement = std::get<2>(GetParam());
2525
args.size = std::get<3>(GetParam());
2626
args.chunks = std::get<4>(GetParam());
27+
args.withCopyOffload = std::get<5>(GetParam());
28+
29+
if (args.forceBlitter && args.withCopyOffload) {
30+
GTEST_SKIP(); // If copy offload were to be executed on blitter
31+
}
2732

2833
UsmCopyStagingBuffers test;
2934
test.run(args);
@@ -38,4 +43,5 @@ INSTANTIATE_TEST_SUITE_P(
3843
::testing::Values(false, true),
3944
::testing::Values(UsmMemoryPlacement::Device, UsmMemoryPlacement::Host),
4045
::testing::Values(1 * kiloByte, 2 * kiloByte, 4 * kiloByte, 128 * kiloByte, 1 * megaByte, 2 * megaByte, 16 * megaByte, 32 * megaByte, 128 * megaByte, 512 * megaByte),
41-
::testing::Values(1, 2, 4, 8)));
46+
::testing::Values(1, 2, 4, 8),
47+
::testing::Values(true, false)));

source/benchmarks/memory_benchmark/implementations/l0/queue_in_order_memcpy_l0.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2023-2024 Intel Corporation
2+
* Copyright (C) 2023-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -60,6 +60,11 @@ static TestResult run(const QueueInOrderMemcpyArguments &arguments, Statistics &
6060
}
6161

6262
ze_command_list_handle_t cmdList{};
63+
zex_intel_queue_copy_operations_offload_hint_exp_desc_t copyOffload = {ZEX_INTEL_STRUCTURE_TYPE_QUEUE_COPY_OPERATIONS_OFFLOAD_HINT_EXP_PROPERTIES, nullptr, true};
64+
if (arguments.withCopyOffload) {
65+
levelzero.commandQueueDesc.flags |= ZE_COMMAND_QUEUE_FLAG_IN_ORDER;
66+
levelzero.commandQueueDesc.pNext = &copyOffload;
67+
}
6368
ASSERT_ZE_RESULT_SUCCESS(zeCommandListCreateImmediate(levelzero.context, levelzero.device, &levelzero.commandQueueDesc, &cmdList));
6469
// Warmup
6570
ze_event_handle_t signalEvent = events[0];

source/benchmarks/memory_benchmark/implementations/l0/usm_copy_concurrent_l0.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2023 Intel Corporation
2+
* Copyright (C) 2023-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -37,6 +37,15 @@ static TestResult run(const UsmConcurrentCopyArguments &arguments, Statistics &s
3737
return TestResult::DeviceNotCapable;
3838
}
3939

40+
zex_intel_queue_copy_operations_offload_hint_exp_desc_t copyOffload = {ZEX_INTEL_STRUCTURE_TYPE_QUEUE_COPY_OPERATIONS_OFFLOAD_HINT_EXP_PROPERTIES, nullptr, true};
41+
if (arguments.withCopyOffload) {
42+
h2dQueueDesc->desc.flags |= ZE_COMMAND_QUEUE_FLAG_IN_ORDER;
43+
d2hQueueDesc->desc.flags |= ZE_COMMAND_QUEUE_FLAG_IN_ORDER;
44+
45+
h2dQueueDesc->desc.pNext = &copyOffload;
46+
d2hQueueDesc->desc.pNext = &copyOffload;
47+
}
48+
4049
// Create events
4150
ze_event_pool_desc_t eventPoolDesc{ZE_STRUCTURE_TYPE_EVENT_POOL_DESC};
4251
eventPoolDesc.flags = ZE_EVENT_POOL_FLAG_HOST_VISIBLE;

source/benchmarks/memory_benchmark/implementations/l0/usm_copy_immediate_l0.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2022-2024 Intel Corporation
2+
* Copyright (C) 2022-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -67,6 +67,11 @@ static TestResult run(const UsmCopyImmediateArguments &arguments, Statistics &st
6767
// Create an immediate command list
6868
ze_command_list_handle_t cmdList{};
6969
auto commandQueueDesc = QueueFamiliesHelper::getPropertiesForSelectingEngine(levelzero.device, queueProperties.selectedEngine);
70+
zex_intel_queue_copy_operations_offload_hint_exp_desc_t copyOffload = {ZEX_INTEL_STRUCTURE_TYPE_QUEUE_COPY_OPERATIONS_OFFLOAD_HINT_EXP_PROPERTIES, nullptr, true};
71+
if (arguments.withCopyOffload) {
72+
commandQueueDesc->desc.flags |= ZE_COMMAND_QUEUE_FLAG_IN_ORDER;
73+
commandQueueDesc->desc.pNext = &copyOffload;
74+
}
7075
ASSERT_ZE_RESULT_SUCCESS(zeCommandListCreateImmediate(levelzero.context, levelzero.device, &commandQueueDesc->desc, &cmdList));
7176

7277
// Fill buffer

0 commit comments

Comments
 (0)