Commit 18fcb4ad by Mohan Maiya Committed by Commit Bot

Vulkan: Enable a subset of ImageTest colorspace tests

This patch does the following - 1. Expose EGL_KHR_image_gl_colorspace only if the underlying ICD supports VK_KHR_image_format_list extension 2. Create VkImageViews from EGLimage's format 3. Fix bugs in ImageTest colorspace tests Bug: angleproject:3756 Bug: angleproject:5281 Test: angle_end2end_tests.exe --gtest_filter=ImageTest*Colorspace*Vulkan Change-Id: I618ae009e83d0a6b27a0a50165f736784717e404 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2523670 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
parent e2ecb2dd
...@@ -212,7 +212,8 @@ void DisplayVk::generateExtensions(egl::DisplayExtensions *outExtensions) const ...@@ -212,7 +212,8 @@ void DisplayVk::generateExtensions(egl::DisplayExtensions *outExtensions) const
getRenderer()->getFeatures().supportsAndroidHardwareBuffer.enabled; getRenderer()->getFeatures().supportsAndroidHardwareBuffer.enabled;
outExtensions->surfacelessContext = true; outExtensions->surfacelessContext = true;
outExtensions->glColorspace = getRenderer()->getFeatures().supportsSwapchainColorspace.enabled; outExtensions->glColorspace = getRenderer()->getFeatures().supportsSwapchainColorspace.enabled;
outExtensions->imageGlColorspace = outExtensions->glColorspace; outExtensions->imageGlColorspace =
outExtensions->glColorspace && getRenderer()->getFeatures().supportsImageFormatList.enabled;
#if defined(ANGLE_PLATFORM_ANDROID) #if defined(ANGLE_PLATFORM_ANDROID)
outExtensions->framebufferTargetANDROID = true; outExtensions->framebufferTargetANDROID = true;
......
...@@ -3660,6 +3660,22 @@ angle::Result ImageHelper::initLayerImageView(Context *context, ...@@ -3660,6 +3660,22 @@ angle::Result ImageHelper::initLayerImageView(Context *context,
mFormat->vkImageFormat, nullptr); mFormat->vkImageFormat, nullptr);
} }
angle::Result ImageHelper::initLayerImageViewWithFormat(Context *context,
gl::TextureType textureType,
const Format &format,
VkImageAspectFlags aspectMask,
const gl::SwizzleState &swizzleMap,
ImageView *imageViewOut,
LevelIndex baseMipLevelVk,
uint32_t levelCount,
uint32_t baseArrayLayer,
uint32_t layerCount) const
{
return initLayerImageViewImpl(context, textureType, aspectMask, swizzleMap, imageViewOut,
baseMipLevelVk, levelCount, baseArrayLayer, layerCount,
format.vkImageFormat, nullptr);
}
angle::Result ImageHelper::initLayerImageViewImpl( angle::Result ImageHelper::initLayerImageViewImpl(
Context *context, Context *context,
gl::TextureType textureType, gl::TextureType textureType,
...@@ -6288,19 +6304,19 @@ angle::Result ImageViewHelper::initReadViewsImpl(ContextVk *contextVk, ...@@ -6288,19 +6304,19 @@ angle::Result ImageViewHelper::initReadViewsImpl(ContextVk *contextVk,
if (HasBothDepthAndStencilAspects(aspectFlags)) if (HasBothDepthAndStencilAspects(aspectFlags))
{ {
ANGLE_TRY(image.initLayerImageView(contextVk, viewType, VK_IMAGE_ASPECT_DEPTH_BIT, ANGLE_TRY(image.initLayerImageViewWithFormat(
readSwizzle, &getReadImageView(), baseLevel, levelCount, contextVk, viewType, format, VK_IMAGE_ASPECT_DEPTH_BIT, readSwizzle,
baseLayer, layerCount)); &getReadImageView(), baseLevel, levelCount, baseLayer, layerCount));
ANGLE_TRY(image.initLayerImageView(contextVk, viewType, VK_IMAGE_ASPECT_STENCIL_BIT, ANGLE_TRY(image.initLayerImageViewWithFormat(
readSwizzle, contextVk, viewType, format, VK_IMAGE_ASPECT_STENCIL_BIT, readSwizzle,
&mPerLevelStencilReadImageViews[mCurrentMaxLevel.get()], &mPerLevelStencilReadImageViews[mCurrentMaxLevel.get()], baseLevel, levelCount,
baseLevel, levelCount, baseLayer, layerCount)); baseLayer, layerCount));
} }
else else
{ {
ANGLE_TRY(image.initLayerImageView(contextVk, viewType, aspectFlags, readSwizzle, ANGLE_TRY(image.initLayerImageViewWithFormat(contextVk, viewType, format, aspectFlags,
&getReadImageView(), baseLevel, levelCount, baseLayer, readSwizzle, &getReadImageView(), baseLevel,
layerCount)); levelCount, baseLayer, layerCount));
} }
gl::TextureType fetchType = viewType; gl::TextureType fetchType = viewType;
...@@ -6310,14 +6326,14 @@ angle::Result ImageViewHelper::initReadViewsImpl(ContextVk *contextVk, ...@@ -6310,14 +6326,14 @@ angle::Result ImageViewHelper::initReadViewsImpl(ContextVk *contextVk,
{ {
fetchType = Get2DTextureType(layerCount, image.getSamples()); fetchType = Get2DTextureType(layerCount, image.getSamples());
ANGLE_TRY(image.initLayerImageView(contextVk, fetchType, aspectFlags, readSwizzle, ANGLE_TRY(image.initLayerImageViewWithFormat(contextVk, fetchType, format, aspectFlags,
&getFetchImageView(), baseLevel, levelCount, baseLayer, readSwizzle, &getFetchImageView(), baseLevel,
layerCount)); levelCount, baseLayer, layerCount));
} }
ANGLE_TRY(image.initLayerImageView(contextVk, fetchType, aspectFlags, formatSwizzle, ANGLE_TRY(image.initLayerImageViewWithFormat(contextVk, fetchType, format, aspectFlags,
&getCopyImageView(), baseLevel, levelCount, baseLayer, formatSwizzle, &getCopyImageView(), baseLevel,
layerCount)); levelCount, baseLayer, layerCount));
return angle::Result::Continue; return angle::Result::Continue;
} }
......
...@@ -1302,6 +1302,16 @@ class ImageHelper final : public Resource, public angle::Subject ...@@ -1302,6 +1302,16 @@ class ImageHelper final : public Resource, public angle::Subject
uint32_t levelCount, uint32_t levelCount,
uint32_t baseArrayLayer, uint32_t baseArrayLayer,
uint32_t layerCount) const; uint32_t layerCount) const;
angle::Result initLayerImageViewWithFormat(Context *context,
gl::TextureType textureType,
const Format &format,
VkImageAspectFlags aspectMask,
const gl::SwizzleState &swizzleMap,
ImageView *imageViewOut,
LevelIndex baseMipLevelVk,
uint32_t levelCount,
uint32_t baseArrayLayer,
uint32_t layerCount) const;
angle::Result initAliasedLayerImageView(Context *context, angle::Result initAliasedLayerImageView(Context *context,
gl::TextureType textureType, gl::TextureType textureType,
VkImageAspectFlags aspectMask, VkImageAspectFlags aspectMask,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment