diff --git a/opencl/source/command_queue/enqueue_copy_buffer_rect.h b/opencl/source/command_queue/enqueue_copy_buffer_rect.h index 619ba07e67..b12337675e 100644 --- a/opencl/source/command_queue/enqueue_copy_buffer_rect.h +++ b/opencl/source/command_queue/enqueue_copy_buffer_rect.h @@ -7,6 +7,7 @@ #pragma once #include "shared/source/command_stream/command_stream_receiver.h" +#include "shared/source/helpers/compiler_product_helper.h" #include "opencl/source/command_queue/command_queue_hw.h" #include "opencl/source/mem_obj/buffer.h" @@ -34,9 +35,13 @@ cl_int CommandQueueHw::enqueueCopyBufferRect( CsrSelectionArgs csrSelectionArgs{cmdType, srcBuffer, dstBuffer, device->getRootDeviceIndex(), region}; CommandStreamReceiver &csr = selectCsrForBuiltinOperation(csrSelectionArgs); - const bool useStateless = forceStateless(std::max(srcBuffer->getSize(), dstBuffer->getSize())); + bool isStateless = device->getCompilerProductHelper().isForceToStatelessRequired(); + if (std::max(srcBuffer->getSize(), dstBuffer->getSize()) >= 4ull * MemoryConstants::gigaByte) { + isStateless = true; + } + const bool useHeapless = this->getHeaplessModeEnabled(); - auto builtInType = EBuiltInOps::adjustBuiltinType(useStateless, useHeapless); + auto builtInType = EBuiltInOps::adjustBuiltinType(isStateless, useHeapless); MemObjSurface srcBufferSurf(srcBuffer); MemObjSurface dstBufferSurf(dstBuffer); diff --git a/opencl/test/unit_test/command_queue/enqueue_copy_buffer_rect_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_copy_buffer_rect_tests.cpp index 636e50c05c..638207f57a 100644 --- a/opencl/test/unit_test/command_queue/enqueue_copy_buffer_rect_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_copy_buffer_rect_tests.cpp @@ -537,7 +537,7 @@ struct EnqueueCopyBufferRectHw : public ::testing::Test { using EnqueueCopyBufferRectStateless = EnqueueCopyBufferRectHw; -HWTEST_F(EnqueueCopyBufferRectStateless, GivenValidParametersWhenCopyingBufferRectStatelessThenSuccessIsReturned) { +HWTEST2_F(EnqueueCopyBufferRectStateless, GivenValidParametersWhenCopyingBufferRectStatelessThenSuccessIsReturned, IsStatelessBufferPreferredForProduct) { std::unique_ptr> cmdQ(new CommandQueueStateless(context.get(), device.get())); srcBuffer.size = static_cast(bigSize); @@ -547,7 +547,7 @@ HWTEST_F(EnqueueCopyBufferRectStateless, GivenValidParametersWhenCopyingBufferRe using EnqueueCopyBufferRectStateful = EnqueueCopyBufferRectHw; -HWTEST_F(EnqueueCopyBufferRectStateful, GivenValidParametersWhenCopyingBufferRectStatefulThenSuccessIsReturned) { +HWTEST2_F(EnqueueCopyBufferRectStateful, GivenValidParametersWhenCopyingBufferRectStatefulThenSuccessIsReturned, IsStatefulBufferPreferredForProduct) { std::unique_ptr> cmdQ(new CommandQueueStateful(context.get(), device.get())); if (cmdQ->getHeaplessModeEnabled()) { diff --git a/opencl/test/unit_test/xe_hpc_core/excludes_ocl_xe_hpc_core.cpp b/opencl/test/unit_test/xe_hpc_core/excludes_ocl_xe_hpc_core.cpp index d730433e60..1c6d31add5 100644 --- a/opencl/test/unit_test/xe_hpc_core/excludes_ocl_xe_hpc_core.cpp +++ b/opencl/test/unit_test/xe_hpc_core/excludes_ocl_xe_hpc_core.cpp @@ -19,7 +19,6 @@ HWTEST_EXCLUDE_PRODUCT(CommandStreamReceiverHwTestDg2AndLater, givenGen12AndLate HWTEST_EXCLUDE_PRODUCT(DeviceGetCapsTest, givenDeviceWhenAskingForSubGroupSizesThenReturnCorrectValues, IGFX_XE_HPC_CORE); HWTEST_EXCLUDE_PRODUCT(ClGfxCoreHelperTest, givenKernelInfoWhenCheckingRequiresAuxResolvesThenCorrectValuesAreReturned, IGFX_XE_HPC_CORE); HWTEST_EXCLUDE_PRODUCT(EnqueueReadBufferRectStatefulTest, WhenReadingBufferRectStatefulThenSuccessIsReturned, IGFX_XE_HPC_CORE); -HWTEST_EXCLUDE_PRODUCT(EnqueueCopyBufferRectStateful, GivenValidParametersWhenCopyingBufferRectStatefulThenSuccessIsReturned, IGFX_XE_HPC_CORE); HWTEST_EXCLUDE_PRODUCT(EnqueueSvmMemCopyHwTest, givenEnqueueSVMMemCopyWhenUsingCopyBufferToBufferStatefulBuilderThenSuccessIsReturned, IGFX_XE_HPC_CORE); HWTEST_EXCLUDE_PRODUCT(EnqueueSvmMemFillHwTest, givenEnqueueSVMMemFillWhenUsingCopyBufferToLocalBufferStatefulBuilderThenSuccessIsReturned, IGFX_XE_HPC_CORE); HWTEST_EXCLUDE_PRODUCT(EnqueueFillBufferStatefulTest, givenBuffersWhenFillingBufferStatefulThenSuccessIsReturned, IGFX_XE_HPC_CORE);