Refactor image formats
Change-Id: I01eaf33e4c31437f3a820655cda21f3e2cf6d6df
This commit is contained in:
parent
6818e55594
commit
f93072ddf5
|
@ -336,7 +336,7 @@ function(generate_l0_lib LIB_NAME MOCKABLE)
|
||||||
)
|
)
|
||||||
target_compile_definitions(${LIB_NAME}
|
target_compile_definitions(${LIB_NAME}
|
||||||
PUBLIC MOCKABLE_VIRTUAL=virtual
|
PUBLIC MOCKABLE_VIRTUAL=virtual
|
||||||
PRIVATE
|
PUBLIC
|
||||||
${COMPUTE_RUNTIME_DEFINITIONS}
|
${COMPUTE_RUNTIME_DEFINITIONS}
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
|
@ -346,7 +346,7 @@ function(generate_l0_lib LIB_NAME MOCKABLE)
|
||||||
)
|
)
|
||||||
target_compile_definitions(${LIB_NAME}
|
target_compile_definitions(${LIB_NAME}
|
||||||
PUBLIC MOCKABLE_VIRTUAL=
|
PUBLIC MOCKABLE_VIRTUAL=
|
||||||
PRIVATE
|
PUBLIC
|
||||||
${COMPUTE_RUNTIME_DEFINITIONS}
|
${COMPUTE_RUNTIME_DEFINITIONS}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -97,7 +97,6 @@ add_library(compute_runtime_mockable_extra
|
||||||
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_deferred_deleter.cpp
|
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_deferred_deleter.cpp
|
||||||
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks${BRANCH_SUFIX_DIR}/mock_gmm_client_context.cpp
|
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks${BRANCH_SUFIX_DIR}/mock_gmm_client_context.cpp
|
||||||
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_gmm_client_context_base.cpp
|
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_gmm_client_context_base.cpp
|
||||||
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_gmm_resource_info.cpp
|
|
||||||
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_memory_manager.cpp
|
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_memory_manager.cpp
|
||||||
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_program.cpp
|
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_program.cpp
|
||||||
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_sip.cpp
|
${COMPUTE_RUNTIME_DIR}/opencl/test/unit_test/mocks/mock_sip.cpp
|
||||||
|
|
|
@ -51,6 +51,7 @@ set(L0_RUNTIME_SOURCES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.h
|
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image.h
|
${CMAKE_CURRENT_SOURCE_DIR}/image/image.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/image/image_formats.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_hw.h
|
${CMAKE_CURRENT_SOURCE_DIR}/image/image_hw.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_hw.inl
|
${CMAKE_CURRENT_SOURCE_DIR}/image/image_hw.inl
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_imp.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/image/image_imp.cpp
|
||||||
|
|
|
@ -232,7 +232,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendImageCopyFromMemory(ze_i
|
||||||
ze_event_handle_t *phWaitEvents) {
|
ze_event_handle_t *phWaitEvents) {
|
||||||
|
|
||||||
auto image = Image::fromHandle(hDstImage);
|
auto image = Image::fromHandle(hDstImage);
|
||||||
auto bytesPerPixel = image->getImageInfo().surfaceFormat->NumChannels * image->getImageInfo().surfaceFormat->PerChannelSizeInBytes;
|
auto bytesPerPixel = static_cast<uint32_t>(image->getImageInfo().surfaceFormat->ImageElementSizeInBytes);
|
||||||
|
|
||||||
ze_image_region_t tmpRegion;
|
ze_image_region_t tmpRegion;
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendImageCopyToMemory(void *
|
||||||
ze_event_handle_t *phWaitEvents) {
|
ze_event_handle_t *phWaitEvents) {
|
||||||
|
|
||||||
auto image = Image::fromHandle(hSrcImage);
|
auto image = Image::fromHandle(hSrcImage);
|
||||||
auto bytesPerPixel = image->getImageInfo().surfaceFormat->NumChannels * image->getImageInfo().surfaceFormat->PerChannelSizeInBytes;
|
auto bytesPerPixel = static_cast<uint32_t>(image->getImageInfo().surfaceFormat->ImageElementSizeInBytes);
|
||||||
ze_image_region_t tmpRegion;
|
ze_image_region_t tmpRegion;
|
||||||
|
|
||||||
if (pSrcRegion == nullptr) {
|
if (pSrcRegion == nullptr) {
|
||||||
|
|
|
@ -131,9 +131,6 @@ ze_result_t DeviceImp::createEventPool(const ze_event_pool_desc_t *desc,
|
||||||
}
|
}
|
||||||
|
|
||||||
ze_result_t DeviceImp::createImage(const ze_image_desc_t *desc, ze_image_handle_t *phImage) {
|
ze_result_t DeviceImp::createImage(const ze_image_desc_t *desc, ze_image_handle_t *phImage) {
|
||||||
if (desc->format.layout >= ze_image_format_layout_t::ZE_IMAGE_FORMAT_LAYOUT_Y8) {
|
|
||||||
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
|
|
||||||
}
|
|
||||||
auto productFamily = neoDevice->getHardwareInfo().platform.eProductFamily;
|
auto productFamily = neoDevice->getHardwareInfo().platform.eProductFamily;
|
||||||
*phImage = Image::create(productFamily, this, desc);
|
*phImage = Image::create(productFamily, this, desc);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,181 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "shared/source/helpers/surface_format_info.h"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
namespace L0 {
|
||||||
|
namespace ImageFormats {
|
||||||
|
constexpr uint32_t ZE_IMAGE_FORMAT_RENDER_LAYOUT_MAX = 30u;
|
||||||
|
|
||||||
|
using FormatTypes = std::array<NEO::SurfaceFormatInfo, 5u>;
|
||||||
|
|
||||||
|
constexpr std::array<NEO::SurfaceFormatInfo, 5u> surfaceFormatsForRedescribe = {
|
||||||
|
{{GMM_FORMAT_R8_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8_UINT, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_R16_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16_UINT, 0, 1, 2, 2},
|
||||||
|
{GMM_FORMAT_R32_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32_UINT, 0, 1, 4, 4},
|
||||||
|
{GMM_FORMAT_R32G32_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32_UINT, 0, 2, 4, 8},
|
||||||
|
{GMM_FORMAT_R32G32B32A32_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_UINT, 0, 4, 4, 16}}};
|
||||||
|
|
||||||
|
constexpr FormatTypes layout8 = {{{GMM_FORMAT_R8_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8_UINT, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_R8_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8_SINT, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_R8_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8_UNORM, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_R8_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8_SNORM, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_R8_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8_UINT, 0, 1, 1, 1}}};
|
||||||
|
constexpr FormatTypes layout88 = {{{GMM_FORMAT_R8G8_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8_UINT, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_R8G8_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8_SINT, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_R8G8_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8_UNORM, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_R8G8_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8_SNORM, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_R8G8_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8_UINT, 0, 2, 1, 2}}};
|
||||||
|
constexpr FormatTypes layout8888 = {{{GMM_FORMAT_R8G8B8A8_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UINT, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R8G8B8A8_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SINT, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R8G8B8A8_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R8G8B8A8_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R8G8B8A8_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UINT, 0, 4, 1, 4}}};
|
||||||
|
constexpr FormatTypes layout16 = {{{GMM_FORMAT_R16_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16_UINT, 0, 1, 2, 2},
|
||||||
|
{GMM_FORMAT_R16_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16_SINT, 0, 1, 2, 2},
|
||||||
|
{GMM_FORMAT_R16_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16_UNORM, 0, 1, 2, 2},
|
||||||
|
{GMM_FORMAT_R16_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16_SNORM, 0, 1, 2, 2},
|
||||||
|
{GMM_FORMAT_R16_FLOAT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16_FLOAT, 0, 1, 2, 2}}};
|
||||||
|
constexpr FormatTypes layout1616 = {{{GMM_FORMAT_R16G16_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16_UINT, 0, 2, 2, 4},
|
||||||
|
{GMM_FORMAT_R16G16_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16_SINT, 0, 2, 2, 4},
|
||||||
|
{GMM_FORMAT_R16G16_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16_UNORM, 0, 2, 2, 4},
|
||||||
|
{GMM_FORMAT_R16G16_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16_SNORM, 0, 2, 2, 4},
|
||||||
|
{GMM_FORMAT_R16G16_FLOAT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16_FLOAT, 0, 2, 2, 4}}};
|
||||||
|
constexpr FormatTypes layout16161616 = {{{GMM_FORMAT_R16G16B16A16_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_UINT, 0, 4, 2, 8},
|
||||||
|
{GMM_FORMAT_R16G16B16A16_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SINT, 0, 4, 2, 8},
|
||||||
|
{GMM_FORMAT_R16G16B16A16_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_UNORM, 0, 4, 2, 8},
|
||||||
|
{GMM_FORMAT_R16G16B16A16_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SNORM, 0, 4, 2, 8},
|
||||||
|
{GMM_FORMAT_R16G16B16A16_FLOAT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_FLOAT, 0, 4, 2, 8}}};
|
||||||
|
constexpr FormatTypes layout32 = {{{GMM_FORMAT_R32_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32_UINT, 0, 1, 4, 4},
|
||||||
|
{GMM_FORMAT_R32_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32_SINT, 0, 1, 4, 4},
|
||||||
|
{GMM_FORMAT_R32_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32_UNORM, 0, 1, 4, 4},
|
||||||
|
{GMM_FORMAT_R32_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32_SNORM, 0, 1, 4, 4},
|
||||||
|
{GMM_FORMAT_R32_FLOAT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32_FLOAT, 0, 1, 4, 4}}};
|
||||||
|
constexpr FormatTypes layout3232 = {{{GMM_FORMAT_R32G32_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32_UINT, 0, 2, 4, 8},
|
||||||
|
{GMM_FORMAT_R32G32_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32_SINT, 0, 2, 4, 8},
|
||||||
|
{GMM_FORMAT_R32G32_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32_UNORM, 0, 2, 4, 8},
|
||||||
|
{GMM_FORMAT_R32G32_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32_SNORM, 0, 2, 4, 8},
|
||||||
|
{GMM_FORMAT_R32G32_FLOAT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32_FLOAT, 0, 2, 4, 8}}};
|
||||||
|
constexpr FormatTypes layout32323232 = {{{GMM_FORMAT_R32G32B32A32_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_UINT, 0, 4, 4, 16},
|
||||||
|
{GMM_FORMAT_R32G32B32A32_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_SINT, 0, 4, 4, 16},
|
||||||
|
{GMM_FORMAT_R32G32B32A32_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_UNORM, 0, 4, 4, 16},
|
||||||
|
{GMM_FORMAT_R32G32B32A32_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_SNORM, 0, 4, 4, 16},
|
||||||
|
{GMM_FORMAT_R32G32B32A32_FLOAT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_FLOAT, 0, 4, 4, 16}}};
|
||||||
|
constexpr FormatTypes layout1010102 = {{{GMM_FORMAT_R10G10B10A2_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UINT, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R10G10B10A2_SINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SINT, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R10G10B10A2_UNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R10G10B10A2_SNORM_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_R10G10B10A2_UINT_TYPE, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UINT, 0, 4, 1, 4}}};
|
||||||
|
constexpr FormatTypes layout111110 = {{{GMM_FORMAT_R11G11B10_FLOAT, NEO::GFX3DSTATE_SURFACEFORMAT_R11G11B10_FLOAT, 0, 3, 0, 4},
|
||||||
|
{GMM_FORMAT_R11G11B10_FLOAT, NEO::GFX3DSTATE_SURFACEFORMAT_R11G11B10_FLOAT, 0, 3, 0, 4},
|
||||||
|
{GMM_FORMAT_R11G11B10_FLOAT, NEO::GFX3DSTATE_SURFACEFORMAT_R11G11B10_FLOAT, 0, 3, 0, 4},
|
||||||
|
{GMM_FORMAT_R11G11B10_FLOAT, NEO::GFX3DSTATE_SURFACEFORMAT_R11G11B10_FLOAT, 0, 3, 0, 4},
|
||||||
|
{GMM_FORMAT_R11G11B10_FLOAT, NEO::GFX3DSTATE_SURFACEFORMAT_R11G11B10_FLOAT, 0, 3, 0, 4}}};
|
||||||
|
constexpr FormatTypes layout565 = {{{GMM_FORMAT_B5G6R5_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G6R5_UNORM, 0, 3, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G6R5_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G6R5_UNORM, 0, 3, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G6R5_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G6R5_UNORM, 0, 3, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G6R5_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G6R5_UNORM, 0, 3, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G6R5_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G6R5_UNORM, 0, 3, 0, 2}}};
|
||||||
|
constexpr FormatTypes layout5551 = {{{GMM_FORMAT_B5G5R5A1_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G5R5A1_UNORM, 0, 4, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G5R5A1_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G5R5A1_UNORM, 0, 4, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G5R5A1_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G5R5A1_UNORM, 0, 4, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G5R5A1_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G5R5A1_UNORM, 0, 4, 0, 2},
|
||||||
|
{GMM_FORMAT_B5G5R5A1_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B5G5R5A1_UNORM, 0, 4, 0, 2}}};
|
||||||
|
constexpr FormatTypes layout4444 = {{{GMM_FORMAT_B4G4R4A4_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B4G4R4A4_UNORM, 0, 4, 1, 2},
|
||||||
|
{GMM_FORMAT_B4G4R4A4_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B4G4R4A4_UNORM, 0, 4, 1, 2},
|
||||||
|
{GMM_FORMAT_B4G4R4A4_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B4G4R4A4_UNORM, 0, 4, 1, 2},
|
||||||
|
{GMM_FORMAT_B4G4R4A4_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B4G4R4A4_UNORM, 0, 4, 1, 2},
|
||||||
|
{GMM_FORMAT_B4G4R4A4_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_B4G4R4A4_UNORM, 0, 4, 1, 2}}};
|
||||||
|
constexpr FormatTypes layoutY8 = {{{GMM_FORMAT_Y8_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_Y8_UNORM, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_Y8_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_Y8_UNORM, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_Y8_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_Y8_UNORM, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_Y8_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_Y8_UNORM, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_Y8_UNORM, NEO::GFX3DSTATE_SURFACEFORMAT_Y8_UNORM, 0, 1, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutNV12 = {{{GMM_FORMAT_NV12, NEO::GFX3DSTATE_SURFACEFORMAT_NV12, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_NV12, NEO::GFX3DSTATE_SURFACEFORMAT_NV12, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_NV12, NEO::GFX3DSTATE_SURFACEFORMAT_NV12, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_NV12, NEO::GFX3DSTATE_SURFACEFORMAT_NV12, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_NV12, NEO::GFX3DSTATE_SURFACEFORMAT_NV12, 0, 1, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutYUYV = {{{GMM_FORMAT_YCRCB_NORMAL, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_NORMAL, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_NORMAL, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_NORMAL, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_NORMAL, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL, 0, 2, 1, 2}}};
|
||||||
|
constexpr FormatTypes layoutVYUY = {{{GMM_FORMAT_YCRCB_SWAPUVY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUVY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUVY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUVY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUVY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUVY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUVY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUVY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUVY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUVY, 0, 2, 1, 2}}};
|
||||||
|
constexpr FormatTypes layoutYVYU = {{{GMM_FORMAT_YCRCB_SWAPUV, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUV, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUV, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUV, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUV, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUV, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUV, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUV, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPUV, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUV, 0, 2, 1, 2}}};
|
||||||
|
constexpr FormatTypes layoutUYVY = {{{GMM_FORMAT_YCRCB_SWAPY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPY, 0, 2, 1, 2},
|
||||||
|
{GMM_FORMAT_YCRCB_SWAPY, NEO::GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPY, 0, 2, 1, 2}}};
|
||||||
|
constexpr FormatTypes layoutAYUV = {{{GMM_FORMAT_AYUV, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_AYUV, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_AYUV, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_AYUV, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_AYUV, NEO::GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM, 0, 4, 1, 4}}};
|
||||||
|
constexpr FormatTypes layoutYUAV = {{{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutY410 = {{{GMM_FORMAT_Y410, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_Y410, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_Y410, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_Y410, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM, 0, 4, 1, 4},
|
||||||
|
{GMM_FORMAT_Y410, NEO::GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM, 0, 4, 1, 4}}};
|
||||||
|
constexpr FormatTypes layoutY16 = {{{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutP010 = {{{GMM_FORMAT_P010, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P010, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P010, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P010, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P010, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutP012 = {{{GMM_FORMAT_P012, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P012, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P012, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P012, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P012, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutP016 = {{{GMM_FORMAT_P016, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P016, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P016, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P016, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1},
|
||||||
|
{GMM_FORMAT_P016, NEO::GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16, 0, 2, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutY216 = {{{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutP216 = {{{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1}}};
|
||||||
|
constexpr FormatTypes layoutP416 = {{{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1},
|
||||||
|
{GMM_FORMAT_INVALID, NEO::NUM_GFX3DSTATE_SURFACEFORMATS, 0, 1, 1, 1}}};
|
||||||
|
|
||||||
|
constexpr std::array<FormatTypes, 30> formats = {layout8, layout16, layout32, layout88, layout8888, layout1616, layout16161616, layout3232, layout32323232, layout1010102, layout111110, layout565, layout5551, layout4444, layoutY8,
|
||||||
|
layoutNV12, layoutYUYV, layoutVYUY, layoutYVYU, layoutUYVY, layoutAYUV, layoutYUAV, layoutP010, layoutY410, layoutP012, layoutY16, layoutP016, layoutY216, layoutP216, layoutP416};
|
||||||
|
} // namespace ImageFormats
|
||||||
|
} // namespace L0
|
|
@ -1,30 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2019-2020 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "level_zero/core/source/image/image_imp.h"
|
|
||||||
|
|
||||||
#define GEN10PLUS_IMAGE_FORMATS() \
|
|
||||||
{ \
|
|
||||||
mediaSurfaceFormatTable \
|
|
||||||
[ZE_IMAGE_FORMAT_LAYOUT_P016 - ZE_IMAGE_FORMAT_MEDIA_LAYOUT_OFFSET] = \
|
|
||||||
RSS::SURFACE_FORMAT_PLANAR_420_16; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define GEN11PLUS_IMAGE_FORMATS() \
|
|
||||||
{ \
|
|
||||||
GEN10PLUS_IMAGE_FORMATS() \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define GEN12PLUS_IMAGE_FORMATS() \
|
|
||||||
{ \
|
|
||||||
GEN11PLUS_IMAGE_FORMATS() \
|
|
||||||
surfaceFormatTable \
|
|
||||||
[ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2][ZE_IMAGE_FORMAT_TYPE_FLOAT] = \
|
|
||||||
RSS::SURFACE_FORMAT_R10G10B10_FLOAT_A2_UNORM; \
|
|
||||||
}
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include "shared/source/helpers/surface_format_info.h"
|
#include "shared/source/helpers/surface_format_info.h"
|
||||||
#include "shared/source/indirect_heap/indirect_heap.h"
|
#include "shared/source/indirect_heap/indirect_heap.h"
|
||||||
|
|
||||||
#include "level_zero/core/source/image/image_formats_append.h"
|
|
||||||
#include "level_zero/core/source/image/image_imp.h"
|
#include "level_zero/core/source/image/image_imp.h"
|
||||||
|
|
||||||
namespace L0 {
|
namespace L0 {
|
||||||
|
@ -21,121 +20,31 @@ template <GFXCORE_FAMILY gfxCoreFamily>
|
||||||
struct ImageCoreFamily : public ImageImp {
|
struct ImageCoreFamily : public ImageImp {
|
||||||
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||||
using RENDER_SURFACE_STATE = typename GfxFamily::RENDER_SURFACE_STATE;
|
using RENDER_SURFACE_STATE = typename GfxFamily::RENDER_SURFACE_STATE;
|
||||||
using RSS = typename GfxFamily::RENDER_SURFACE_STATE;
|
|
||||||
using RENDER_FORMAT = typename RENDER_SURFACE_STATE::SURFACE_FORMAT;
|
|
||||||
using SHADER_CHANNEL_SELECT = typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT;
|
|
||||||
|
|
||||||
static const RENDER_FORMAT surfaceFormatUndefined = static_cast<RENDER_FORMAT>(-1);
|
|
||||||
static const GMM_RESOURCE_FORMAT gmmResourceFormatUndefined = static_cast<GMM_RESOURCE_FORMAT>(-1);
|
|
||||||
|
|
||||||
NEO::SurfaceFormatInfo surfaceFormatsForRedescribe[5] = {
|
|
||||||
{GMM_FORMAT_R8_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8_UINT), 0, 1, 1, 1},
|
|
||||||
{GMM_FORMAT_R16_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16_UINT), 0, 1, 2, 2},
|
|
||||||
{GMM_FORMAT_R32_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32_UINT), 0, 1, 4, 4},
|
|
||||||
{GMM_FORMAT_R32G32_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32_UINT), 0, 2, 4, 8},
|
|
||||||
{GMM_FORMAT_R32G32B32A32_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32B32A32_UINT), 0, 4, 4, 16}};
|
|
||||||
|
|
||||||
NEO::SurfaceFormatInfo surfaceFormatTable[ZE_IMAGE_FORMAT_RENDER_LAYOUT_MAX + 1]
|
|
||||||
[ZE_IMAGE_FORMAT_TYPE_MAX + 1] = {
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_8
|
|
||||||
{{GMM_FORMAT_R8_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8_UINT), 0, 1, 1, 1},
|
|
||||||
{GMM_FORMAT_R8_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8_SINT), 0, 1, 1, 1},
|
|
||||||
{GMM_FORMAT_R8_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8_UNORM), 0, 1, 1, 1},
|
|
||||||
{GMM_FORMAT_R8_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8_SNORM), 0, 1, 1, 1},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 1, 1, 1}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_16
|
|
||||||
{{GMM_FORMAT_R16_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16_UINT), 0, 1, 2, 2},
|
|
||||||
{GMM_FORMAT_R16_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16_SINT), 0, 1, 2, 2},
|
|
||||||
{GMM_FORMAT_R16_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16_UNORM), 0, 1, 2, 2},
|
|
||||||
{GMM_FORMAT_R16_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16_SNORM), 0, 1, 2, 2},
|
|
||||||
{GMM_FORMAT_R16_FLOAT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16_FLOAT), 0, 1, 2, 2}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_32
|
|
||||||
{{GMM_FORMAT_R32_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32_UINT), 0, 1, 4, 4},
|
|
||||||
{GMM_FORMAT_R32_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32_SINT), 0, 1, 4, 4},
|
|
||||||
{GMM_FORMAT_R32_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32_UNORM), 0, 1, 4, 4},
|
|
||||||
{GMM_FORMAT_R32_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32_SNORM), 0, 1, 4, 4},
|
|
||||||
{GMM_FORMAT_R32_FLOAT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32_FLOAT), 0, 1, 4, 4}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_8_8
|
|
||||||
{{GMM_FORMAT_R8G8_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8_UINT), 0, 2, 1, 2},
|
|
||||||
{GMM_FORMAT_R8G8_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8_SINT), 0, 2, 1, 2},
|
|
||||||
{GMM_FORMAT_R8G8_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8_UNORM), 0, 2, 1, 2},
|
|
||||||
{GMM_FORMAT_R8G8_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8_SNORM), 0, 2, 1, 2},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 2, 1, 2}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8
|
|
||||||
{{GMM_FORMAT_R8G8B8A8_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8B8A8_UINT), 0, 4, 1, 4},
|
|
||||||
{GMM_FORMAT_R8G8B8A8_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8B8A8_SINT), 0, 4, 1, 4},
|
|
||||||
{GMM_FORMAT_R8G8B8A8_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8B8A8_UNORM), 0, 4, 1, 4},
|
|
||||||
{GMM_FORMAT_R8G8B8A8_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R8G8B8A8_SNORM), 0, 4, 1, 4},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 4, 1, 4}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_16_16
|
|
||||||
{{GMM_FORMAT_R16G16_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16_UINT), 0, 2, 2, 4},
|
|
||||||
{GMM_FORMAT_R16G16_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16_SINT), 0, 2, 2, 4},
|
|
||||||
{GMM_FORMAT_R16G16_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16_UNORM), 0, 2, 2, 4},
|
|
||||||
{GMM_FORMAT_R16G16_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16_SNORM), 0, 2, 2, 4},
|
|
||||||
{GMM_FORMAT_R16G16_FLOAT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16_FLOAT), 0, 2, 2, 4}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16
|
|
||||||
{{GMM_FORMAT_R16G16B16A16_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16B16A16_UINT), 0, 4, 2, 8},
|
|
||||||
{GMM_FORMAT_R16G16B16A16_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16B16A16_SINT), 0, 4, 2, 8},
|
|
||||||
{GMM_FORMAT_R16G16B16A16_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16B16A16_UNORM), 0, 4, 2, 8},
|
|
||||||
{GMM_FORMAT_R16G16B16A16_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16B16A16_SNORM), 0, 4, 2, 8},
|
|
||||||
{GMM_FORMAT_R16G16B16A16_FLOAT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R16G16B16A16_FLOAT), 0, 4, 2, 8}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_32_32
|
|
||||||
{{GMM_FORMAT_R32G32_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32_UINT), 0, 2, 4, 8},
|
|
||||||
{GMM_FORMAT_R32G32_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32_SINT), 0, 2, 4, 8},
|
|
||||||
{GMM_FORMAT_R32G32_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32_UNORM), 0, 2, 4, 8},
|
|
||||||
{GMM_FORMAT_R32G32_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32_SNORM), 0, 2, 4, 8},
|
|
||||||
{GMM_FORMAT_R32G32_FLOAT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32_FLOAT), 0, 2, 4, 8}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32
|
|
||||||
{{GMM_FORMAT_R32G32B32A32_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32B32A32_UINT), 0, 4, 4, 16},
|
|
||||||
{GMM_FORMAT_R32G32B32A32_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32B32A32_SINT), 0, 4, 4, 16},
|
|
||||||
{GMM_FORMAT_R32G32B32A32_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32B32A32_UNORM), 0, 4, 4, 16},
|
|
||||||
{GMM_FORMAT_R32G32B32A32_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32B32A32_SNORM), 0, 4, 4, 16},
|
|
||||||
{GMM_FORMAT_R32G32B32A32_FLOAT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R32G32B32A32_FLOAT), 0, 4, 4, 16}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2
|
|
||||||
{{GMM_FORMAT_R10G10B10A2_UINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R10G10B10A2_UINT), 0, 4, 1, 4},
|
|
||||||
{GMM_FORMAT_R10G10B10A2_SINT_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R10G10B10A2_SINT), 0, 4, 1, 4},
|
|
||||||
{GMM_FORMAT_R10G10B10A2_UNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R10G10B10A2_UNORM), 0, 4, 1, 4},
|
|
||||||
{GMM_FORMAT_R10G10B10A2_SNORM_TYPE, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R10G10B10A2_SNORM), 0, 4, 1, 4},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 1, 1, 1}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_11_11_10
|
|
||||||
{{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{GMM_FORMAT_R11G11B10_FLOAT, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_R11G11B10_FLOAT), 0, 3, 0, 4}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_5_6_5
|
|
||||||
{{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{GMM_FORMAT_B5G6R5_UNORM, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_B5G6R5_UNORM), 0, 3, 0, 2},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1
|
|
||||||
{{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{GMM_FORMAT_B5G5R5A1_UNORM, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_B5G5R5A1_UNORM), 0, 4, 0, 2},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0}},
|
|
||||||
// ZE_IMAGE_FORMAT_LAYOUT_4_4_4_4
|
|
||||||
{{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0},
|
|
||||||
{GMM_FORMAT_B4G4R4A4_UNORM, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(RSS::SURFACE_FORMAT_B4G4R4A4_UNORM), 0, 4, 1, 2},
|
|
||||||
{gmmResourceFormatUndefined, static_cast<NEO::GFX3DSTATE_SURFACEFORMAT>(surfaceFormatUndefined), 0, 0, 0, 0}}};
|
|
||||||
|
|
||||||
const SHADER_CHANNEL_SELECT shaderChannelSelect[ZE_IMAGE_FORMAT_SWIZZLE_MAX + 1] = {
|
|
||||||
RSS::SHADER_CHANNEL_SELECT_RED,
|
|
||||||
RSS::SHADER_CHANNEL_SELECT_GREEN,
|
|
||||||
RSS::SHADER_CHANNEL_SELECT_BLUE,
|
|
||||||
RSS::SHADER_CHANNEL_SELECT_ALPHA,
|
|
||||||
RSS::SHADER_CHANNEL_SELECT_ZERO,
|
|
||||||
RSS::SHADER_CHANNEL_SELECT_ONE,
|
|
||||||
RSS::SHADER_CHANNEL_SELECT_ZERO,
|
|
||||||
};
|
|
||||||
|
|
||||||
bool initialize(Device *device, const ze_image_desc_t *desc) override;
|
bool initialize(Device *device, const ze_image_desc_t *desc) override;
|
||||||
|
|
||||||
void copySurfaceStateToSSH(void *surfaceStateHeap, const uint32_t surfaceStateOffset) override;
|
void copySurfaceStateToSSH(void *surfaceStateHeap, const uint32_t surfaceStateOffset) override;
|
||||||
void copyRedescribedSurfaceStateToSSH(void *surfaceStateHeap, const uint32_t surfaceStateOffset) override;
|
void copyRedescribedSurfaceStateToSSH(void *surfaceStateHeap, const uint32_t surfaceStateOffset) override;
|
||||||
|
bool isMediaFormat(const ze_image_format_layout_t layout) {
|
||||||
|
if (layout == ze_image_format_layout_t::ZE_IMAGE_FORMAT_LAYOUT_NV12 ||
|
||||||
|
layout == ze_image_format_layout_t::ZE_IMAGE_FORMAT_LAYOUT_P010 ||
|
||||||
|
layout == ze_image_format_layout_t::ZE_IMAGE_FORMAT_LAYOUT_P012 ||
|
||||||
|
layout == ze_image_format_layout_t::ZE_IMAGE_FORMAT_LAYOUT_P016) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static constexpr uint32_t zeImageFormatSwizzleMax = ZE_IMAGE_FORMAT_SWIZZLE_X + 1u;
|
||||||
|
|
||||||
|
const std::array<typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT, zeImageFormatSwizzleMax> shaderChannelSelect = {
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_RED,
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_GREEN,
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_BLUE,
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ALPHA,
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO,
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ONE,
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
RENDER_SURFACE_STATE surfaceState;
|
RENDER_SURFACE_STATE surfaceState;
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "shared/source/memory_manager/memory_manager.h"
|
#include "shared/source/memory_manager/memory_manager.h"
|
||||||
#include "shared/source/utilities/compiler_support.h"
|
#include "shared/source/utilities/compiler_support.h"
|
||||||
|
|
||||||
|
#include "level_zero/core/source/image/image_formats.h"
|
||||||
#include "level_zero/core/source/image/image_hw.h"
|
#include "level_zero/core/source/image/image_hw.h"
|
||||||
|
|
||||||
namespace L0 {
|
namespace L0 {
|
||||||
|
@ -23,29 +24,12 @@ template <GFXCORE_FAMILY gfxCoreFamily>
|
||||||
bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_desc_t *desc) {
|
bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_desc_t *desc) {
|
||||||
using RENDER_SURFACE_STATE = typename GfxFamily::RENDER_SURFACE_STATE;
|
using RENDER_SURFACE_STATE = typename GfxFamily::RENDER_SURFACE_STATE;
|
||||||
|
|
||||||
if (static_cast<uint32_t>(desc->format.layout) > ZE_IMAGE_FORMAT_LAYOUT_MAX) {
|
bool isMediaFormatLayout = isMediaFormat(desc->format.layout);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (static_cast<uint32_t>(desc->format.type) > ZE_IMAGE_FORMAT_TYPE_MAX) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (static_cast<uint32_t>(desc->format.x) > ZE_IMAGE_FORMAT_SWIZZLE_MAX ||
|
|
||||||
static_cast<uint32_t>(desc->format.y) > ZE_IMAGE_FORMAT_SWIZZLE_MAX ||
|
|
||||||
static_cast<uint32_t>(desc->format.z) > ZE_IMAGE_FORMAT_SWIZZLE_MAX ||
|
|
||||||
static_cast<uint32_t>(desc->format.w) > ZE_IMAGE_FORMAT_SWIZZLE_MAX) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (static_cast<uint32_t>(desc->format.type) > ZE_IMAGE_FORMAT_TYPE_MAX) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto imageDescriptor = convertDescriptor(*desc);
|
auto imageDescriptor = convertDescriptor(*desc);
|
||||||
imgInfo.imgDesc = imageDescriptor;
|
imgInfo.imgDesc = imageDescriptor;
|
||||||
imgInfo.surfaceFormat = &surfaceFormatTable[desc->format.layout][desc->format.type];
|
|
||||||
|
|
||||||
|
imgInfo.surfaceFormat = &ImageFormats::formats[desc->format.layout][desc->format.type];
|
||||||
imageFormatDesc = *const_cast<ze_image_desc_t *>(desc);
|
imageFormatDesc = *const_cast<ze_image_desc_t *>(desc);
|
||||||
|
|
||||||
UNRECOVERABLE_IF(device == nullptr);
|
UNRECOVERABLE_IF(device == nullptr);
|
||||||
|
@ -78,25 +62,26 @@ bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_d
|
||||||
UNRECOVERABLE_IF(allocation == nullptr);
|
UNRECOVERABLE_IF(allocation == nullptr);
|
||||||
|
|
||||||
auto gmm = this->allocation->getDefaultGmm();
|
auto gmm = this->allocation->getDefaultGmm();
|
||||||
NEO::SurfaceOffsets surfaceOffsets = {imgInfo.offset, imgInfo.xOffset, imgInfo.yOffset, imgInfo.yOffsetForUVPlane};
|
|
||||||
auto gmmHelper = static_cast<const NEO::RootDeviceEnvironment &>(device->getNEODevice()->getRootDeviceEnvironment()).getGmmHelper();
|
auto gmmHelper = static_cast<const NEO::RootDeviceEnvironment &>(device->getNEODevice()->getRootDeviceEnvironment()).getGmmHelper();
|
||||||
|
|
||||||
if (gmm != nullptr) {
|
if (gmm != nullptr) {
|
||||||
gmm->updateImgInfoAndDesc(imgInfo, 0u);
|
gmm->updateImgInfoAndDesc(imgInfo, 0u);
|
||||||
}
|
}
|
||||||
|
NEO::SurfaceOffsets surfaceOffsets = {imgInfo.offset, imgInfo.xOffset, imgInfo.yOffset, imgInfo.yOffsetForUVPlane};
|
||||||
|
|
||||||
{
|
{
|
||||||
surfaceState = GfxFamily::cmdInitRenderSurfaceState;
|
surfaceState = GfxFamily::cmdInitRenderSurfaceState;
|
||||||
|
|
||||||
NEO::setImageSurfaceState<GfxFamily>(&surfaceState, imgInfo, gmm, *gmmHelper, __GMM_NO_CUBE_MAP,
|
NEO::setImageSurfaceState<GfxFamily>(&surfaceState, imgInfo, gmm, *gmmHelper, __GMM_NO_CUBE_MAP,
|
||||||
this->allocation->getGpuAddress(), surfaceOffsets,
|
this->allocation->getGpuAddress(), surfaceOffsets,
|
||||||
desc->format.layout == ZE_IMAGE_FORMAT_LAYOUT_NV12);
|
isMediaFormatLayout);
|
||||||
|
|
||||||
NEO::setImageSurfaceStateDimensions<GfxFamily>(&surfaceState, imgInfo, __GMM_NO_CUBE_MAP, surfaceType);
|
NEO::setImageSurfaceStateDimensions<GfxFamily>(&surfaceState, imgInfo, __GMM_NO_CUBE_MAP, surfaceType);
|
||||||
surfaceState.setSurfaceMinLod(0u);
|
surfaceState.setSurfaceMinLod(0u);
|
||||||
surfaceState.setMipCountLod(0u);
|
surfaceState.setMipCountLod(0u);
|
||||||
NEO::setMipTailStartLod<GfxFamily>(&surfaceState, gmm);
|
NEO::setMipTailStartLod<GfxFamily>(&surfaceState, gmm);
|
||||||
|
|
||||||
|
if (!isMediaFormatLayout) {
|
||||||
surfaceState.setShaderChannelSelectRed(
|
surfaceState.setShaderChannelSelectRed(
|
||||||
static_cast<const typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT>(
|
static_cast<const typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT>(
|
||||||
shaderChannelSelect[desc->format.x]));
|
shaderChannelSelect[desc->format.x]));
|
||||||
|
@ -109,6 +94,7 @@ bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_d
|
||||||
surfaceState.setShaderChannelSelectAlpha(
|
surfaceState.setShaderChannelSelectAlpha(
|
||||||
static_cast<const typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT>(
|
static_cast<const typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT>(
|
||||||
shaderChannelSelect[desc->format.w]));
|
shaderChannelSelect[desc->format.w]));
|
||||||
|
}
|
||||||
|
|
||||||
surfaceState.setNumberOfMultisamples(RENDER_SURFACE_STATE::NUMBER_OF_MULTISAMPLES::NUMBER_OF_MULTISAMPLES_MULTISAMPLECOUNT_1);
|
surfaceState.setNumberOfMultisamples(RENDER_SURFACE_STATE::NUMBER_OF_MULTISAMPLES::NUMBER_OF_MULTISAMPLES_MULTISAMPLECOUNT_1);
|
||||||
|
|
||||||
|
@ -117,11 +103,11 @@ bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_d
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
const uint32_t exponent = Math::log2(imgInfo.surfaceFormat->NumChannels * imgInfo.surfaceFormat->PerChannelSizeInBytes);
|
const uint32_t exponent = Math::log2(imgInfo.surfaceFormat->ImageElementSizeInBytes);
|
||||||
DEBUG_BREAK_IF(exponent >= 5u);
|
DEBUG_BREAK_IF(exponent >= 5u);
|
||||||
|
|
||||||
NEO::ImageInfo imgInfoRedescirebed;
|
NEO::ImageInfo imgInfoRedescirebed;
|
||||||
imgInfoRedescirebed.surfaceFormat = &surfaceFormatsForRedescribe[exponent % 5];
|
imgInfoRedescirebed.surfaceFormat = &ImageFormats::surfaceFormatsForRedescribe[exponent % 5];
|
||||||
imgInfoRedescirebed.imgDesc = imgInfo.imgDesc;
|
imgInfoRedescirebed.imgDesc = imgInfo.imgDesc;
|
||||||
imgInfoRedescirebed.qPitch = imgInfo.qPitch;
|
imgInfoRedescirebed.qPitch = imgInfo.qPitch;
|
||||||
redescribedSurfaceState = GfxFamily::cmdInitRenderSurfaceState;
|
redescribedSurfaceState = GfxFamily::cmdInitRenderSurfaceState;
|
||||||
|
|
|
@ -13,13 +13,6 @@
|
||||||
|
|
||||||
namespace L0 {
|
namespace L0 {
|
||||||
|
|
||||||
constexpr uint32_t ZE_IMAGE_FORMAT_RENDER_LAYOUT_MAX = ZE_IMAGE_FORMAT_LAYOUT_4_4_4_4;
|
|
||||||
constexpr uint32_t ZE_IMAGE_FORMAT_MEDIA_LAYOUT_OFFSET = ZE_IMAGE_FORMAT_LAYOUT_Y8;
|
|
||||||
constexpr uint32_t ZE_IMAGE_FORMAT_MEDIA_LAYOUT_MAX = ZE_IMAGE_FORMAT_LAYOUT_P416;
|
|
||||||
constexpr uint32_t ZE_IMAGE_FORMAT_LAYOUT_MAX = ZE_IMAGE_FORMAT_MEDIA_LAYOUT_MAX;
|
|
||||||
constexpr uint32_t ZE_IMAGE_FORMAT_TYPE_MAX = ZE_IMAGE_FORMAT_TYPE_FLOAT;
|
|
||||||
constexpr uint32_t ZE_IMAGE_FORMAT_SWIZZLE_MAX = ZE_IMAGE_FORMAT_SWIZZLE_X;
|
|
||||||
|
|
||||||
struct ImageImp : public Image {
|
struct ImageImp : public Image {
|
||||||
ze_result_t destroy() override;
|
ze_result_t destroy() override;
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ set(L0_MOCKS_SOURCES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_driver_handle.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_driver_handle.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_event.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_event.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_event.h
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_event.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_gmm_resource_info_l0.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_kernel.h
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_kernel.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_memory_manager.h
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_memory_manager.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_memory_manager.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_memory_manager.cpp
|
||||||
|
@ -37,7 +38,7 @@ target_include_directories(${TARGET_NAME} PRIVATE
|
||||||
${NEO_SOURCE_DIR}/level_zero/core/test/unit_test
|
${NEO_SOURCE_DIR}/level_zero/core/test/unit_test
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(${TARGET_NAME} PRIVATE $<TARGET_PROPERTY:${L0_MOCKABLE_LIB_NAME},INTERFACE_COMPILE_DEFINITIONS>)
|
target_compile_definitions(${TARGET_NAME} PUBLIC $<TARGET_PROPERTY:${L0_MOCKABLE_LIB_NAME},INTERFACE_COMPILE_DEFINITIONS>)
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER ${TARGET_NAME_L0})
|
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER ${TARGET_NAME_L0})
|
||||||
|
|
||||||
create_source_tree(${TARGET_NAME} ${L0_ROOT_DIR})
|
create_source_tree(${TARGET_NAME} ${L0_ROOT_DIR})
|
||||||
|
|
|
@ -0,0 +1,143 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "shared/source/helpers/aligned_memory.h"
|
||||||
|
|
||||||
|
#include "opencl/test/unit_test/mocks/mock_gmm_resource_info.h"
|
||||||
|
|
||||||
|
#include "level_zero/core/source/image/image_formats.h"
|
||||||
|
|
||||||
|
using namespace ::testing;
|
||||||
|
|
||||||
|
namespace NEO {
|
||||||
|
GmmResourceInfo *GmmResourceInfo::create(GmmClientContext *clientContext, GMM_RESCREATE_PARAMS *resourceCreateParams) {
|
||||||
|
if (resourceCreateParams->Type == GMM_RESOURCE_TYPE::RESOURCE_INVALID) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
return new ::testing::NiceMock<MockGmmResourceInfo>(resourceCreateParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
GmmResourceInfo *GmmResourceInfo::create(GmmClientContext *clientContext, GMM_RESOURCE_INFO *inputGmmResourceInfo) {
|
||||||
|
return new ::testing::NiceMock<MockGmmResourceInfo>(inputGmmResourceInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
MockGmmResourceInfo::MockGmmResourceInfo(GMM_RESCREATE_PARAMS *resourceCreateParams) {
|
||||||
|
mockResourceCreateParams = *resourceCreateParams;
|
||||||
|
setupDefaultActions();
|
||||||
|
}
|
||||||
|
|
||||||
|
MockGmmResourceInfo::MockGmmResourceInfo(GMM_RESOURCE_INFO *inputGmmResourceInfo) {
|
||||||
|
mockResourceCreateParams = reinterpret_cast<MockGmmResourceInfo *>(inputGmmResourceInfo)->mockResourceCreateParams;
|
||||||
|
setupDefaultActions();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Simulate GMM behaviour. We dont want to test 3rd party lib
|
||||||
|
void MockGmmResourceInfo::setupDefaultActions() {
|
||||||
|
setSurfaceFormat();
|
||||||
|
computeRowPitch();
|
||||||
|
|
||||||
|
size = rowPitch;
|
||||||
|
size *= static_cast<size_t>(mockResourceCreateParams.BaseHeight);
|
||||||
|
|
||||||
|
qPitch = alignUp((uint32_t)size, 64);
|
||||||
|
|
||||||
|
size *= mockResourceCreateParams.Depth ? static_cast<size_t>(mockResourceCreateParams.Depth) : 1;
|
||||||
|
size *= mockResourceCreateParams.ArraySize ? static_cast<size_t>(mockResourceCreateParams.ArraySize) : 1;
|
||||||
|
size = alignUp(size, MemoryConstants::pageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
GMM_STATUS MockGmmResourceInfo::getOffset(GMM_REQ_OFFSET_INFO &reqOffsetInfo) {
|
||||||
|
arrayIndexPassedToGetOffset = reqOffsetInfo.ArrayIndex;
|
||||||
|
getOffsetCalled++;
|
||||||
|
|
||||||
|
reqOffsetInfo.Lock.Offset = 16;
|
||||||
|
reqOffsetInfo.Lock.Pitch = 2;
|
||||||
|
reqOffsetInfo.Render.YOffset = 1;
|
||||||
|
if (mockResourceCreateParams.Format == GMM_RESOURCE_FORMAT::GMM_FORMAT_NV12) {
|
||||||
|
reqOffsetInfo.Render.XOffset = 32;
|
||||||
|
reqOffsetInfo.Render.Offset = 64;
|
||||||
|
}
|
||||||
|
if (reqOffsetInfo.Slice == 1) {
|
||||||
|
reqOffsetInfo.Render.YOffset = mockResourceCreateParams.BaseHeight;
|
||||||
|
}
|
||||||
|
if (reqOffsetInfo.MipLevel > 0) {
|
||||||
|
reqOffsetInfo.Lock.Offset = 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GMM_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MockGmmResourceInfo::computeRowPitch() {
|
||||||
|
if (mockResourceCreateParams.OverridePitch) {
|
||||||
|
rowPitch = mockResourceCreateParams.OverridePitch;
|
||||||
|
} else {
|
||||||
|
rowPitch = static_cast<size_t>(mockResourceCreateParams.BaseWidth64 * (surfaceFormatInfo->ImageElementSizeInBytes));
|
||||||
|
rowPitch = alignUp(rowPitch, 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MockGmmResourceInfo::setSurfaceFormat() {
|
||||||
|
auto iterateL0Formats = [&](const std::array<L0::ImageFormats::FormatTypes, 30> &formats) {
|
||||||
|
if (!surfaceFormatInfo) {
|
||||||
|
for (auto &formatArray : formats) {
|
||||||
|
for (auto &format : formatArray) {
|
||||||
|
if (mockResourceCreateParams.Format == format.GMMSurfaceFormat) {
|
||||||
|
surfaceFormatInfo = &format;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
iterateL0Formats(L0::ImageFormats::formats);
|
||||||
|
|
||||||
|
if (mockResourceCreateParams.Format == GMM_FORMAT_GENERIC_8BIT) {
|
||||||
|
static const NEO::SurfaceFormatInfo surfaceFormatGMM8BIT = {GMM_FORMAT_GENERIC_8BIT, GFX3DSTATE_SURFACEFORMAT_R8_UNORM, 0, 1, 1, 1};
|
||||||
|
surfaceFormatInfo = &surfaceFormatGMM8BIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSERT_NE(nullptr, surfaceFormatInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t MockGmmResourceInfo::getBitsPerPixel() {
|
||||||
|
return static_cast<uint32_t>(surfaceFormatInfo->ImageElementSizeInBytes * 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MockGmmResourceInfo::setUnifiedAuxTranslationCapable() {
|
||||||
|
mockResourceCreateParams.Flags.Gpu.CCS = 1;
|
||||||
|
mockResourceCreateParams.Flags.Gpu.UnifiedAuxSurface = 1;
|
||||||
|
mockResourceCreateParams.Flags.Info.RenderCompressed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MockGmmResourceInfo::setMultisampleControlSurface() {
|
||||||
|
mockResourceCreateParams.Flags.Gpu.MCS = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MockGmmResourceInfo::setUnifiedAuxPitchTiles(uint32_t value) {
|
||||||
|
this->unifiedAuxPitch = value;
|
||||||
|
}
|
||||||
|
void MockGmmResourceInfo::setAuxQPitch(uint32_t value) {
|
||||||
|
this->auxQPitch = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t MockGmmResourceInfo::getTileModeSurfaceState() {
|
||||||
|
if (mockResourceCreateParams.Flags.Info.Linear == 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mockResourceCreateParams.Type == GMM_RESOURCE_TYPE::RESOURCE_2D ||
|
||||||
|
mockResourceCreateParams.Type == GMM_RESOURCE_TYPE::RESOURCE_3D) {
|
||||||
|
return 3;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MockGmmResourceInfo::MockGmmResourceInfo() {}
|
||||||
|
MockGmmResourceInfo::~MockGmmResourceInfo() {}
|
||||||
|
} // namespace NEO
|
|
@ -5,13 +5,18 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "shared/source/gmm_helper/gmm.h"
|
||||||
|
#include "shared/source/gmm_helper/resource_info.h"
|
||||||
|
#include "shared/source/helpers/surface_format_info.h"
|
||||||
#include "shared/test/unit_test/helpers/default_hw_info.h"
|
#include "shared/test/unit_test/helpers/default_hw_info.h"
|
||||||
#include "shared/test/unit_test/mocks/mock_device.h"
|
#include "shared/test/unit_test/mocks/mock_device.h"
|
||||||
|
|
||||||
#include "test.h"
|
#include "test.h"
|
||||||
|
|
||||||
|
#include "level_zero/core/source/image/image_formats.h"
|
||||||
#include "level_zero/core/source/image/image_hw.h"
|
#include "level_zero/core/source/image/image_hw.h"
|
||||||
#include "level_zero/core/test/unit_tests/fixtures/device_fixture.h"
|
#include "level_zero/core/test/unit_tests/fixtures/device_fixture.h"
|
||||||
|
#include "level_zero/core/test/unit_tests/mocks/mock_device.h"
|
||||||
|
|
||||||
namespace L0 {
|
namespace L0 {
|
||||||
namespace ult {
|
namespace ult {
|
||||||
|
@ -64,7 +69,7 @@ TEST(ImageStaticFunctionDescriptorTest, givenZeImageDescWhenConvertDescriptorThe
|
||||||
EXPECT_EQ(desc.numSamples, 0u);
|
EXPECT_EQ(desc.numSamples, 0u);
|
||||||
}
|
}
|
||||||
|
|
||||||
using ImageSupport = IsAtMostProduct<IGFX_TIGERLAKE_LP>;
|
using ImageSupport = IsWithinProducts<IGFX_SKYLAKE, IGFX_TIGERLAKE_LP>;
|
||||||
using ImageCreate = Test<DeviceFixture>;
|
using ImageCreate = Test<DeviceFixture>;
|
||||||
|
|
||||||
HWTEST2_F(ImageCreate, givenValidImageDescriptionWhenImageCreateThenImageIsCreatedCorrectly, ImageSupport) {
|
HWTEST2_F(ImageCreate, givenValidImageDescriptionWhenImageCreateThenImageIsCreatedCorrectly, ImageSupport) {
|
||||||
|
@ -107,5 +112,183 @@ HWTEST2_F(ImageCreate, givenValidImageDescriptionWhenImageCreateThenImageIsCreat
|
||||||
EXPECT_EQ(imageInfo.useLocalMemory, false);
|
EXPECT_EQ(imageInfo.useLocalMemory, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TestImageFormats : public DeviceFixture, public testing::TestWithParam<std::pair<ze_image_format_layout_t, ze_image_format_type_t>> {
|
||||||
|
void SetUp() override {
|
||||||
|
DeviceFixture::SetUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TearDown() override {
|
||||||
|
DeviceFixture::TearDown();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <GFXCORE_FAMILY T>
|
||||||
|
struct WhiteBox<::L0::ImageCoreFamily<T>> : public ::L0::ImageCoreFamily<T> {
|
||||||
|
using BaseClass = ::L0::ImageCoreFamily<T>;
|
||||||
|
using BaseClass::redescribedSurfaceState;
|
||||||
|
using BaseClass::surfaceState;
|
||||||
|
};
|
||||||
|
|
||||||
|
HWTEST2_F(ImageCreate, givenDifferentSwizzleFormatWhenImageInitializeThenCorrectSwizzleInRSSIsSet, ImageSupport) {
|
||||||
|
using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE;
|
||||||
|
|
||||||
|
ze_image_desc_t desc = {};
|
||||||
|
|
||||||
|
desc.type = ZE_IMAGE_TYPE_3D;
|
||||||
|
desc.format.layout = ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8;
|
||||||
|
desc.format.type = ZE_IMAGE_FORMAT_TYPE_UINT;
|
||||||
|
desc.width = 11;
|
||||||
|
desc.height = 13;
|
||||||
|
desc.depth = 17;
|
||||||
|
|
||||||
|
desc.format.x = ZE_IMAGE_FORMAT_SWIZZLE_A;
|
||||||
|
desc.format.y = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||||
|
desc.format.z = ZE_IMAGE_FORMAT_SWIZZLE_1;
|
||||||
|
desc.format.w = ZE_IMAGE_FORMAT_SWIZZLE_X;
|
||||||
|
|
||||||
|
auto imageHW = std::make_unique<WhiteBox<::L0::ImageCoreFamily<gfxCoreFamily>>>();
|
||||||
|
bool ret = imageHW->initialize(device, &desc);
|
||||||
|
ASSERT_TRUE(ret);
|
||||||
|
|
||||||
|
auto surfaceState = &imageHW->surfaceState;
|
||||||
|
|
||||||
|
ASSERT_EQ(surfaceState->getShaderChannelSelectRed(),
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ALPHA);
|
||||||
|
ASSERT_EQ(surfaceState->getShaderChannelSelectGreen(),
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO);
|
||||||
|
ASSERT_EQ(surfaceState->getShaderChannelSelectBlue(),
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ONE);
|
||||||
|
ASSERT_EQ(surfaceState->getShaderChannelSelectAlpha(),
|
||||||
|
RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
|
HWTEST2_P(TestImageFormats, givenValidLayoutAndTypeWhenCreateImageCoreFamilyThenValidImageIsCreated, ImageSupport) {
|
||||||
|
auto params = GetParam();
|
||||||
|
|
||||||
|
ze_image_desc_t zeDesc = {};
|
||||||
|
zeDesc.arraylevels = 1u;
|
||||||
|
zeDesc.depth = 10u;
|
||||||
|
zeDesc.height = 10u;
|
||||||
|
zeDesc.width = 10u;
|
||||||
|
zeDesc.miplevels = 1u;
|
||||||
|
zeDesc.type = ZE_IMAGE_TYPE_2D;
|
||||||
|
zeDesc.version = ZE_IMAGE_DESC_VERSION_CURRENT;
|
||||||
|
zeDesc.flags = ZE_IMAGE_FLAG_PROGRAM_READ;
|
||||||
|
|
||||||
|
zeDesc.format = {params.first,
|
||||||
|
params.second,
|
||||||
|
ZE_IMAGE_FORMAT_SWIZZLE_R,
|
||||||
|
ZE_IMAGE_FORMAT_SWIZZLE_G,
|
||||||
|
ZE_IMAGE_FORMAT_SWIZZLE_B,
|
||||||
|
ZE_IMAGE_FORMAT_SWIZZLE_A};
|
||||||
|
|
||||||
|
auto imageHW = std::make_unique<WhiteBox<::L0::ImageCoreFamily<gfxCoreFamily>>>();
|
||||||
|
|
||||||
|
imageHW->initialize(device, &zeDesc);
|
||||||
|
|
||||||
|
EXPECT_EQ(imageHW->getAllocation()->getAllocationType(), NEO::GraphicsAllocation::AllocationType::IMAGE);
|
||||||
|
auto RSS = imageHW->surfaceState;
|
||||||
|
EXPECT_EQ(RSS.getSurfaceType(), FamilyType::RENDER_SURFACE_STATE::SURFACE_TYPE_SURFTYPE_2D);
|
||||||
|
EXPECT_EQ(RSS.getAuxiliarySurfaceMode(), FamilyType::RENDER_SURFACE_STATE::AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_NONE);
|
||||||
|
EXPECT_EQ(RSS.getRenderTargetViewExtent(), 1u);
|
||||||
|
|
||||||
|
auto hAlign = static_cast<typename FamilyType::RENDER_SURFACE_STATE::SURFACE_HORIZONTAL_ALIGNMENT>(imageHW->getAllocation()->getDefaultGmm()->gmmResourceInfo->getHAlignSurfaceState());
|
||||||
|
auto vAlign = static_cast<typename FamilyType::RENDER_SURFACE_STATE::SURFACE_VERTICAL_ALIGNMENT>(imageHW->getAllocation()->getDefaultGmm()->gmmResourceInfo->getVAlignSurfaceState());
|
||||||
|
|
||||||
|
EXPECT_EQ(RSS.getSurfaceHorizontalAlignment(), hAlign);
|
||||||
|
EXPECT_EQ(RSS.getSurfaceVerticalAlignment(), vAlign);
|
||||||
|
|
||||||
|
auto isMediaFormatLayout = imageHW->isMediaFormat(params.first);
|
||||||
|
if (isMediaFormatLayout) {
|
||||||
|
auto imgInfo = imageHW->getImageInfo();
|
||||||
|
EXPECT_EQ(RSS.getShaderChannelSelectAlpha(), FamilyType::RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ONE);
|
||||||
|
EXPECT_EQ(RSS.getYOffsetForUOrUvPlane(), imgInfo.yOffsetForUVPlane);
|
||||||
|
EXPECT_EQ(RSS.getXOffsetForUOrUvPlane(), imgInfo.xOffset);
|
||||||
|
} else {
|
||||||
|
EXPECT_EQ(RSS.getYOffsetForUOrUvPlane(), 0u);
|
||||||
|
EXPECT_EQ(RSS.getXOffsetForUOrUvPlane(), 0u);
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPECT_EQ(RSS.getSurfaceMinLod(), 0u);
|
||||||
|
EXPECT_EQ(RSS.getMipCountLod(), 0u);
|
||||||
|
|
||||||
|
if (!isMediaFormatLayout) {
|
||||||
|
EXPECT_EQ(RSS.getShaderChannelSelectRed(), FamilyType::RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT::SHADER_CHANNEL_SELECT_RED);
|
||||||
|
EXPECT_EQ(RSS.getShaderChannelSelectGreen(), FamilyType::RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT::SHADER_CHANNEL_SELECT_GREEN);
|
||||||
|
EXPECT_EQ(RSS.getShaderChannelSelectBlue(), FamilyType::RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT::SHADER_CHANNEL_SELECT_BLUE);
|
||||||
|
EXPECT_EQ(RSS.getShaderChannelSelectAlpha(), FamilyType::RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT::SHADER_CHANNEL_SELECT_ALPHA);
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPECT_EQ(RSS.getNumberOfMultisamples(), FamilyType::RENDER_SURFACE_STATE::NUMBER_OF_MULTISAMPLES::NUMBER_OF_MULTISAMPLES_MULTISAMPLECOUNT_1);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<ze_image_format_layout_t, ze_image_format_type_t> validFormats[] = {
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_FLOAT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_FLOAT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_FLOAT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_FLOAT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_FLOAT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_FLOAT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2, ZE_IMAGE_FORMAT_TYPE_UINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2, ZE_IMAGE_FORMAT_TYPE_SINT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2, ZE_IMAGE_FORMAT_TYPE_SNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_11_11_10, ZE_IMAGE_FORMAT_TYPE_FLOAT},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_5_6_5, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_4_4_4_4, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_Y8, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_NV12, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_YUYV, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_VYUY, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_YVYU, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_UYVY, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_AYUV, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_P010, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_Y410, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_P012, ZE_IMAGE_FORMAT_TYPE_UNORM},
|
||||||
|
{ZE_IMAGE_FORMAT_LAYOUT_P016, ZE_IMAGE_FORMAT_TYPE_UNORM}};
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_CASE_P(
|
||||||
|
validImageFormats,
|
||||||
|
TestImageFormats,
|
||||||
|
testing::ValuesIn(validFormats));
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
} // namespace L0
|
} // namespace L0
|
||||||
|
|
|
@ -75,7 +75,7 @@ void MockGmmResourceInfo::computeRowPitch() {
|
||||||
if (mockResourceCreateParams.OverridePitch) {
|
if (mockResourceCreateParams.OverridePitch) {
|
||||||
rowPitch = mockResourceCreateParams.OverridePitch;
|
rowPitch = mockResourceCreateParams.OverridePitch;
|
||||||
} else {
|
} else {
|
||||||
rowPitch = static_cast<size_t>(mockResourceCreateParams.BaseWidth64 * (surfaceFormatInfo->PerChannelSizeInBytes * surfaceFormatInfo->NumChannels));
|
rowPitch = static_cast<size_t>(mockResourceCreateParams.BaseWidth64 * (surfaceFormatInfo->ImageElementSizeInBytes));
|
||||||
rowPitch = alignUp(rowPitch, 64);
|
rowPitch = alignUp(rowPitch, 64);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ void MockGmmResourceInfo::setSurfaceFormat() {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t MockGmmResourceInfo::getBitsPerPixel() {
|
uint32_t MockGmmResourceInfo::getBitsPerPixel() {
|
||||||
return (surfaceFormatInfo->PerChannelSizeInBytes << 3) * surfaceFormatInfo->NumChannels;
|
return static_cast<uint32_t>(surfaceFormatInfo->ImageElementSizeInBytes * 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MockGmmResourceInfo::setUnifiedAuxTranslationCapable() {
|
void MockGmmResourceInfo::setUnifiedAuxTranslationCapable() {
|
||||||
|
|
|
@ -2457,6 +2457,7 @@ typedef struct tagRENDER_SURFACE_STATE {
|
||||||
SURFACE_FORMAT_BC7_UNORM_SRGB = 0x1a3,
|
SURFACE_FORMAT_BC7_UNORM_SRGB = 0x1a3,
|
||||||
SURFACE_FORMAT_BC6H_UF16 = 0x1a4,
|
SURFACE_FORMAT_BC6H_UF16 = 0x1a4,
|
||||||
SURFACE_FORMAT_PLANAR_420_8 = 0x1a5,
|
SURFACE_FORMAT_PLANAR_420_8 = 0x1a5,
|
||||||
|
SURFACE_FORMAT_PLANAR_420_16 = 0x1a6,
|
||||||
SURFACE_FORMAT_R8G8B8_UNORM_SRGB = 0x1a8,
|
SURFACE_FORMAT_R8G8B8_UNORM_SRGB = 0x1a8,
|
||||||
SURFACE_FORMAT_ETC1_RGB8 = 0x1a9,
|
SURFACE_FORMAT_ETC1_RGB8 = 0x1a9,
|
||||||
SURFACE_FORMAT_ETC2_RGB8 = 0x1aa,
|
SURFACE_FORMAT_ETC2_RGB8 = 0x1aa,
|
||||||
|
|
|
@ -216,6 +216,7 @@ void Gmm::updateOffsetsInImgInfo(ImageInfo &imgInfo, uint32_t arrayIndex) {
|
||||||
reqOffsetInfo.ArrayIndex = arrayIndex;
|
reqOffsetInfo.ArrayIndex = arrayIndex;
|
||||||
reqOffsetInfo.Plane = imgInfo.plane;
|
reqOffsetInfo.Plane = imgInfo.plane;
|
||||||
gmmResourceInfo->getOffset(reqOffsetInfo);
|
gmmResourceInfo->getOffset(reqOffsetInfo);
|
||||||
|
UNRECOVERABLE_IF(gmmResourceInfo->getBitsPerPixel() == 0u);
|
||||||
imgInfo.xOffset = reqOffsetInfo.Render.XOffset / (gmmResourceInfo->getBitsPerPixel() / 8);
|
imgInfo.xOffset = reqOffsetInfo.Render.XOffset / (gmmResourceInfo->getBitsPerPixel() / 8);
|
||||||
imgInfo.yOffset = reqOffsetInfo.Render.YOffset;
|
imgInfo.yOffset = reqOffsetInfo.Render.YOffset;
|
||||||
imgInfo.offset = reqOffsetInfo.Render.Offset;
|
imgInfo.offset = reqOffsetInfo.Render.Offset;
|
||||||
|
|
|
@ -139,6 +139,7 @@ enum GFX3DSTATE_SURFACEFORMAT : unsigned short {
|
||||||
GFX3DSTATE_SURFACEFORMAT_R8_USCALED = 0x14A,
|
GFX3DSTATE_SURFACEFORMAT_R8_USCALED = 0x14A,
|
||||||
GFX3DSTATE_SURFACEFORMAT_P8_UNORM = 0x14B,
|
GFX3DSTATE_SURFACEFORMAT_P8_UNORM = 0x14B,
|
||||||
GFX3DSTATE_SURFACEFORMAT_L8_UNORM_SRGB = 0x14C,
|
GFX3DSTATE_SURFACEFORMAT_L8_UNORM_SRGB = 0x14C,
|
||||||
|
GFX3DSTATE_SURFACEFORMAT_Y8_UNORM = 0x150,
|
||||||
GFX3DSTATE_SURFACEFORMAT_DXT1_RGB_SRGB = 0x180,
|
GFX3DSTATE_SURFACEFORMAT_DXT1_RGB_SRGB = 0x180,
|
||||||
GFX3DSTATE_SURFACEFORMAT_R1_UINT = 0x181,
|
GFX3DSTATE_SURFACEFORMAT_R1_UINT = 0x181,
|
||||||
GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL = 0x182,
|
GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL = 0x182,
|
||||||
|
@ -175,6 +176,9 @@ enum GFX3DSTATE_SURFACEFORMAT : unsigned short {
|
||||||
GFX3DSTATE_SURFACEFORMAT_BC7_UNORM_SRGB = 0x1A3,
|
GFX3DSTATE_SURFACEFORMAT_BC7_UNORM_SRGB = 0x1A3,
|
||||||
GFX3DSTATE_SURFACEFORMAT_BC6H_UF16 = 0x1A4,
|
GFX3DSTATE_SURFACEFORMAT_BC6H_UF16 = 0x1A4,
|
||||||
GFX3DSTATE_SURFACEFORMAT_NV12 = 0x1A5,
|
GFX3DSTATE_SURFACEFORMAT_NV12 = 0x1A5,
|
||||||
|
GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16 = 0x1a6,
|
||||||
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SINT = 0x1b6,
|
||||||
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SNORM = 0x1b3,
|
||||||
GFX3DSTATE_SURFACEFORMAT_RAW = 0x1FF,
|
GFX3DSTATE_SURFACEFORMAT_RAW = 0x1FF,
|
||||||
NUM_GFX3DSTATE_SURFACEFORMATS
|
NUM_GFX3DSTATE_SURFACEFORMATS
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue