mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 23:56:39 +08:00
SNORM formats support
Change-Id: I4138a3e96788aab2a8f3af108dcbfa6f81006bf9
This commit is contained in:
2
Jenkinsfile
vendored
2
Jenkinsfile
vendored
@@ -2,4 +2,4 @@
|
|||||||
neoDependenciesRev='733920-765'
|
neoDependenciesRev='733920-765'
|
||||||
strategy='EQUAL'
|
strategy='EQUAL'
|
||||||
allowedF=47
|
allowedF=47
|
||||||
allowedCD=364
|
allowedCD=363
|
||||||
|
|||||||
@@ -246,9 +246,9 @@ cl_int Context::getSupportedImageFormats(
|
|||||||
cl_image_format *imageFormats,
|
cl_image_format *imageFormats,
|
||||||
cl_uint *numImageFormatsReturned) {
|
cl_uint *numImageFormatsReturned) {
|
||||||
|
|
||||||
cl_uint numImageFormats = 0;
|
size_t numImageFormats = 0;
|
||||||
cl_uint numDepthFormats = 0;
|
size_t numDepthFormats = 0;
|
||||||
const SurfaceFormatInfo *surfaceFormats = nullptr;
|
const SurfaceFormatInfo *baseSurfaceFormats = nullptr;
|
||||||
const SurfaceFormatInfo *depthFormats = nullptr;
|
const SurfaceFormatInfo *depthFormats = nullptr;
|
||||||
|
|
||||||
const bool nv12ExtensionEnabled = device->getDeviceInfo().nv12Extension;
|
const bool nv12ExtensionEnabled = device->getDeviceInfo().nv12Extension;
|
||||||
@@ -258,26 +258,26 @@ cl_int Context::getSupportedImageFormats(
|
|||||||
bool appendDepthSurfaces = true;
|
bool appendDepthSurfaces = true;
|
||||||
|
|
||||||
if (flags & CL_MEM_READ_ONLY) {
|
if (flags & CL_MEM_READ_ONLY) {
|
||||||
numImageFormats = static_cast<cl_uint>(numReadOnlySurfaceFormats);
|
numImageFormats = numReadOnlySurfaceFormats;
|
||||||
surfaceFormats = readOnlySurfaceFormats;
|
baseSurfaceFormats = readOnlySurfaceFormats;
|
||||||
depthFormats = readOnlyDepthSurfaceFormats;
|
depthFormats = readOnlyDepthSurfaceFormats;
|
||||||
numDepthFormats = static_cast<cl_uint>(numReadOnlyDepthSurfaceFormats);
|
numDepthFormats = numReadOnlyDepthSurfaceFormats;
|
||||||
appendPlanarYUVSurfaces = true;
|
appendPlanarYUVSurfaces = true;
|
||||||
appendPackedYUVSurfaces = true;
|
appendPackedYUVSurfaces = true;
|
||||||
} else if (flags & CL_MEM_WRITE_ONLY) {
|
} else if (flags & CL_MEM_WRITE_ONLY) {
|
||||||
numImageFormats = static_cast<cl_uint>(numWriteOnlySurfaceFormats);
|
numImageFormats = numWriteOnlySurfaceFormats;
|
||||||
surfaceFormats = writeOnlySurfaceFormats;
|
baseSurfaceFormats = writeOnlySurfaceFormats;
|
||||||
depthFormats = readWriteDepthSurfaceFormats;
|
depthFormats = readWriteDepthSurfaceFormats;
|
||||||
numDepthFormats = static_cast<cl_uint>(numReadWriteDepthSurfaceFormats);
|
numDepthFormats = numReadWriteDepthSurfaceFormats;
|
||||||
} else if (nv12ExtensionEnabled && (flags & CL_MEM_NO_ACCESS_INTEL)) {
|
} else if (nv12ExtensionEnabled && (flags & CL_MEM_NO_ACCESS_INTEL)) {
|
||||||
numImageFormats = static_cast<cl_uint>(numReadOnlySurfaceFormats);
|
numImageFormats = numReadOnlySurfaceFormats;
|
||||||
surfaceFormats = readOnlySurfaceFormats;
|
baseSurfaceFormats = readOnlySurfaceFormats;
|
||||||
appendPlanarYUVSurfaces = true;
|
appendPlanarYUVSurfaces = true;
|
||||||
} else {
|
} else {
|
||||||
numImageFormats = static_cast<cl_uint>(numReadWriteSurfaceFormats);
|
numImageFormats = numReadWriteSurfaceFormats;
|
||||||
surfaceFormats = readWriteSurfaceFormats;
|
baseSurfaceFormats = readWriteSurfaceFormats;
|
||||||
depthFormats = readWriteDepthSurfaceFormats;
|
depthFormats = readWriteDepthSurfaceFormats;
|
||||||
numDepthFormats = static_cast<cl_uint>(numReadWriteDepthSurfaceFormats);
|
numDepthFormats = numReadWriteDepthSurfaceFormats;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Image::isImage2d(imageType)) {
|
if (!Image::isImage2d(imageType)) {
|
||||||
@@ -289,44 +289,40 @@ cl_int Context::getSupportedImageFormats(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (imageFormats) {
|
if (imageFormats) {
|
||||||
numImageFormats = std::min(numEntries, numImageFormats);
|
|
||||||
|
|
||||||
cl_uint entry = 0;
|
cl_uint entry = 0;
|
||||||
for (entry = 0; entry < numImageFormats; ++entry) {
|
auto appendFormats = [&](const SurfaceFormatInfo *srcSurfaceFormats, size_t srcFormatsCount) {
|
||||||
imageFormats[entry] = surfaceFormats[entry].OCLImageFormat;
|
for (size_t srcFormatPos = 0; srcFormatPos < srcFormatsCount && entry < numEntries; ++srcFormatPos, ++entry) {
|
||||||
}
|
imageFormats[entry] = srcSurfaceFormats[srcFormatPos].OCLImageFormat;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
appendFormats(baseSurfaceFormats, numImageFormats);
|
||||||
|
|
||||||
if (nv12ExtensionEnabled && appendPlanarYUVSurfaces) {
|
if (nv12ExtensionEnabled && appendPlanarYUVSurfaces) {
|
||||||
for (uint32_t planarEntry = 0; planarEntry < numPlanarYuvSurfaceFormats && (entry < numEntries); ++planarEntry, ++entry) {
|
appendFormats(planarYuvSurfaceFormats, numPlanarYuvSurfaceFormats);
|
||||||
imageFormats[entry] = planarYuvSurfaceFormats[planarEntry].OCLImageFormat;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (appendDepthSurfaces) {
|
if (appendDepthSurfaces) {
|
||||||
for (uint32_t depthEntry = 0; depthEntry < numDepthFormats && (entry < numEntries); ++depthEntry, ++entry) {
|
appendFormats(depthFormats, numDepthFormats);
|
||||||
imageFormats[entry] = depthFormats[depthEntry].OCLImageFormat;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packedYuvExtensionEnabled && appendPackedYUVSurfaces) {
|
if (packedYuvExtensionEnabled && appendPackedYUVSurfaces) {
|
||||||
for (uint32_t packedEntry = 0; packedEntry < numPackedYuvSurfaceFormats && (entry < numEntries); ++packedEntry, ++entry) {
|
appendFormats(packedYuvSurfaceFormats, numPackedYuvSurfaceFormats);
|
||||||
imageFormats[entry] = packedYuvSurfaceFormats[packedEntry].OCLImageFormat;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numImageFormatsReturned) {
|
if (numImageFormatsReturned) {
|
||||||
if (nv12ExtensionEnabled && appendPlanarYUVSurfaces) {
|
if (nv12ExtensionEnabled && appendPlanarYUVSurfaces) {
|
||||||
numImageFormats += static_cast<cl_uint>(numPlanarYuvSurfaceFormats);
|
numImageFormats += numPlanarYuvSurfaceFormats;
|
||||||
}
|
}
|
||||||
if (packedYuvExtensionEnabled && appendPackedYUVSurfaces) {
|
if (packedYuvExtensionEnabled && appendPackedYUVSurfaces) {
|
||||||
numImageFormats += static_cast<cl_uint>(numPackedYuvSurfaceFormats);
|
numImageFormats += numPackedYuvSurfaceFormats;
|
||||||
}
|
}
|
||||||
if (appendDepthSurfaces) {
|
if (appendDepthSurfaces) {
|
||||||
numImageFormats += numDepthFormats;
|
numImageFormats += numDepthFormats;
|
||||||
}
|
}
|
||||||
|
|
||||||
*numImageFormatsReturned = numImageFormats;
|
*numImageFormatsReturned = static_cast<cl_uint>(numImageFormats);
|
||||||
}
|
}
|
||||||
return CL_SUCCESS;
|
return CL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,175 +28,6 @@
|
|||||||
namespace OCLRT {
|
namespace OCLRT {
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
enum GFX3DSTATE_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_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_NV12 = 0x1A5,
|
|
||||||
GFX3DSTATE_SURFACEFORMAT_RAW = 0x1FF,
|
|
||||||
NUM_GFX3DSTATE_SURFACEFORMATS
|
|
||||||
};
|
|
||||||
|
|
||||||
//Initialize this with the required formats first.
|
//Initialize this with the required formats first.
|
||||||
//Append the optional one later
|
//Append the optional one later
|
||||||
@@ -247,6 +78,13 @@ const SurfaceFormatInfo readOnlySurfaceFormats[] = {
|
|||||||
{{CL_RG, CL_FLOAT}, GMM_FORMAT_R32G32_FLOAT_TYPE, GFX3DSTATE_SURFACEFORMAT_R32G32_FLOAT , 0, 2, 4, 8},
|
{{CL_RG, CL_FLOAT}, GMM_FORMAT_R32G32_FLOAT_TYPE, GFX3DSTATE_SURFACEFORMAT_R32G32_FLOAT , 0, 2, 4, 8},
|
||||||
{{CL_sRGBA, CL_UNORM_INT8}, GMM_FORMAT_R8G8B8A8_UNORM_SRGB_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB , 0, 4, 1, 4},
|
{{CL_sRGBA, CL_UNORM_INT8}, GMM_FORMAT_R8G8B8A8_UNORM_SRGB_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB , 0, 4, 1, 4},
|
||||||
{{CL_sBGRA, CL_UNORM_INT8}, GMM_FORMAT_B8G8R8A8_UNORM_SRGB_TYPE, GFX3DSTATE_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB , 0, 4, 1, 4},
|
{{CL_sBGRA, CL_UNORM_INT8}, GMM_FORMAT_B8G8R8A8_UNORM_SRGB_TYPE, GFX3DSTATE_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB , 0, 4, 1, 4},
|
||||||
|
// SNORM formats
|
||||||
|
{{CL_R, CL_SNORM_INT8}, GMM_FORMAT_R8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8_SNORM , 0, 1, 1, 1},
|
||||||
|
{{CL_R, CL_SNORM_INT16}, GMM_FORMAT_R16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16_SNORM , 0, 1, 2, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT8}, GMM_FORMAT_R8G8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8_SNORM , 0, 2, 1, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT16}, GMM_FORMAT_R16G16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16_SNORM , 0, 2, 2, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT8}, GMM_FORMAT_R8G8B8A8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SNORM , 0, 4, 1, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT16}, GMM_FORMAT_R16G16B16A16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SNORM , 0, 4, 2, 8},
|
||||||
};
|
};
|
||||||
|
|
||||||
const SurfaceFormatInfo writeOnlySurfaceFormats[] = {
|
const SurfaceFormatInfo writeOnlySurfaceFormats[] = {
|
||||||
@@ -287,6 +125,13 @@ const SurfaceFormatInfo writeOnlySurfaceFormats[] = {
|
|||||||
{{CL_LUMINANCE, CL_UNORM_INT16}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_UNORM , 0, 1, 2, 2},
|
{{CL_LUMINANCE, CL_UNORM_INT16}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_UNORM , 0, 1, 2, 2},
|
||||||
{{CL_LUMINANCE, CL_HALF_FLOAT}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_FLOAT , 0, 1, 2, 2},
|
{{CL_LUMINANCE, CL_HALF_FLOAT}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_FLOAT , 0, 1, 2, 2},
|
||||||
{{CL_LUMINANCE, CL_FLOAT}, GMM_FORMAT_GENERIC_32BIT, GFX3DSTATE_SURFACEFORMAT_R32_FLOAT , 0, 1, 4, 4},
|
{{CL_LUMINANCE, CL_FLOAT}, GMM_FORMAT_GENERIC_32BIT, GFX3DSTATE_SURFACEFORMAT_R32_FLOAT , 0, 1, 4, 4},
|
||||||
|
// SNORM formats
|
||||||
|
{{CL_R, CL_SNORM_INT8}, GMM_FORMAT_R8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8_SNORM , 0, 1, 1, 1},
|
||||||
|
{{CL_R, CL_SNORM_INT16}, GMM_FORMAT_R16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16_SNORM , 0, 1, 2, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT8}, GMM_FORMAT_R8G8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8_SNORM , 0, 2, 1, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT16}, GMM_FORMAT_R16G16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16_SNORM , 0, 2, 2, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT8}, GMM_FORMAT_R8G8B8A8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SNORM , 0, 4, 1, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT16}, GMM_FORMAT_R16G16B16A16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SNORM , 0, 4, 2, 8},
|
||||||
};
|
};
|
||||||
|
|
||||||
const SurfaceFormatInfo readWriteSurfaceFormats[] = {
|
const SurfaceFormatInfo readWriteSurfaceFormats[] = {
|
||||||
@@ -327,6 +172,13 @@ const SurfaceFormatInfo readWriteSurfaceFormats[] = {
|
|||||||
{{CL_LUMINANCE, CL_UNORM_INT16}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_UNORM , 0, 1, 2, 2},
|
{{CL_LUMINANCE, CL_UNORM_INT16}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_UNORM , 0, 1, 2, 2},
|
||||||
{{CL_LUMINANCE, CL_HALF_FLOAT}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_FLOAT , 0, 1, 2, 2},
|
{{CL_LUMINANCE, CL_HALF_FLOAT}, GMM_FORMAT_GENERIC_16BIT, GFX3DSTATE_SURFACEFORMAT_R16_FLOAT , 0, 1, 2, 2},
|
||||||
{{CL_LUMINANCE, CL_FLOAT}, GMM_FORMAT_GENERIC_32BIT, GFX3DSTATE_SURFACEFORMAT_R32_FLOAT , 0, 1, 4, 4},
|
{{CL_LUMINANCE, CL_FLOAT}, GMM_FORMAT_GENERIC_32BIT, GFX3DSTATE_SURFACEFORMAT_R32_FLOAT , 0, 1, 4, 4},
|
||||||
|
// SNORM formats
|
||||||
|
{{CL_R, CL_SNORM_INT8}, GMM_FORMAT_R8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8_SNORM , 0, 1, 1, 1},
|
||||||
|
{{CL_R, CL_SNORM_INT16}, GMM_FORMAT_R16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16_SNORM , 0, 1, 2, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT8}, GMM_FORMAT_R8G8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8_SNORM , 0, 2, 1, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT16}, GMM_FORMAT_R16G16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16_SNORM , 0, 2, 2, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT8}, GMM_FORMAT_R8G8B8A8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SNORM , 0, 4, 1, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT16}, GMM_FORMAT_R16G16B16A16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SNORM , 0, 4, 2, 8},
|
||||||
};
|
};
|
||||||
|
|
||||||
#if SUPPORT_YUV
|
#if SUPPORT_YUV
|
||||||
@@ -365,16 +217,5 @@ const size_t numReadOnlySurfaceFormats = ARRAY_COUNT(readOnlySurfaceFormats);
|
|||||||
const size_t numWriteOnlySurfaceFormats = ARRAY_COUNT(writeOnlySurfaceFormats);
|
const size_t numWriteOnlySurfaceFormats = ARRAY_COUNT(writeOnlySurfaceFormats);
|
||||||
const size_t numReadWriteSurfaceFormats = ARRAY_COUNT(readWriteSurfaceFormats);
|
const size_t numReadWriteSurfaceFormats = ARRAY_COUNT(readWriteSurfaceFormats);
|
||||||
|
|
||||||
const SurfaceFormatInfo snormSurfaceFormats[] = {
|
|
||||||
{{CL_R, CL_SNORM_INT8}, GMM_FORMAT_R8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8_SNORM , 0, 1, 1, 1},
|
|
||||||
{{CL_R, CL_SNORM_INT16}, GMM_FORMAT_R16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16_SNORM , 0, 1, 2, 2},
|
|
||||||
{{CL_RG, CL_SNORM_INT8}, GMM_FORMAT_R8G8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8_SNORM , 0, 2, 1, 2},
|
|
||||||
{{CL_RG, CL_SNORM_INT16}, GMM_FORMAT_R16G16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16_SNORM , 0, 2, 2, 4},
|
|
||||||
{{CL_RGBA, CL_SNORM_INT8}, GMM_FORMAT_R8G8B8A8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SNORM , 0, 4, 1, 4},
|
|
||||||
{{CL_RGBA, CL_SNORM_INT16}, GMM_FORMAT_R16G16B16A16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SNORM , 0, 4, 2, 8},
|
|
||||||
};
|
|
||||||
|
|
||||||
const size_t numSnormSurfaceFormats = ARRAY_COUNT(snormSurfaceFormats);
|
|
||||||
|
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,175 @@
|
|||||||
#include "runtime/gmm_helper/gmm_lib.h"
|
#include "runtime/gmm_helper/gmm_lib.h"
|
||||||
|
|
||||||
namespace OCLRT {
|
namespace OCLRT {
|
||||||
enum GFX3DSTATE_SURFACEFORMAT : unsigned short;
|
enum GFX3DSTATE_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_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_NV12 = 0x1A5,
|
||||||
|
GFX3DSTATE_SURFACEFORMAT_RAW = 0x1FF,
|
||||||
|
NUM_GFX3DSTATE_SURFACEFORMATS
|
||||||
|
};
|
||||||
|
|
||||||
struct SurfaceFormatInfo {
|
struct SurfaceFormatInfo {
|
||||||
cl_image_format OCLImageFormat;
|
cl_image_format OCLImageFormat;
|
||||||
@@ -88,6 +256,4 @@ extern const size_t numReadWriteDepthSurfaceFormats;
|
|||||||
extern const SurfaceFormatInfo readOnlyDepthSurfaceFormats[];
|
extern const SurfaceFormatInfo readOnlyDepthSurfaceFormats[];
|
||||||
extern const SurfaceFormatInfo readWriteDepthSurfaceFormats[];
|
extern const SurfaceFormatInfo readWriteDepthSurfaceFormats[];
|
||||||
|
|
||||||
extern const size_t numSnormSurfaceFormats;
|
|
||||||
extern const SurfaceFormatInfo snormSurfaceFormats[];
|
|
||||||
} // namespace OCLRT
|
} // namespace OCLRT
|
||||||
|
|||||||
@@ -966,9 +966,6 @@ const SurfaceFormatInfo *Image::getSurfaceFormatFromTable(cl_mem_flags flags, co
|
|||||||
#else
|
#else
|
||||||
return nullptr;
|
return nullptr;
|
||||||
#endif
|
#endif
|
||||||
} else if (isSnormFormat(*imageFormat)) {
|
|
||||||
surfaceFormatTable = snormSurfaceFormats;
|
|
||||||
numSurfaceFormats = numSnormSurfaceFormats;
|
|
||||||
} else if ((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) {
|
} else if ((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) {
|
||||||
surfaceFormatTable = isDepthFormat ? readOnlyDepthSurfaceFormats : readOnlySurfaceFormats;
|
surfaceFormatTable = isDepthFormat ? readOnlyDepthSurfaceFormats : readOnlySurfaceFormats;
|
||||||
numSurfaceFormats = isDepthFormat ? numReadOnlyDepthSurfaceFormats : numReadOnlySurfaceFormats;
|
numSurfaceFormats = isDepthFormat ? numReadOnlyDepthSurfaceFormats : numReadOnlySurfaceFormats;
|
||||||
@@ -1013,13 +1010,6 @@ bool Image::isDepthFormat(const cl_image_format &imageFormat) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Image::isSnormFormat(const cl_image_format &imageFormat) {
|
|
||||||
if (imageFormat.image_channel_data_type == CL_SNORM_INT8 || imageFormat.image_channel_data_type == CL_SNORM_INT16) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Image *Image::validateAndCreateImage(Context *context,
|
Image *Image::validateAndCreateImage(Context *context,
|
||||||
cl_mem_flags flags,
|
cl_mem_flags flags,
|
||||||
const cl_image_format *imageFormat,
|
const cl_image_format *imageFormat,
|
||||||
|
|||||||
@@ -117,8 +117,6 @@ class Image : public MemObj {
|
|||||||
|
|
||||||
static bool isDepthFormat(const cl_image_format &imageFormat);
|
static bool isDepthFormat(const cl_image_format &imageFormat);
|
||||||
|
|
||||||
static bool isSnormFormat(const cl_image_format &imageFormat);
|
|
||||||
|
|
||||||
cl_int getImageInfo(cl_image_info paramName,
|
cl_int getImageInfo(cl_image_info paramName,
|
||||||
size_t paramValueSize,
|
size_t paramValueSize,
|
||||||
void *paramValue,
|
void *paramValue,
|
||||||
|
|||||||
@@ -98,12 +98,6 @@ const SurfaceFormatInfo *D3DSharing<D3D>::findSurfaceFormatInfo(GMM_RESOURCE_FOR
|
|||||||
const SurfaceFormatInfo *surfaceFormatInfo = nullptr;
|
const SurfaceFormatInfo *surfaceFormatInfo = nullptr;
|
||||||
size_t numSurfaceFormats = 0;
|
size_t numSurfaceFormats = 0;
|
||||||
|
|
||||||
for (size_t i = 0; i < numSnormSurfaceFormats; i++) {
|
|
||||||
if (gmmFormat == snormSurfaceFormats[i].GMMSurfaceFormat) {
|
|
||||||
return &snormSurfaceFormats[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) {
|
if ((flags & CL_MEM_READ_ONLY) == CL_MEM_READ_ONLY) {
|
||||||
surfaceFormatTable = readOnlySurfaceFormats;
|
surfaceFormatTable = readOnlySurfaceFormats;
|
||||||
numSurfaceFormats = numReadOnlySurfaceFormats;
|
numSurfaceFormats = numReadOnlySurfaceFormats;
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ struct GetSupportedImageFormatsTest : public PlatformFixture,
|
|||||||
public ContextFixture,
|
public ContextFixture,
|
||||||
public ::testing::TestWithParam<std::tuple<uint64_t, uint32_t>> {
|
public ::testing::TestWithParam<std::tuple<uint64_t, uint32_t>> {
|
||||||
|
|
||||||
using PlatformFixture::SetUp;
|
|
||||||
using ContextFixture::SetUp;
|
using ContextFixture::SetUp;
|
||||||
|
using PlatformFixture::SetUp;
|
||||||
|
|
||||||
GetSupportedImageFormatsTest() {
|
GetSupportedImageFormatsTest() {
|
||||||
}
|
}
|
||||||
@@ -102,9 +102,6 @@ TEST_P(GetSupportedImageFormatsTest, retrieveImageFormats) {
|
|||||||
for (cl_uint entry = 0; entry < numImageFormats; ++entry) {
|
for (cl_uint entry = 0; entry < numImageFormats; ++entry) {
|
||||||
EXPECT_NE(0u, imageFormatList[entry].image_channel_order);
|
EXPECT_NE(0u, imageFormatList[entry].image_channel_order);
|
||||||
EXPECT_NE(0u, imageFormatList[entry].image_channel_data_type);
|
EXPECT_NE(0u, imageFormatList[entry].image_channel_data_type);
|
||||||
// don't report SNORM
|
|
||||||
EXPECT_TRUE(CL_SNORM_INT8 != imageFormatList[entry].image_channel_data_type);
|
|
||||||
EXPECT_TRUE(CL_SNORM_INT16 != imageFormatList[entry].image_channel_data_type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] imageFormatList;
|
delete[] imageFormatList;
|
||||||
|
|||||||
@@ -768,20 +768,6 @@ TYPED_TEST_P(D3DTests, givenInvalidSubresourceWhenCreateTexture3dIsCalledThenFai
|
|||||||
EXPECT_EQ(CL_INVALID_VALUE, retVal);
|
EXPECT_EQ(CL_INVALID_VALUE, retVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
TYPED_TEST_P(D3DTests, givenSnormFormatWhenLookingForSurfaceFormatThenReturnValidFormat) {
|
|
||||||
EXPECT_GT(numSnormSurfaceFormats, 0u);
|
|
||||||
for (size_t i = 0; i < numSnormSurfaceFormats; i++) {
|
|
||||||
if (snormSurfaceFormats[i].OCLImageFormat.image_channel_order == CL_RGBA ||
|
|
||||||
snormSurfaceFormats[i].OCLImageFormat.image_channel_order == CL_BGRA ||
|
|
||||||
snormSurfaceFormats[i].OCLImageFormat.image_channel_order == CL_RG ||
|
|
||||||
snormSurfaceFormats[i].OCLImageFormat.image_channel_order == CL_R) {
|
|
||||||
auto surfaceFormat = D3DSharing<TypeParam>::findSurfaceFormatInfo(snormSurfaceFormats[i].GMMSurfaceFormat, 0);
|
|
||||||
ASSERT_NE(nullptr, surfaceFormat);
|
|
||||||
EXPECT_EQ(&snormSurfaceFormats[i], surfaceFormat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TYPED_TEST_P(D3DTests, givenReadonlyFormatWhenLookingForSurfaceFormatThenReturnValidFormat) {
|
TYPED_TEST_P(D3DTests, givenReadonlyFormatWhenLookingForSurfaceFormatThenReturnValidFormat) {
|
||||||
EXPECT_GT(numReadOnlySurfaceFormats, 0u);
|
EXPECT_GT(numReadOnlySurfaceFormats, 0u);
|
||||||
for (size_t i = 0; i < numReadOnlySurfaceFormats; i++) {
|
for (size_t i = 0; i < numReadOnlySurfaceFormats; i++) {
|
||||||
@@ -1261,7 +1247,6 @@ REGISTER_TYPED_TEST_CASE_P(D3DTests,
|
|||||||
givenD3DTextureWithTheSameSubresourceWhenNextCreateIsCalledThenFail,
|
givenD3DTextureWithTheSameSubresourceWhenNextCreateIsCalledThenFail,
|
||||||
givenInvalidSubresourceWhenCreateTexture2dIsCalledThenFail,
|
givenInvalidSubresourceWhenCreateTexture2dIsCalledThenFail,
|
||||||
givenInvalidSubresourceWhenCreateTexture3dIsCalledThenFail,
|
givenInvalidSubresourceWhenCreateTexture3dIsCalledThenFail,
|
||||||
givenSnormFormatWhenLookingForSurfaceFormatThenReturnValidFormat,
|
|
||||||
givenReadonlyFormatWhenLookingForSurfaceFormatThenReturnValidFormat,
|
givenReadonlyFormatWhenLookingForSurfaceFormatThenReturnValidFormat,
|
||||||
givenWriteOnlyFormatWhenLookingForSurfaceFormatThenReturnValidFormat,
|
givenWriteOnlyFormatWhenLookingForSurfaceFormatThenReturnValidFormat,
|
||||||
givenReadWriteFormatWhenLookingForSurfaceFormatThenReturnValidFormat,
|
givenReadWriteFormatWhenLookingForSurfaceFormatThenReturnValidFormat,
|
||||||
|
|||||||
@@ -23,83 +23,66 @@
|
|||||||
#include "runtime/helpers/surface_formats.h"
|
#include "runtime/helpers/surface_formats.h"
|
||||||
#include "runtime/mem_obj/image.h"
|
#include "runtime/mem_obj/image.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
#include <array>
|
||||||
|
|
||||||
using namespace OCLRT;
|
using namespace OCLRT;
|
||||||
|
|
||||||
typedef decltype(numSnormSurfaceFormats) SnormSurfaceFormatsCountType;
|
const cl_mem_flags flagsForTests[] = {CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY, CL_MEM_READ_WRITE};
|
||||||
class GetSurfaceFormatTest : public ::testing::TestWithParam<std::tuple<size_t /*format index*/, uint64_t /*flags*/>> {
|
|
||||||
public:
|
|
||||||
void SetUp() override {
|
|
||||||
size_t index;
|
|
||||||
std::tie(index, flags) = GetParam();
|
|
||||||
surfaceFormat = snormSurfaceFormats[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
void compareFormats(const SurfaceFormatInfo *first, const SurfaceFormatInfo *second) {
|
const std::tuple<const SurfaceFormatInfo *, const size_t> paramsForSnormTests[] = {
|
||||||
EXPECT_EQ(first->GenxSurfaceFormat, second->GenxSurfaceFormat);
|
std::make_tuple(readOnlySurfaceFormats, numReadOnlySurfaceFormats),
|
||||||
EXPECT_EQ(first->GMMSurfaceFormat, second->GMMSurfaceFormat);
|
std::make_tuple(writeOnlySurfaceFormats, numWriteOnlySurfaceFormats),
|
||||||
EXPECT_EQ(first->GMMTileWalk, second->GMMTileWalk);
|
std::make_tuple(readWriteSurfaceFormats, numReadWriteSurfaceFormats),
|
||||||
EXPECT_EQ(first->ImageElementSizeInBytes, second->ImageElementSizeInBytes);
|
|
||||||
EXPECT_EQ(first->NumChannels, second->NumChannels);
|
|
||||||
EXPECT_EQ(first->OCLImageFormat.image_channel_data_type, second->OCLImageFormat.image_channel_data_type);
|
|
||||||
EXPECT_EQ(first->OCLImageFormat.image_channel_order, second->OCLImageFormat.image_channel_order);
|
|
||||||
EXPECT_EQ(first->PerChannelSizeInBytes, second->PerChannelSizeInBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
SurfaceFormatInfo surfaceFormat;
|
|
||||||
cl_mem_flags flags;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_P(GetSurfaceFormatTest, givenSnormFormatWhenGetSurfaceFormatFromTableIsCalledThenReturnsCorrectFormat) {
|
const std::array<SurfaceFormatInfo, 6> referenceSnormSurfaceFormats = {{
|
||||||
auto format = Image::getSurfaceFormatFromTable(flags, &surfaceFormat.OCLImageFormat);
|
// clang-format off
|
||||||
EXPECT_NE(nullptr, format);
|
{{CL_R, CL_SNORM_INT8}, GMM_FORMAT_R8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8_SNORM, 0, 1, 1, 1},
|
||||||
compareFormats(&surfaceFormat, format);
|
{{CL_R, CL_SNORM_INT16}, GMM_FORMAT_R16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16_SNORM, 0, 1, 2, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT8}, GMM_FORMAT_R8G8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8_SNORM, 0, 2, 1, 2},
|
||||||
|
{{CL_RG, CL_SNORM_INT16}, GMM_FORMAT_R16G16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16_SNORM, 0, 2, 2, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT8}, GMM_FORMAT_R8G8B8A8_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R8G8B8A8_SNORM, 0, 4, 1, 4},
|
||||||
|
{{CL_RGBA, CL_SNORM_INT16}, GMM_FORMAT_R16G16B16A16_SNORM_TYPE, GFX3DSTATE_SURFACEFORMAT_R16G16B16A16_SNORM, 0, 4, 2, 8},
|
||||||
|
// clang-format on
|
||||||
|
}};
|
||||||
|
|
||||||
|
using SnormSurfaceFormatAccessFlagsTests = ::testing::TestWithParam<uint64_t /*flags*/>;
|
||||||
|
|
||||||
|
TEST_P(SnormSurfaceFormatAccessFlagsTests, givenSnormFormatWhenGetSurfaceFormatFromTableIsCalledThenReturnsCorrectFormat) {
|
||||||
|
EXPECT_EQ(6u, referenceSnormSurfaceFormats.size());
|
||||||
|
cl_mem_flags flags = GetParam();
|
||||||
|
|
||||||
|
for (size_t i = 0u; i < referenceSnormSurfaceFormats.size(); i++) {
|
||||||
|
const auto &snormSurfaceFormat = referenceSnormSurfaceFormats[i];
|
||||||
|
auto format = Image::getSurfaceFormatFromTable(flags, &snormSurfaceFormat.OCLImageFormat);
|
||||||
|
EXPECT_NE(nullptr, format);
|
||||||
|
EXPECT_TRUE(memcmp(&snormSurfaceFormat, format, sizeof(SurfaceFormatInfo)) == 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cl_mem_flags flagsForTests[] = {CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY, CL_MEM_READ_WRITE};
|
using SnormSurfaceFormatTests = ::testing::TestWithParam<std::tuple<const SurfaceFormatInfo *, const size_t>>;
|
||||||
|
|
||||||
|
TEST_P(SnormSurfaceFormatTests, givenSnormOclFormatWhenCheckingrReadOnlySurfaceFormatsThenFindExactCount) {
|
||||||
|
const SurfaceFormatInfo *formatsTable = std::get<0>(GetParam());
|
||||||
|
size_t formatsTableCount = std::get<1>(GetParam());
|
||||||
|
|
||||||
|
size_t snormFormatsFound = 0;
|
||||||
|
for (size_t i = 0; i < formatsTableCount; i++) {
|
||||||
|
auto oclFormat = formatsTable[i].OCLImageFormat;
|
||||||
|
if (CL_SNORM_INT8 == oclFormat.image_channel_data_type || CL_SNORM_INT16 == oclFormat.image_channel_data_type) {
|
||||||
|
EXPECT_TRUE(oclFormat.image_channel_order == CL_R || oclFormat.image_channel_order == CL_RG || oclFormat.image_channel_order == CL_RGBA);
|
||||||
|
snormFormatsFound++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPECT_EQ(6u, snormFormatsFound);
|
||||||
|
}
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
ImageSnormTests,
|
ImageSnormTests,
|
||||||
GetSurfaceFormatTest,
|
SnormSurfaceFormatAccessFlagsTests,
|
||||||
::testing::Combine(
|
::testing::ValuesIn(flagsForTests));
|
||||||
::testing::Range(static_cast<SnormSurfaceFormatsCountType>(0u), numSnormSurfaceFormats),
|
|
||||||
::testing::ValuesIn(flagsForTests)));
|
|
||||||
|
|
||||||
class IsSnormFormatTest : public ::testing::TestWithParam<std::tuple<uint32_t /*image data type*/, bool /*expected value*/>> {
|
|
||||||
public:
|
|
||||||
void SetUp() override {
|
|
||||||
std::tie(format.image_channel_data_type, expectedValue) = GetParam();
|
|
||||||
}
|
|
||||||
|
|
||||||
cl_image_format format;
|
|
||||||
bool expectedValue;
|
|
||||||
};
|
|
||||||
|
|
||||||
TEST_P(IsSnormFormatTest, givenSnormFormatWhenGetSurfaceFormatFromTableIsCalledThenReturnsCorrectFormat) {
|
|
||||||
bool retVal = Image::isSnormFormat(format);
|
|
||||||
EXPECT_EQ(expectedValue, retVal);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::tuple<uint32_t, bool> paramsForSnormTests[] = {
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_SNORM_INT8, true),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_SNORM_INT16, true),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNORM_INT8, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNORM_INT16, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNORM_SHORT_565, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNORM_SHORT_555, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNORM_INT_101010, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_SIGNED_INT8, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_SIGNED_INT16, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_SIGNED_INT32, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNSIGNED_INT8, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNSIGNED_INT16, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNSIGNED_INT32, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_HALF_FLOAT, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_FLOAT, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNORM_INT24, false),
|
|
||||||
std::make_tuple<uint32_t, bool>(CL_UNORM_INT_101010_2, false)};
|
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
ImageSnormTests,
|
ImageSnormTests,
|
||||||
IsSnormFormatTest,
|
SnormSurfaceFormatTests,
|
||||||
::testing::ValuesIn(paramsForSnormTests));
|
::testing::ValuesIn(paramsForSnormTests));
|
||||||
|
|||||||
@@ -103,8 +103,6 @@ void MockGmmResourceInfo::setSurfaceFormat() {
|
|||||||
iterate(readOnlyDepthSurfaceFormats, numReadOnlyDepthSurfaceFormats);
|
iterate(readOnlyDepthSurfaceFormats, numReadOnlyDepthSurfaceFormats);
|
||||||
iterate(readWriteDepthSurfaceFormats, numReadWriteDepthSurfaceFormats);
|
iterate(readWriteDepthSurfaceFormats, numReadWriteDepthSurfaceFormats);
|
||||||
|
|
||||||
iterate(snormSurfaceFormats, numSnormSurfaceFormats);
|
|
||||||
|
|
||||||
ASSERT_NE(nullptr, surfaceFormatInfo);
|
ASSERT_NE(nullptr, surfaceFormatInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user