mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
Update Image compression
Change-Id: I3a15dba343a80716b57cdda6b74f2142814021f3 Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
@@ -19,6 +19,7 @@ set(IGDRCL_SRCS_tests_mem_obj
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image2d_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image3d_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_array_size_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_compression_fixture.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_format_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_redescribe_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_release_mapped_ptr_tests.cpp
|
||||
|
||||
46
unit_tests/mem_obj/image_compression_fixture.h
Normal file
46
unit_tests/mem_obj/image_compression_fixture.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "runtime/helpers/surface_formats.h"
|
||||
#include "test.h"
|
||||
#include "unit_tests/mocks/mock_context.h"
|
||||
#include "unit_tests/mocks/mock_device.h"
|
||||
#include "unit_tests/mocks/mock_memory_manager.h"
|
||||
#include "unit_tests/utilities/base_object_utils.h"
|
||||
|
||||
using namespace OCLRT;
|
||||
|
||||
class ImageCompressionTests : public ::testing::Test {
|
||||
public:
|
||||
class MyMemoryManager : public MockMemoryManager {
|
||||
public:
|
||||
using MockMemoryManager::MockMemoryManager;
|
||||
GraphicsAllocation *allocateGraphicsMemoryForImage(const AllocationData &allocationData) override {
|
||||
mockMethodCalled = true;
|
||||
capturedImgInfo = *allocationData.imgInfo;
|
||||
return OsAgnosticMemoryManager::allocateGraphicsMemoryForImage(allocationData);
|
||||
}
|
||||
ImageInfo capturedImgInfo = {};
|
||||
bool mockMethodCalled = false;
|
||||
};
|
||||
|
||||
void SetUp() override {
|
||||
mockDevice.reset(MockDevice::createWithNewExecutionEnvironment<MockDevice>(*platformDevices));
|
||||
myMemoryManager = new MyMemoryManager(*mockDevice->getExecutionEnvironment());
|
||||
mockDevice->injectMemoryManager(myMemoryManager);
|
||||
mockContext = make_releaseable<MockContext>(mockDevice.get());
|
||||
}
|
||||
|
||||
std::unique_ptr<MockDevice> mockDevice;
|
||||
ReleaseableObjectPtr<MockContext> mockContext;
|
||||
MyMemoryManager *myMemoryManager = nullptr;
|
||||
|
||||
cl_image_desc imageDesc = {};
|
||||
cl_image_format imageFormat{CL_RGBA, CL_UNORM_INT8};
|
||||
cl_mem_flags flags = CL_MEM_READ_WRITE;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
};
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "unit_tests/helpers/debug_manager_state_restore.h"
|
||||
#include "unit_tests/helpers/kernel_binary_helper.h"
|
||||
#include "unit_tests/helpers/memory_management.h"
|
||||
#include "unit_tests/mem_obj/image_compression_fixture.h"
|
||||
#include "unit_tests/mocks/mock_context.h"
|
||||
#include "unit_tests/mocks/mock_gmm.h"
|
||||
#include "unit_tests/mocks/mock_memory_manager.h"
|
||||
@@ -903,37 +904,6 @@ TEST(ImageGetSurfaceFormatInfoTest, givenNullptrFormatWhenGetSurfaceFormatInfoIs
|
||||
EXPECT_EQ(nullptr, surfaceFormat);
|
||||
}
|
||||
|
||||
class ImageCompressionTests : public ::testing::Test {
|
||||
public:
|
||||
class MyMemoryManager : public MockMemoryManager {
|
||||
public:
|
||||
using MockMemoryManager::MockMemoryManager;
|
||||
GraphicsAllocation *allocateGraphicsMemoryForImage(const AllocationData &allocationData) override {
|
||||
mockMethodCalled = true;
|
||||
capturedImgInfo = *allocationData.imgInfo;
|
||||
return OsAgnosticMemoryManager::allocateGraphicsMemoryForImage(allocationData);
|
||||
}
|
||||
ImageInfo capturedImgInfo = {};
|
||||
bool mockMethodCalled = false;
|
||||
};
|
||||
|
||||
void SetUp() override {
|
||||
mockDevice.reset(MockDevice::createWithNewExecutionEnvironment<MockDevice>(*platformDevices));
|
||||
myMemoryManager = new MyMemoryManager(*mockDevice->getExecutionEnvironment());
|
||||
mockDevice->injectMemoryManager(myMemoryManager);
|
||||
mockContext.reset(new MockContext(mockDevice.get()));
|
||||
}
|
||||
|
||||
std::unique_ptr<MockDevice> mockDevice;
|
||||
std::unique_ptr<MockContext> mockContext;
|
||||
MyMemoryManager *myMemoryManager = nullptr;
|
||||
|
||||
cl_image_desc imageDesc = {};
|
||||
cl_image_format imageFormat{CL_RGBA, CL_UNORM_INT8};
|
||||
cl_mem_flags flags = CL_MEM_READ_WRITE;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
};
|
||||
|
||||
TEST_F(ImageCompressionTests, givenTiledImageWhenCreatingAllocationThenPreferRenderCompression) {
|
||||
imageDesc.image_type = CL_MEM_OBJECT_IMAGE2D;
|
||||
imageDesc.image_width = 5;
|
||||
@@ -1511,4 +1481,4 @@ HWTEST_F(HwImageTest, givenImageHwWithUnifiedSurfaceAndMcsWhenSettingParamsForMu
|
||||
mockImage->setAuxParamsForMultisamples(&surfaceState);
|
||||
|
||||
EXPECT_TRUE(mockImage->setAuxParamsForMCSCCSCalled);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,32 +60,53 @@ TEST(MemObjHelper, givenInvalidPropertiesWhenParsingMemoryPropertiesThenFalseIsR
|
||||
|
||||
TEST(MemObjHelper, givenValidPropertiesWhenValidatingMemoryPropertiesThenTrueIsReturned) {
|
||||
MemoryProperties properties;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL | CL_MEM_NO_ACCESS_INTEL;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = CL_MEM_NO_ACCESS_INTEL;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR | CL_MEM_HOST_NO_ACCESS;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = CL_MEM_WRITE_ONLY | CL_MEM_COPY_HOST_PTR | CL_MEM_HOST_WRITE_ONLY;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR | CL_MEM_HOST_NO_ACCESS;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags_intel = CL_MEM_LOCALLY_UNCACHED_RESOURCE;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = 0;
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_TRUE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
}
|
||||
|
||||
TEST(MemObjHelper, givenInvalidPropertiesWhenValidatingMemoryPropertiesThenFalseIsReturned) {
|
||||
MemoryProperties properties;
|
||||
properties.flags = (1 << 31);
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL | CL_MEM_NO_ACCESS_INTEL;
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
|
||||
properties.flags = CL_MEM_NO_ACCESS_INTEL;
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
|
||||
properties.flags_intel = (1 << 31);
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
|
||||
properties.flags = 0;
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryProperties(properties));
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForBuffer(properties));
|
||||
EXPECT_FALSE(MemObjHelper::validateMemoryPropertiesForImage(properties, nullptr));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user