mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
Improve uncached flag.
- When resource is uncached for surface state and not used in stateless manner then it doesn't need to flush cache - Minor cleanup Change-Id: I4cfe5a6fe3e666200407d9acdd89e6f64b2b3eed Signed-off-by: Mrozek, Michal <michal.mrozek@intel.com>
This commit is contained in:
@@ -353,4 +353,41 @@ HWTEST_F(clMemLocallyUncachedResourceFixture, WhenUnsettingUncacheableResourceFr
|
||||
EXPECT_EQ(mocsUncacheable, cmdQueueMocs<FamilyType>(pCmdQ));
|
||||
}
|
||||
|
||||
HWTEST_F(clMemLocallyUncachedResourceFixture, givenBuffersThatAreUncachedInSurfaceStateAndAreNotUsedInStatelessFashionThenThoseResourcesAreNotRegistredAsResourcesForCacheFlush) {
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
|
||||
MockKernelWithInternals mockKernel(*this->pDevice, context, true);
|
||||
auto kernel = mockKernel.mockKernel;
|
||||
mockKernel.kernelInfo.usesSsh = true;
|
||||
mockKernel.kernelInfo.requiresSshForBuffers = true;
|
||||
mockKernel.kernelInfo.kernelArgInfo[0].pureStatefulBufferAccess = true;
|
||||
mockKernel.kernelInfo.kernelArgInfo[1].pureStatefulBufferAccess = true;
|
||||
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
auto bufferCacheable = clCreateBufferWithPropertiesINTEL(context, propertiesCacheable, n * sizeof(float), nullptr, nullptr);
|
||||
|
||||
auto bufferUncacheableInSurfaceState = clCreateBufferWithPropertiesINTEL(context, propertiesUncacheableInSurfaceState, n * sizeof(float), nullptr, nullptr);
|
||||
auto bufferUncacheable = clCreateBufferWithPropertiesINTEL(context, propertiesUncacheable, n * sizeof(float), nullptr, nullptr);
|
||||
|
||||
retVal = clSetKernelArg(kernel, 0, sizeof(cl_mem), &bufferUncacheableInSurfaceState);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
EXPECT_EQ(nullptr, kernel->kernelArgRequiresCacheFlush[0]);
|
||||
|
||||
retVal = clSetKernelArg(kernel, 0, sizeof(cl_mem), &bufferCacheable);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
EXPECT_NE(nullptr, kernel->kernelArgRequiresCacheFlush[0]);
|
||||
|
||||
retVal = clSetKernelArg(kernel, 0, sizeof(cl_mem), &bufferUncacheable);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
EXPECT_EQ(nullptr, kernel->kernelArgRequiresCacheFlush[0]);
|
||||
|
||||
clReleaseMemObject(bufferUncacheableInSurfaceState);
|
||||
clReleaseMemObject(bufferUncacheable);
|
||||
clReleaseMemObject(bufferCacheable);
|
||||
}
|
||||
|
||||
} // namespace clMemLocallyUncachedResourceTests
|
||||
|
||||
Reference in New Issue
Block a user