mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-23 03:01:20 +08:00
- always issue flush request before export Apparently it's expected to flush the object (which might convert them from one format to another for export, or remove aux buffer uses or anything not supported by export). - use modifier to select tiling mode Previously we just assumed that whatever tiling mode was picked by mesa will match the one picked by GMMLIB but that's not always the case and in particular on Arc and Xe it doesn't work ... Mesa picks Tile4 and GMMLIB picks Tile64 ... Fixes: #761 Fixes: #736 Signed-off-by: Sylvain Munaut <tnt@246tNt.com> Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
299 lines
11 KiB
C++
299 lines
11 KiB
C++
/*
|
|
* Copyright (C) 2020-2024 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
#include "shared/source/gmm_helper/gmm_lib.h"
|
|
|
|
#include "third_party/opencl_headers/CL/cl_ext.h"
|
|
|
|
namespace NEO {
|
|
enum SurfaceFormat : unsigned short {
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_FLOAT = 0x000,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_SINT = 0x001,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_UINT = 0x002,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_UNORM = 0x003,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_SNORM = 0x004,
|
|
GFX3DSTATE_SURFACEFORMAT_R64G64_FLOAT = 0x005,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32X32_FLOAT = 0x006,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_SSCALED = 0x007,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_USCALED = 0x008,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32_FLOAT = 0x040,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32_SINT = 0x041,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32_UINT = 0x042,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32_UNORM = 0x043,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32_SNORM = 0x044,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32_SSCALED = 0x045,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32B32_USCALED = 0x046,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_UNORM = 0x080,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SNORM = 0x081,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SINT = 0x082,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_UINT = 0x083,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_FLOAT = 0x084,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32_FLOAT = 0x085,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32_SINT = 0x086,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32_UINT = 0x087,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS = 0x088,
|
|
GFX3DSTATE_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT = 0x089,
|
|
GFX3DSTATE_SURFACEFORMAT_L32A32_FLOAT = 0x08A,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32_UNORM = 0x08B,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32_SNORM = 0x08C,
|
|
GFX3DSTATE_SURFACEFORMAT_R64_FLOAT = 0x08D,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16X16_UNORM = 0x08E,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16X16_FLOAT = 0x08F,
|
|
GFX3DSTATE_SURFACEFORMAT_A32X32_FLOAT = 0x090,
|
|
GFX3DSTATE_SURFACEFORMAT_L32X32_FLOAT = 0x091,
|
|
GFX3DSTATE_SURFACEFORMAT_I32X32_FLOAT = 0x092,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SSCALED = 0x093,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_USCALED = 0x094,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32_SSCALED = 0x095,
|
|
GFX3DSTATE_SURFACEFORMAT_R32G32_USCALED = 0x096,
|
|
GFX3DSTATE_SURFACEFORMAT_B8G8R8A8_UNORM = 0x0C0,
|
|
GFX3DSTATE_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB = 0x0C1,
|
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM = 0x0C2,
|
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB = 0x0C3,
|
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_UINT = 0x0C4,
|
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM = 0x0C5,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM = 0x0C7,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB = 0x0C8,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SNORM = 0x0C9,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SINT = 0x0CA,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UINT = 0x0CB,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16_UNORM = 0x0CC,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16_SNORM = 0x0CD,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16_SINT = 0x0CE,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16_UINT = 0x0CF,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16_FLOAT = 0x0D0,
|
|
GFX3DSTATE_SURFACEFORMAT_B10G10R10A2_UNORM = 0x0D1,
|
|
GFX3DSTATE_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB = 0x0D2,
|
|
GFX3DSTATE_SURFACEFORMAT_R11G11B10_FLOAT = 0x0D3,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_SINT = 0x0D6,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_UINT = 0x0D7,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_FLOAT = 0x0D8,
|
|
GFX3DSTATE_SURFACEFORMAT_R24_UNORM_X8_TYPELESS = 0x0D9,
|
|
GFX3DSTATE_SURFACEFORMAT_X24_TYPELESS_G8_UINT = 0x0DA,
|
|
GFX3DSTATE_SURFACEFORMAT_L16A16_UNORM = 0x0DF,
|
|
GFX3DSTATE_SURFACEFORMAT_I24X8_UNORM = 0x0E0,
|
|
GFX3DSTATE_SURFACEFORMAT_L24X8_UNORM = 0x0E1,
|
|
GFX3DSTATE_SURFACEFORMAT_A24X8_UNORM = 0x0E2,
|
|
GFX3DSTATE_SURFACEFORMAT_I32_FLOAT = 0x0E3,
|
|
GFX3DSTATE_SURFACEFORMAT_L32_FLOAT = 0x0E4,
|
|
GFX3DSTATE_SURFACEFORMAT_A32_FLOAT = 0x0E5,
|
|
GFX3DSTATE_SURFACEFORMAT_B8G8R8X8_UNORM = 0x0E9,
|
|
GFX3DSTATE_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB = 0x0EA,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8X8_UNORM = 0x0EB,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB = 0x0EC,
|
|
GFX3DSTATE_SURFACEFORMAT_R9G9B9E5_SHAREDEXP = 0x0ED,
|
|
GFX3DSTATE_SURFACEFORMAT_B10G10R10X2_UNORM = 0x0EE,
|
|
GFX3DSTATE_SURFACEFORMAT_L16A16_FLOAT = 0x0F0,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_UNORM = 0x0F1,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_SNORM = 0x0F2,
|
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10X2_USCALED = 0x0F3,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SSCALED = 0x0F4,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_USCALED = 0x0F5,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16_SSCALED = 0x0F6,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16_USCALED = 0x0F7,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_SSCALED = 0x0F8,
|
|
GFX3DSTATE_SURFACEFORMAT_R32_USCALED = 0x0F9,
|
|
GFX3DSTATE_SURFACEFORMAT_B5G6R5_UNORM = 0x100,
|
|
GFX3DSTATE_SURFACEFORMAT_B5G6R5_UNORM_SRGB = 0x101,
|
|
GFX3DSTATE_SURFACEFORMAT_B5G5R5A1_UNORM = 0x102,
|
|
GFX3DSTATE_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB = 0x103,
|
|
GFX3DSTATE_SURFACEFORMAT_B4G4R4A4_UNORM = 0x104,
|
|
GFX3DSTATE_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB = 0x105,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8_UNORM = 0x106,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8_SNORM = 0x107,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8_SINT = 0x108,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8_UINT = 0x109,
|
|
GFX3DSTATE_SURFACEFORMAT_R16_UNORM = 0x10A,
|
|
GFX3DSTATE_SURFACEFORMAT_R16_SNORM = 0x10B,
|
|
GFX3DSTATE_SURFACEFORMAT_R16_SINT = 0x10C,
|
|
GFX3DSTATE_SURFACEFORMAT_R16_UINT = 0x10D,
|
|
GFX3DSTATE_SURFACEFORMAT_R16_FLOAT = 0x10E,
|
|
GFX3DSTATE_SURFACEFORMAT_I16_UNORM = 0x111,
|
|
GFX3DSTATE_SURFACEFORMAT_L16_UNORM = 0x112,
|
|
GFX3DSTATE_SURFACEFORMAT_A16_UNORM = 0x113,
|
|
GFX3DSTATE_SURFACEFORMAT_L8A8_UNORM = 0x114,
|
|
GFX3DSTATE_SURFACEFORMAT_I16_FLOAT = 0x115,
|
|
GFX3DSTATE_SURFACEFORMAT_L16_FLOAT = 0x116,
|
|
GFX3DSTATE_SURFACEFORMAT_A16_FLOAT = 0x117,
|
|
GFX3DSTATE_SURFACEFORMAT_L8A8_UNORM_SRGB = 0x118,
|
|
GFX3DSTATE_SURFACEFORMAT_R5G5_SNORM_B6_UNORM = 0x119,
|
|
GFX3DSTATE_SURFACEFORMAT_B5G5R5X1_UNORM = 0x11A,
|
|
GFX3DSTATE_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB = 0x11B,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8_SSCALED = 0x11C,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8_USCALED = 0x11D,
|
|
GFX3DSTATE_SURFACEFORMAT_R16_SSCALED = 0x11E,
|
|
GFX3DSTATE_SURFACEFORMAT_R16_USCALED = 0x11F,
|
|
GFX3DSTATE_SURFACEFORMAT_R8_UNORM = 0x140,
|
|
GFX3DSTATE_SURFACEFORMAT_R8_SNORM = 0x141,
|
|
GFX3DSTATE_SURFACEFORMAT_R8_SINT = 0x142,
|
|
GFX3DSTATE_SURFACEFORMAT_R8_UINT = 0x143,
|
|
GFX3DSTATE_SURFACEFORMAT_A8_UNORM = 0x144,
|
|
GFX3DSTATE_SURFACEFORMAT_I8_UNORM = 0x145,
|
|
GFX3DSTATE_SURFACEFORMAT_L8_UNORM = 0x146,
|
|
GFX3DSTATE_SURFACEFORMAT_P4A4_UNORM = 0x147,
|
|
GFX3DSTATE_SURFACEFORMAT_A4P4_UNORM = 0x148,
|
|
GFX3DSTATE_SURFACEFORMAT_R8_SSCALED = 0x149,
|
|
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,
|
|
GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUVY = 0x183,
|
|
GFX3DSTATE_SURFACEFORMAT_P2_UNORM = 0x184,
|
|
GFX3DSTATE_SURFACEFORMAT_BC1_UNORM = 0x186,
|
|
GFX3DSTATE_SURFACEFORMAT_BC2_UNORM = 0x187,
|
|
GFX3DSTATE_SURFACEFORMAT_BC3_UNORM = 0x188,
|
|
GFX3DSTATE_SURFACEFORMAT_BC4_UNORM = 0x189,
|
|
GFX3DSTATE_SURFACEFORMAT_BC5_UNORM = 0x18A,
|
|
GFX3DSTATE_SURFACEFORMAT_BC1_UNORM_SRGB = 0x18B,
|
|
GFX3DSTATE_SURFACEFORMAT_BC2_UNORM_SRGB = 0x18C,
|
|
GFX3DSTATE_SURFACEFORMAT_BC3_UNORM_SRGB = 0x18D,
|
|
GFX3DSTATE_SURFACEFORMAT_MONO8 = 0x18E,
|
|
GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPUV = 0x18F,
|
|
GFX3DSTATE_SURFACEFORMAT_YCRCB_SWAPY = 0x190,
|
|
GFX3DSTATE_SURFACEFORMAT_DXT1_RGB = 0x191,
|
|
GFX3DSTATE_SURFACEFORMAT_FXT1 = 0x192,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8_UNORM = 0x193,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8_SNORM = 0x194,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8_SSCALED = 0x195,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8_USCALED = 0x196,
|
|
GFX3DSTATE_SURFACEFORMAT_R64G64B64A64_FLOAT = 0x197,
|
|
GFX3DSTATE_SURFACEFORMAT_R64G64B64_FLOAT = 0x198,
|
|
GFX3DSTATE_SURFACEFORMAT_BC4_SNORM = 0x199,
|
|
GFX3DSTATE_SURFACEFORMAT_BC5_SNORM = 0x19A,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16_FLOAT = 0x19B,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16_UNORM = 0x19C,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16_SNORM = 0x19D,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16_SSCALED = 0x19E,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16_USCALED = 0x19F,
|
|
GFX3DSTATE_SURFACEFORMAT_BC6H_SF16 = 0x1A1,
|
|
GFX3DSTATE_SURFACEFORMAT_BC7_UNORM = 0x1A2,
|
|
GFX3DSTATE_SURFACEFORMAT_BC7_UNORM_SRGB = 0x1A3,
|
|
GFX3DSTATE_SURFACEFORMAT_BC6H_UF16 = 0x1A4,
|
|
GFX3DSTATE_SURFACEFORMAT_PLANAR_420_8 = 0x1A5,
|
|
GFX3DSTATE_SURFACEFORMAT_PLANAR_420_16 = 0x1a6,
|
|
GFX3DSTATE_SURFACEFORMAT_PACKED_422_16 = 0x1a7,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16_UINT = 0x1b0,
|
|
GFX3DSTATE_SURFACEFORMAT_R16G16B16_SINT = 0x1b1,
|
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SNORM = 0x1b3,
|
|
GFX3DSTATE_SURFACEFORMAT_R10G10B10A2_SINT = 0x1b6,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8_UINT = 0x1c8,
|
|
GFX3DSTATE_SURFACEFORMAT_R8G8B8_SINT = 0x1c9,
|
|
GFX3DSTATE_SURFACEFORMAT_RAW = 0x1FF,
|
|
NUM_GFX3DSTATE_SURFACEFORMATS
|
|
};
|
|
|
|
enum class ImagePlane {
|
|
noPlane = 0,
|
|
planeY,
|
|
planeU,
|
|
planeV,
|
|
planeUV
|
|
};
|
|
|
|
struct SurfaceFormatInfo {
|
|
GMM_RESOURCE_FORMAT gmmSurfaceFormat;
|
|
SurfaceFormat genxSurfaceFormat;
|
|
uint32_t gmmTileWalk;
|
|
uint32_t numChannels;
|
|
uint32_t perChannelSizeInBytes;
|
|
size_t imageElementSizeInBytes;
|
|
};
|
|
|
|
enum class ImageType {
|
|
invalid,
|
|
image1D,
|
|
image2D,
|
|
image3D,
|
|
image1DArray,
|
|
image2DArray,
|
|
image1DBuffer
|
|
};
|
|
|
|
struct ImageDescriptor {
|
|
ImageType imageType;
|
|
size_t imageWidth;
|
|
size_t imageHeight;
|
|
size_t imageDepth;
|
|
size_t imageArraySize;
|
|
size_t imageRowPitch;
|
|
size_t imageSlicePitch;
|
|
uint32_t numMipLevels;
|
|
uint32_t numSamples;
|
|
bool fromParent;
|
|
};
|
|
|
|
enum class ImageTilingMode {
|
|
tiledAuto = 0,
|
|
tiledW,
|
|
tiledX,
|
|
tiledY,
|
|
tiledYf,
|
|
tiledYs,
|
|
tiled4,
|
|
tiled64,
|
|
};
|
|
|
|
struct ImageInfo {
|
|
ImageDescriptor imgDesc;
|
|
const SurfaceFormatInfo *surfaceFormat;
|
|
size_t size;
|
|
size_t rowPitch;
|
|
size_t slicePitch;
|
|
uint32_t qPitch;
|
|
size_t offset;
|
|
uint32_t xOffset;
|
|
uint32_t yOffset;
|
|
uint32_t yOffsetForUVPlane;
|
|
GMM_YUV_PLANE_ENUM plane;
|
|
uint32_t baseMipLevel;
|
|
uint32_t mipCount;
|
|
bool linearStorage;
|
|
bool useLocalMemory;
|
|
bool isDisplayable;
|
|
ImageTilingMode forceTiling;
|
|
};
|
|
|
|
struct ImageImplicitArgs {
|
|
const uint8_t structSize = sizeof(ImageImplicitArgs);
|
|
uint8_t structVersion;
|
|
uint64_t imageWidth;
|
|
uint64_t imageHeight;
|
|
uint64_t imageDepth;
|
|
uint64_t imageArraySize;
|
|
uint32_t numSamples;
|
|
cl_channel_type channelType;
|
|
cl_channel_order channelOrder;
|
|
uint32_t numMipLevels;
|
|
uint64_t flatBaseOffset;
|
|
uint64_t flatWidth;
|
|
uint64_t flagHeight;
|
|
uint64_t flatPitch;
|
|
|
|
static constexpr uint8_t getSize() { return sizeof(ImageImplicitArgs); }
|
|
};
|
|
|
|
static_assert(ImageImplicitArgs::getSize() == 88);
|
|
|
|
struct McsSurfaceInfo {
|
|
uint32_t pitch;
|
|
uint32_t qPitch;
|
|
uint32_t multisampleCount;
|
|
};
|
|
|
|
struct SurfaceOffsets {
|
|
uint64_t offset;
|
|
uint32_t xOffset;
|
|
uint32_t yOffset;
|
|
uint32_t yOffsetForUVplane;
|
|
};
|
|
|
|
} // namespace NEO
|