Skip to content

Commit 60c9bbe

Browse files
Disable blitter support for images
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
1 parent 486f25d commit 60c9bbe

File tree

6 files changed

+37
-1
lines changed

6 files changed

+37
-1
lines changed

opencl/source/command_queue/command_queue.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,8 +661,14 @@ bool CommandQueue::blitEnqueueAllowed(cl_command_type cmdType) const {
661661
}
662662

663663
bool CommandQueue::blitEnqueueImageAllowed(const size_t *origin, const size_t *region) {
664+
auto blitEnqueuImageAllowed = false;
664665

665-
return (origin[0] + region[0] <= BlitterConstants::maxBlitWidth) && (origin[1] + region[1] <= BlitterConstants::maxBlitHeight);
666+
if (DebugManager.flags.EnableBlitterForReadWriteImage.get() != -1) {
667+
blitEnqueuImageAllowed = DebugManager.flags.EnableBlitterForReadWriteImage.get();
668+
blitEnqueuImageAllowed &= (origin[0] + region[0] <= BlitterConstants::maxBlitWidth) && (origin[1] + region[1] <= BlitterConstants::maxBlitHeight);
669+
}
670+
671+
return blitEnqueuImageAllowed;
666672
}
667673

668674
bool CommandQueue::isBlockedCommandStreamRequired(uint32_t commandType, const EventsRequest &eventsRequest, bool blockedQueue) const {

opencl/test/unit_test/command_queue/command_queue_tests.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,8 @@ TEST(CommandQueue, giveClCommandWhenCallingBlitEnqueueAllowedThenReturnCorrectVa
11861186
}
11871187

11881188
TEST(CommandQueue, givenCopySizeAndOffsetWhenCallingBlitEnqueueImageAllowedThenReturnCorrectValue) {
1189+
DebugManagerStateRestore restorer;
1190+
DebugManager.flags.EnableBlitterForReadWriteImage.set(1);
11891191
MockContext context{};
11901192
MockCommandQueue queue(&context, context.getDevice(0), 0);
11911193

opencl/test/unit_test/command_queue/enqueue_read_image_tests.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ HWTEST_F(EnqueueReadImageTest, givenDeviceWithBlitterSupportWhenEnqueueReadImage
434434
DebugManagerStateRestore restorer;
435435
DebugManager.flags.OverrideInvalidEngineWithDefault.set(1);
436436
DebugManager.flags.EnableBlitterForEnqueueOperations.set(1);
437+
DebugManager.flags.EnableBlitterForReadWriteImage.set(1);
437438

438439
auto &capabilityTable = pClDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->capabilityTable;
439440
capabilityTable.blitterOperationsSupported = true;
@@ -450,6 +451,18 @@ HWTEST_F(EnqueueReadImageTest, givenDeviceWithBlitterSupportWhenEnqueueReadImage
450451
EnqueueReadImageHelper<>::enqueueReadImage(mockCmdQ.get(), image.get(), CL_TRUE, origin, region);
451452
EXPECT_TRUE(mockCmdQ->isBlitEnqueueImageAllowed);
452453
}
454+
{
455+
DebugManager.flags.EnableBlitterForReadWriteImage.set(-1);
456+
size_t region[] = {BlitterConstants::maxBlitWidth, BlitterConstants::maxBlitHeight, 1};
457+
EnqueueReadImageHelper<>::enqueueReadImage(mockCmdQ.get(), image.get(), CL_TRUE, origin, region);
458+
EXPECT_FALSE(mockCmdQ->isBlitEnqueueImageAllowed);
459+
}
460+
{
461+
DebugManager.flags.EnableBlitterForReadWriteImage.set(0);
462+
size_t region[] = {BlitterConstants::maxBlitWidth, BlitterConstants::maxBlitHeight, 1};
463+
EnqueueReadImageHelper<>::enqueueReadImage(mockCmdQ.get(), image.get(), CL_TRUE, origin, region);
464+
EXPECT_FALSE(mockCmdQ->isBlitEnqueueImageAllowed);
465+
}
453466
}
454467

455468
HWTEST_F(EnqueueReadImageTest, givenCommandQueueWhenEnqueueReadImageIsCalledThenItCallsNotifyFunction) {

opencl/test/unit_test/command_queue/enqueue_write_image_tests.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ HWTEST_F(EnqueueWriteImageTest, givenDeviceWithBlitterSupportWhenEnqueueWriteIma
206206
DebugManagerStateRestore restorer;
207207
DebugManager.flags.OverrideInvalidEngineWithDefault.set(1);
208208
DebugManager.flags.EnableBlitterForEnqueueOperations.set(1);
209+
DebugManager.flags.EnableBlitterForReadWriteImage.set(1);
209210

210211
auto &capabilityTable = pClDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->capabilityTable;
211212
capabilityTable.blitterOperationsSupported = true;
@@ -222,6 +223,18 @@ HWTEST_F(EnqueueWriteImageTest, givenDeviceWithBlitterSupportWhenEnqueueWriteIma
222223
EnqueueWriteImageHelper<>::enqueueWriteImage(mockCmdQ.get(), image.get(), CL_FALSE, origin, region);
223224
EXPECT_TRUE(mockCmdQ->isBlitEnqueueImageAllowed);
224225
}
226+
{
227+
DebugManager.flags.EnableBlitterForReadWriteImage.set(-1);
228+
size_t region[] = {BlitterConstants::maxBlitWidth, BlitterConstants::maxBlitHeight, 1};
229+
EnqueueWriteImageHelper<>::enqueueWriteImage(mockCmdQ.get(), image.get(), CL_FALSE, origin, region);
230+
EXPECT_FALSE(mockCmdQ->isBlitEnqueueImageAllowed);
231+
}
232+
{
233+
DebugManager.flags.EnableBlitterForReadWriteImage.set(0);
234+
size_t region[] = {BlitterConstants::maxBlitWidth, BlitterConstants::maxBlitHeight, 1};
235+
EnqueueWriteImageHelper<>::enqueueWriteImage(mockCmdQ.get(), image.get(), CL_FALSE, origin, region);
236+
EXPECT_FALSE(mockCmdQ->isBlitEnqueueImageAllowed);
237+
}
225238
}
226239

227240
HWTEST_F(EnqueueWriteImageTest, GivenImage1DarrayWhenReadWriteImageIsCalledThenHostPtrSizeIsCalculatedProperly) {

opencl/test/unit_test/test_files/igdrcl.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ EnableIntelVme = -1
125125
EnableIntelAdvancedVme = -1
126126
EnableBlitterOperationsSupport = -1
127127
EnableBlitterForEnqueueOperations = -1
128+
EnableBlitterForReadWriteImage = -1
128129
EnableCacheFlushAfterWalker = -1
129130
EnableLocalMemory = -1
130131
EnableStatelessToStatefulBufferOffsetOpt = -1

shared/source/debug_settings/debug_variables_base.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, EnableIntelVme, -1, "-1: default, 0: disabled, 1
171171
DECLARE_DEBUG_VARIABLE(int32_t, EnableIntelAdvancedVme, -1, "-1: default, 0: disabled, 1: Enables cl_intel_advanced_motion_estimation extension")
172172
DECLARE_DEBUG_VARIABLE(int32_t, EnableBlitterOperationsSupport, -1, "-1: default, 0: disable, 1: enable")
173173
DECLARE_DEBUG_VARIABLE(int32_t, EnableBlitterForEnqueueOperations, -1, "Use Blitter engine for enqueue operations. -1: default, 0: disabled, 1: enabled")
174+
DECLARE_DEBUG_VARIABLE(int32_t, EnableBlitterForReadWriteImage, -1, "Use Blitter engine for read/write image operations. -1: default, 0: disabled, 1: enabled")
174175
DECLARE_DEBUG_VARIABLE(int32_t, EnableCacheFlushAfterWalker, -1, "-1: platform behavior, 0: disabled, 1: enabled. Adds dedicated cache flush command after WALKER command when surfaces used by kernel require to flush the cache")
175176
DECLARE_DEBUG_VARIABLE(int32_t, EnableLocalMemory, -1, "-1: default behavior, 0: disabled, 1: enabled, Allows allocating graphics memory in Local Memory")
176177
DECLARE_DEBUG_VARIABLE(int32_t, EnableStatelessToStatefulBufferOffsetOpt, -1, "-1: dont override, 0: disable, 1: enable, Enables buffer-offset improvement of the stateless to stateful optimization")

0 commit comments

Comments
 (0)