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}
|
||||
PUBLIC MOCKABLE_VIRTUAL=virtual
|
||||
PRIVATE
|
||||
PUBLIC
|
||||
${COMPUTE_RUNTIME_DEFINITIONS}
|
||||
)
|
||||
else()
|
||||
|
@ -346,7 +346,7 @@ function(generate_l0_lib LIB_NAME MOCKABLE)
|
|||
)
|
||||
target_compile_definitions(${LIB_NAME}
|
||||
PUBLIC MOCKABLE_VIRTUAL=
|
||||
PRIVATE
|
||||
PUBLIC
|
||||
${COMPUTE_RUNTIME_DEFINITIONS}
|
||||
)
|
||||
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${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_resource_info.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_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.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.inl
|
||||
${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) {
|
||||
|
||||
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;
|
||||
|
||||
|
@ -329,7 +329,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendImageCopyToMemory(void *
|
|||
ze_event_handle_t *phWaitEvents) {
|
||||
|
||||
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;
|
||||
|
||||
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) {
|
||||
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;
|
||||
*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/indirect_heap/indirect_heap.h"
|
||||
|
||||
#include "level_zero/core/source/image/image_formats_append.h"
|
||||
#include "level_zero/core/source/image/image_imp.h"
|
||||
|
||||
namespace L0 {
|
||||
|
@ -21,121 +20,31 @@ template <GFXCORE_FAMILY gfxCoreFamily>
|
|||
struct ImageCoreFamily : public ImageImp {
|
||||
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
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;
|
||||
|
||||
void copySurfaceStateToSSH(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:
|
||||
RENDER_SURFACE_STATE surfaceState;
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "shared/source/memory_manager/memory_manager.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"
|
||||
|
||||
namespace L0 {
|
||||
|
@ -23,29 +24,12 @@ template <GFXCORE_FAMILY gfxCoreFamily>
|
|||
bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_desc_t *desc) {
|
||||
using RENDER_SURFACE_STATE = typename GfxFamily::RENDER_SURFACE_STATE;
|
||||
|
||||
if (static_cast<uint32_t>(desc->format.layout) > ZE_IMAGE_FORMAT_LAYOUT_MAX) {
|
||||
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;
|
||||
}
|
||||
bool isMediaFormatLayout = isMediaFormat(desc->format.layout);
|
||||
|
||||
auto imageDescriptor = convertDescriptor(*desc);
|
||||
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);
|
||||
|
||||
UNRECOVERABLE_IF(device == nullptr);
|
||||
|
@ -78,25 +62,26 @@ bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_d
|
|||
UNRECOVERABLE_IF(allocation == nullptr);
|
||||
|
||||
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();
|
||||
|
||||
if (gmm != nullptr) {
|
||||
gmm->updateImgInfoAndDesc(imgInfo, 0u);
|
||||
}
|
||||
NEO::SurfaceOffsets surfaceOffsets = {imgInfo.offset, imgInfo.xOffset, imgInfo.yOffset, imgInfo.yOffsetForUVPlane};
|
||||
|
||||
{
|
||||
surfaceState = GfxFamily::cmdInitRenderSurfaceState;
|
||||
|
||||
NEO::setImageSurfaceState<GfxFamily>(&surfaceState, imgInfo, gmm, *gmmHelper, __GMM_NO_CUBE_MAP,
|
||||
this->allocation->getGpuAddress(), surfaceOffsets,
|
||||
desc->format.layout == ZE_IMAGE_FORMAT_LAYOUT_NV12);
|
||||
isMediaFormatLayout);
|
||||
|
||||
NEO::setImageSurfaceStateDimensions<GfxFamily>(&surfaceState, imgInfo, __GMM_NO_CUBE_MAP, surfaceType);
|
||||
surfaceState.setSurfaceMinLod(0u);
|
||||
surfaceState.setMipCountLod(0u);
|
||||
NEO::setMipTailStartLod<GfxFamily>(&surfaceState, gmm);
|
||||
|
||||
if (!isMediaFormatLayout) {
|
||||
surfaceState.setShaderChannelSelectRed(
|
||||
static_cast<const typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT>(
|
||||
shaderChannelSelect[desc->format.x]));
|
||||
|
@ -109,6 +94,7 @@ bool ImageCoreFamily<gfxCoreFamily>::initialize(Device *device, const ze_image_d
|
|||
surfaceState.setShaderChannelSelectAlpha(
|
||||
static_cast<const typename RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT>(
|
||||
shaderChannelSelect[desc->format.w]));
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
NEO::ImageInfo imgInfoRedescirebed;
|
||||
imgInfoRedescirebed.surfaceFormat = &surfaceFormatsForRedescribe[exponent % 5];
|
||||
imgInfoRedescirebed.surfaceFormat = &ImageFormats::surfaceFormatsForRedescribe[exponent % 5];
|
||||
imgInfoRedescirebed.imgDesc = imgInfo.imgDesc;
|
||||
imgInfoRedescirebed.qPitch = imgInfo.qPitch;
|
||||
redescribedSurfaceState = GfxFamily::cmdInitRenderSurfaceState;
|
||||
|
|
|
@ -13,13 +13,6 @@
|
|||
|
||||
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 {
|
||||
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_event.cpp
|
||||
${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_memory_manager.h
|
||||
${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
|
||||
)
|
||||
|
||||
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})
|
||||
|
||||
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/mocks/mock_device.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/test/unit_tests/fixtures/device_fixture.h"
|
||||
#include "level_zero/core/test/unit_tests/mocks/mock_device.h"
|
||||
|
||||
namespace L0 {
|
||||
namespace ult {
|
||||
|
@ -64,7 +69,7 @@ TEST(ImageStaticFunctionDescriptorTest, givenZeImageDescWhenConvertDescriptorThe
|
|||
EXPECT_EQ(desc.numSamples, 0u);
|
||||
}
|
||||
|
||||
using ImageSupport = IsAtMostProduct<IGFX_TIGERLAKE_LP>;
|
||||
using ImageSupport = IsWithinProducts<IGFX_SKYLAKE, IGFX_TIGERLAKE_LP>;
|
||||
using ImageCreate = Test<DeviceFixture>;
|
||||
|
||||
HWTEST2_F(ImageCreate, givenValidImageDescriptionWhenImageCreateThenImageIsCreatedCorrectly, ImageSupport) {
|
||||
|
@ -107,5 +112,183 @@ HWTEST2_F(ImageCreate, givenValidImageDescriptionWhenImageCreateThenImageIsCreat
|
|||
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 L0
|
||||
|
|
|
@ -75,7 +75,7 @@ void MockGmmResourceInfo::computeRowPitch() {
|
|||
if (mockResourceCreateParams.OverridePitch) {
|
||||
rowPitch = mockResourceCreateParams.OverridePitch;
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ void MockGmmResourceInfo::setSurfaceFormat() {
|
|||
}
|
||||
|
||||
uint32_t MockGmmResourceInfo::getBitsPerPixel() {
|
||||
return (surfaceFormatInfo->PerChannelSizeInBytes << 3) * surfaceFormatInfo->NumChannels;
|
||||
return static_cast<uint32_t>(surfaceFormatInfo->ImageElementSizeInBytes * 8);
|
||||
}
|
||||
|
||||
void MockGmmResourceInfo::setUnifiedAuxTranslationCapable() {
|
||||
|
|
|
@ -2457,6 +2457,7 @@ typedef struct tagRENDER_SURFACE_STATE {
|
|||
SURFACE_FORMAT_BC7_UNORM_SRGB = 0x1a3,
|
||||
SURFACE_FORMAT_BC6H_UF16 = 0x1a4,
|
||||
SURFACE_FORMAT_PLANAR_420_8 = 0x1a5,
|
||||
SURFACE_FORMAT_PLANAR_420_16 = 0x1a6,
|
||||
SURFACE_FORMAT_R8G8B8_UNORM_SRGB = 0x1a8,
|
||||
SURFACE_FORMAT_ETC1_RGB8 = 0x1a9,
|
||||
SURFACE_FORMAT_ETC2_RGB8 = 0x1aa,
|
||||
|
|
|
@ -216,6 +216,7 @@ void Gmm::updateOffsetsInImgInfo(ImageInfo &imgInfo, uint32_t arrayIndex) {
|
|||
reqOffsetInfo.ArrayIndex = arrayIndex;
|
||||
reqOffsetInfo.Plane = imgInfo.plane;
|
||||
gmmResourceInfo->getOffset(reqOffsetInfo);
|
||||
UNRECOVERABLE_IF(gmmResourceInfo->getBitsPerPixel() == 0u);
|
||||
imgInfo.xOffset = reqOffsetInfo.Render.XOffset / (gmmResourceInfo->getBitsPerPixel() / 8);
|
||||
imgInfo.yOffset = reqOffsetInfo.Render.YOffset;
|
||||
imgInfo.offset = reqOffsetInfo.Render.Offset;
|
||||
|
|
|
@ -139,6 +139,7 @@ enum GFX3DSTATE_SURFACEFORMAT : unsigned short {
|
|||
GFX3DSTATE_SURFACEFORMAT_R8_USCALED = 0x14A,
|
||||
GFX3DSTATE_SURFACEFORMAT_P8_UNORM = 0x14B,
|
||||
GFX3DSTATE_SURFACEFORMAT_L8_UNORM_SRGB = 0x14C,
|
||||
GFX3DSTATE_SURFACEFORMAT_Y8_UNORM = 0x150,
|
||||
GFX3DSTATE_SURFACEFORMAT_DXT1_RGB_SRGB = 0x180,
|
||||
GFX3DSTATE_SURFACEFORMAT_R1_UINT = 0x181,
|
||||
GFX3DSTATE_SURFACEFORMAT_YCRCB_NORMAL = 0x182,
|
||||
|
@ -175,6 +176,9 @@ enum GFX3DSTATE_SURFACEFORMAT : unsigned short {
|
|||
GFX3DSTATE_SURFACEFORMAT_BC7_UNORM_SRGB = 0x1A3,
|
||||
GFX3DSTATE_SURFACEFORMAT_BC6H_UF16 = 0x1A4,
|
||||
GFX3DSTATE_SURFACEFORMAT_NV12 = 0x1A5,
|
||||
GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16 = 0x1a6,
|
||||
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SINT = 0x1b6,
|
||||
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SNORM = 0x1b3,
|
||||
GFX3DSTATE_SURFACEFORMAT_RAW = 0x1FF,
|
||||
NUM_GFX3DSTATE_SURFACEFORMATS
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue