fix: invalidate texture cache before reading from image

Related-To: NEO-9004

Signed-off-by: Szymon Morek <szymon.morek@intel.com>
This commit is contained in:
Szymon Morek
2025-04-09 12:22:53 +00:00
committed by Compute-Runtime-Automation
parent 1b5519a880
commit 73ad369b10
2 changed files with 5 additions and 3 deletions

View File

@@ -998,6 +998,8 @@ bool CommandQueue::isTextureCacheFlushNeeded(uint32_t commandType) const {
case CL_COMMAND_COPY_IMAGE: case CL_COMMAND_COPY_IMAGE:
case CL_COMMAND_WRITE_IMAGE: case CL_COMMAND_WRITE_IMAGE:
case CL_COMMAND_FILL_IMAGE: case CL_COMMAND_FILL_IMAGE:
case CL_COMMAND_READ_IMAGE:
case CL_COMMAND_COPY_IMAGE_TO_BUFFER:
return getGpgpuCommandStreamReceiver().isDirectSubmissionEnabled(); return getGpgpuCommandStreamReceiver().isDirectSubmissionEnabled();
default: default:
return false; return false;

View File

@@ -449,10 +449,10 @@ HWTEST_F(CommandQueueCommandStreamTest, WhenCheckIsTextureCacheFlushNeededThenRe
MockCommandQueue cmdQ(&context, mockDevice.get(), 0, false); MockCommandQueue cmdQ(&context, mockDevice.get(), 0, false);
auto &commandStreamReceiver = mockDevice->getUltCommandStreamReceiver<FamilyType>(); auto &commandStreamReceiver = mockDevice->getUltCommandStreamReceiver<FamilyType>();
EXPECT_FALSE(cmdQ.isTextureCacheFlushNeeded(CL_COMMAND_COPY_BUFFER_RECT)); std::set<cl_command_type> typesToFlush = {CL_COMMAND_COPY_IMAGE, CL_COMMAND_WRITE_IMAGE, CL_COMMAND_FILL_IMAGE,
CL_COMMAND_READ_IMAGE, CL_COMMAND_COPY_IMAGE_TO_BUFFER};
for (auto i = CL_COMMAND_NDRANGE_KERNEL; i < CL_COMMAND_SVM_MIGRATE_MEM; i++) { for (auto i = CL_COMMAND_NDRANGE_KERNEL; i < CL_COMMAND_SVM_MIGRATE_MEM; i++) {
if (i == CL_COMMAND_COPY_IMAGE || i == CL_COMMAND_WRITE_IMAGE || i == CL_COMMAND_FILL_IMAGE) { if (typesToFlush.find(i) != typesToFlush.end()) {
commandStreamReceiver.directSubmissionAvailable = true; commandStreamReceiver.directSubmissionAvailable = true;
EXPECT_TRUE(cmdQ.isTextureCacheFlushNeeded(i)); EXPECT_TRUE(cmdQ.isTextureCacheFlushNeeded(i));
commandStreamReceiver.directSubmissionAvailable = false; commandStreamReceiver.directSubmissionAvailable = false;