Update Image compression

Change-Id: I3a15dba343a80716b57cdda6b74f2142814021f3
Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
Filip Hazubski
2019-03-12 14:19:01 +01:00
parent fcdfcb3fc4
commit 40541e4faa
10 changed files with 169 additions and 119 deletions

View File

@@ -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

View 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;
};

View File

@@ -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);
}
}

View File

@@ -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));
}