Commit 66b5ff58 by Cody Northrop Committed by Commit Bot

texture3D: Implement functionality and enable for Vulkan

Also update test expectations for texture3D. Bug: angleproject:3188 Change-Id: If8a8e0a83a86c48c2afb0c36534c1e9d4120fe47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1682782Reviewed-by: 's avatarIan Elliott <ianelliott@google.com> Reviewed-by: 's avatarLingfeng Yang <lfy@google.com> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
parent 4fbbdb15
......@@ -178,6 +178,7 @@ Extensions::Extensions()
depthTextureOES(false),
depth24OES(false),
depth32(false),
texture3DOES(false),
textureStorage(false),
textureNPOT(false),
drawBuffers(false),
......@@ -876,6 +877,7 @@ const ExtensionInfoMap &GetExtensionInfoMap()
map["GL_OES_depth_texture"] = esOnlyExtension(&Extensions::depthTextureOES);
map["GL_OES_depth24"] = esOnlyExtension(&Extensions::depth24OES);
map["GL_OES_depth32"] = esOnlyExtension(&Extensions::depth32);
map["GL_OES_texture_3D"] = enableableExtension(&Extensions::texture3DOES);
map["GL_EXT_texture_storage"] = enableableExtension(&Extensions::textureStorage);
map["GL_OES_texture_npot"] = enableableExtension(&Extensions::textureNPOT);
map["GL_EXT_draw_buffers"] = enableableExtension(&Extensions::drawBuffers);
......
......@@ -252,6 +252,9 @@ struct Extensions
// Allows DEPTH_COMPONENT32_OES as a valid Renderbuffer format.
bool depth32;
// GL_OES_texture_3D
bool texture3DOES;
// GL_EXT_texture_storage
bool textureStorage;
......
......@@ -85,6 +85,7 @@ Compiler::Compiler(rx::GLImplFactory *implFactory, const State &state)
mResources.ARB_texture_rectangle = extensions.textureRectangle;
mResources.OES_texture_storage_multisample_2d_array =
extensions.textureStorageMultisample2DArray;
mResources.OES_texture_3D = extensions.texture3DOES;
mResources.ANGLE_texture_multisample = extensions.textureMultisample;
mResources.ANGLE_multi_draw = extensions.multiDraw;
......
......@@ -359,12 +359,13 @@ void Context::initialize()
Texture *zeroTextureCube = new Texture(mImplementation.get(), 0, TextureType::CubeMap);
mZeroTextures[TextureType::CubeMap].set(this, zeroTextureCube);
if (getClientVersion() >= Version(3, 0))
if (getClientVersion() >= Version(3, 0) || mSupportedExtensions.texture3DOES)
{
// TODO: These could also be enabled via extension
Texture *zeroTexture3D = new Texture(mImplementation.get(), 0, TextureType::_3D);
mZeroTextures[TextureType::_3D].set(this, zeroTexture3D);
}
if (getClientVersion() >= Version(3, 0))
{
Texture *zeroTexture2DArray = new Texture(mImplementation.get(), 0, TextureType::_2DArray);
mZeroTextures[TextureType::_2DArray].set(this, zeroTexture2DArray);
}
......@@ -7771,6 +7772,22 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu
*numParams = 1;
return true;
}
case GL_TEXTURE_BINDING_3D:
if ((getClientMajorVersion() < 3) && !getExtensions().texture3DOES)
{
return false;
}
*type = GL_INT;
*numParams = 1;
return true;
case GL_MAX_3D_TEXTURE_SIZE:
if ((getClientMajorVersion() < 3) && !getExtensions().texture3DOES)
{
return false;
}
*type = GL_INT;
*numParams = 1;
return true;
}
if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT)
......@@ -7897,7 +7914,6 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu
case GL_READ_BUFFER:
case GL_TEXTURE_BINDING_3D:
case GL_TEXTURE_BINDING_2D_ARRAY:
case GL_MAX_3D_TEXTURE_SIZE:
case GL_MAX_ARRAY_TEXTURE_LAYERS:
case GL_MAX_VERTEX_UNIFORM_BLOCKS:
case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:
......@@ -8714,7 +8730,7 @@ void StateCache::updateValidBindTextureTypes(Context *context)
{TextureType::_2DArray, isGLES3},
{TextureType::_2DMultisample, isGLES31 || exts.textureMultisample},
{TextureType::_2DMultisampleArray, exts.textureStorageMultisample2DArray},
{TextureType::_3D, isGLES3},
{TextureType::_3D, isGLES3 || exts.texture3DOES},
{TextureType::External, exts.eglImageExternal || exts.eglStreamConsumerExternal},
{TextureType::Rectangle, exts.textureRectangle},
{TextureType::CubeMap, true},
......
......@@ -367,11 +367,13 @@ void State::initialize(Context *context)
mSamplerTextures[TextureType::_2D].resize(caps.maxCombinedTextureImageUnits);
mSamplerTextures[TextureType::CubeMap].resize(caps.maxCombinedTextureImageUnits);
if (clientVersion >= Version(3, 0) || nativeExtensions.texture3DOES)
{
mSamplerTextures[TextureType::_3D].resize(caps.maxCombinedTextureImageUnits);
}
if (clientVersion >= Version(3, 0))
{
// TODO: These could also be enabled via extension
mSamplerTextures[TextureType::_2DArray].resize(caps.maxCombinedTextureImageUnits);
mSamplerTextures[TextureType::_3D].resize(caps.maxCombinedTextureImageUnits);
}
if (clientVersion >= Version(3, 1) || nativeExtensions.textureMultisample)
{
......
......@@ -1652,6 +1652,7 @@ void GenerateCaps(ID3D11Device *device,
extensions->provokingVertex = true;
extensions->blendFuncExtended = true;
extensions->maxDualSourceDrawBuffers = 1;
extensions->texture3DOES = true;
// D3D11 cannot support reading depth texture as a luminance texture.
// It treats it as a red-channel-only texture.
......
......@@ -1412,6 +1412,9 @@ void GenerateCaps(const FunctionsGL *functions,
functions->isAtLeastGL(gl::Version(3, 2));
extensions->textureExternalUpdateANGLE = true;
extensions->texture3DOES = functions->isAtLeastGL(gl::Version(1, 2)) ||
functions->isAtLeastGLES(gl::Version(3, 0)) ||
functions->hasGLESExtension("GL_OES_texture_3D");
}
void InitializeFeatures(const FunctionsGL *functions, angle::FeaturesGL *features)
......
......@@ -715,7 +715,7 @@ angle::Result WindowSurfaceVk::checkForOutOfDateSwapchain(ContextVk *contextVk,
if (swapIntervalChanged || presentOutOfDate ||
contextVk->getRenderer()->getFeatures().perFrameWindowSizeQuery.enabled)
{
gl::Extents swapchainExtents(getWidth(), getHeight(), 0);
gl::Extents swapchainExtents(getWidth(), getHeight(), 1);
gl::Extents currentExtents;
ANGLE_TRY(getCurrentWindowSize(contextVk, &currentExtents));
......
......@@ -43,7 +43,7 @@ angle::Result WindowSurfaceVkAndroid::getCurrentWindowSize(vk::Context *context,
int32_t height = ANativeWindow_getHeight(mNativeWindowType);
ANGLE_VK_CHECK(context, width > 0 && height > 0, VK_ERROR_INITIALIZATION_FAILED);
*extentsOut = gl::Extents(width, height, 0);
*extentsOut = gl::Extents(width, height, 1);
return angle::Result::Continue;
}
......
......@@ -58,7 +58,7 @@ angle::Result WindowSurfaceVkFuchsia::getCurrentWindowSize(vk::Context *context,
int32_t width = fuchsia_egl_window_get_width(egl_window);
int32_t height = fuchsia_egl_window_get_height(egl_window);
*extentsOut = gl::Extents(width, height, 0);
*extentsOut = gl::Extents(width, height, 1);
return angle::Result::Continue;
}
......
......@@ -104,6 +104,8 @@ void RendererVk::ensureCapsInitialized() const
// Vulkan natively supports non power-of-two textures
mNativeExtensions.textureNPOT = true;
mNativeExtensions.texture3DOES = true;
// Vulkan natively supports standard derivatives
mNativeExtensions.standardDerivatives = true;
......
......@@ -209,12 +209,15 @@ constexpr angle::PackedEnumMap<ImageLayout, ImageMemoryBarrierData> kImageMemory
VkImageCreateFlags GetImageCreateFlags(gl::TextureType textureType)
{
if (textureType == gl::TextureType::CubeMap)
switch (textureType)
{
case gl::TextureType::CubeMap:
return VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
}
else
{
case gl::TextureType::_3D:
return VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT;
default:
return 0;
}
}
......@@ -1517,7 +1520,7 @@ angle::Result ImageHelper::initExternal(Context *context,
imageInfo.format = format.vkImageFormat;
imageInfo.extent.width = static_cast<uint32_t>(extents.width);
imageInfo.extent.height = static_cast<uint32_t>(extents.height);
imageInfo.extent.depth = 1;
imageInfo.extent.depth = static_cast<uint32_t>(extents.depth);
imageInfo.mipLevels = mipLevels;
imageInfo.arrayLayers = mLayerCount;
imageInfo.samples = gl_vk::GetSamples(samples);
......@@ -1899,7 +1902,6 @@ void ImageHelper::clear(const VkClearValue &value,
gl::Extents ImageHelper::getSize(const gl::ImageIndex &index) const
{
ASSERT(mExtents.depth == 1);
GLint mipLevel = index.getLevelIndex();
// Level 0 should be the size of the extents, after that every time you increase a level
// you shrink the extents by half.
......@@ -2065,8 +2067,6 @@ angle::Result ImageHelper::stageSubresourceUpdate(ContextVk *contextVk,
ANGLE_VK_CHECK_MATH(contextVk, formatInfo.computeDepthPitch(extents.height, unpack.imageHeight,
inputRowPitch, &inputDepthPitch));
// Note: skip images for 3D Textures.
ASSERT(!index.usesTex3D());
bool applySkipImages = false;
GLuint inputSkipBytes = 0;
......
......@@ -42,7 +42,7 @@ angle::Result WindowSurfaceVkWin32::getCurrentWindowSize(vk::Context *context,
ANGLE_VK_CHECK(context, GetClientRect(mNativeWindowType, &rect) == TRUE,
VK_ERROR_INITIALIZATION_FAILED);
*extentsOut = gl::Extents(rect.right - rect.left, rect.bottom - rect.top, 0);
*extentsOut = gl::Extents(rect.right - rect.left, rect.bottom - rect.top, 1);
return angle::Result::Continue;
}
......
......@@ -42,7 +42,7 @@ angle::Result WindowSurfaceVkXcb::getCurrentWindowSize(vk::Context *context,
xcb_get_geometry_cookie_t cookie = xcb_get_geometry(mXcbConnection, mNativeWindowType);
xcb_get_geometry_reply_t *reply = xcb_get_geometry_reply(mXcbConnection, cookie, nullptr);
ASSERT(reply);
*extentsOut = gl::Extents(reply->width, reply->height, 0);
*extentsOut = gl::Extents(reply->width, reply->height, 1);
free(reply);
return angle::Result::Continue;
}
......
......@@ -502,6 +502,9 @@ bool ValidTextureTarget(const Context *context, TextureType type)
return context->getExtensions().textureRectangle;
case TextureType::_3D:
return ((context->getClientMajorVersion() >= 3) ||
context->getExtensions().texture3DOES);
case TextureType::_2DArray:
return (context->getClientMajorVersion() >= 3);
......@@ -5657,7 +5660,8 @@ bool ValidateTexParameterBase(Context *context,
case GL_TEXTURE_COMPARE_FUNC:
case GL_TEXTURE_MIN_LOD:
case GL_TEXTURE_MAX_LOD:
if (context->getClientMajorVersion() < 3)
if (context->getClientMajorVersion() < 3 &&
!(pname == GL_TEXTURE_WRAP_R && context->getExtensions().texture3DOES))
{
context->validationError(GL_INVALID_ENUM, kES3Required);
return false;
......
......@@ -1518,7 +1518,7 @@ bool ValidateCompressedTexImage3D(Context *context,
GLsizei imageSize,
const void *data)
{
if (context->getClientMajorVersion() < 3)
if ((context->getClientMajorVersion() < 3) && !context->getExtensions().texture3DOES)
{
context->validationError(GL_INVALID_OPERATION, kES3Required);
return false;
......@@ -2004,7 +2004,7 @@ bool ValidateCopyTexSubImage3D(Context *context,
GLsizei width,
GLsizei height)
{
if (context->getClientMajorVersion() < 3)
if ((context->getClientMajorVersion() < 3) && !context->getExtensions().texture3DOES)
{
context->validationError(GL_INVALID_OPERATION, kES3Required);
return false;
......@@ -2177,9 +2177,9 @@ bool ValidateTexImage3D(Context *context,
GLenum type,
const void *pixels)
{
if (context->getClientMajorVersion() < 3)
if ((context->getClientMajorVersion() < 3) && !context->getExtensions().texture3DOES)
{
context->validationError(GL_INVALID_OPERATION, kES3Required);
context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
......@@ -2230,7 +2230,7 @@ bool ValidateTexSubImage3D(Context *context,
GLenum type,
const void *pixels)
{
if (context->getClientMajorVersion() < 3)
if ((context->getClientMajorVersion() < 3) && !context->getExtensions().texture3DOES)
{
context->validationError(GL_INVALID_OPERATION, kES3Required);
return false;
......@@ -2284,7 +2284,7 @@ bool ValidateCompressedTexSubImage3D(Context *context,
GLsizei imageSize,
const void *data)
{
if (context->getClientMajorVersion() < 3)
if ((context->getClientMajorVersion() < 3) && !context->getExtensions().texture3DOES)
{
context->validationError(GL_INVALID_OPERATION, kES3Required);
return false;
......
......@@ -541,73 +541,77 @@
// 3D texture:
3188 VULKAN : dEQP-GLES3.functional.fbo.completeness.layer.3d* = SKIP
3188 VULKAN : dEQP-GLES3.functional.fbo.color.tex3d.* = SKIP
3188 VULKAN : dEQP-GLES3.functional.texture.format.*3d* = SKIP
3188 VULKAN : dEQP-GLES3.functional.texture.filtering.*3d* = SKIP
3188 VULKAN : dEQP-GLES3.functional.texture.mipmap.*3d* = SKIP
3188 VULKAN : dEQP-GLES3.functional.texture.units.2_units.only_3d.6 = SKIP
3188 VULKAN : dEQP-GLES3.functional.texture.units.4_units.only_3d.* = SKIP
// 2D array (anglebug.com/3189), new formats in ES 3.0 (anglebug.com/3190):
3189 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2darrayshadow_vertex = SKIP
3189 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.*2darray* = SKIP
3189 VULKAN : dEQP-GLES3.functional.fbo.completeness.layer.2darr* = SKIP
3189 VULKAN : dEQP-GLES3.functional.fbo.color.tex2darray.* = SKIP
3189 VULKAN : dEQP-GLES3.functional.state_query.texture.*2d_array* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.format.*2d_array* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.filtering.*2d_array* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.shadow.2d_array.* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.specification.basic_teximage3d.*2d_array* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.*2d_array = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.size.*2d_array* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.specification.teximage3d_depth*2d_array = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage3d_depth*2d_array = SKIP
// New or broken formats in ES 3.0:
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage2d.format.rgb9* = FAIL
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth_component32* = FAIL
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth_component24* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth_component16* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth24* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth32* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.r11f* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba32* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba16* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba8* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba4* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.srgb8* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb32* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb16* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb10* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb9* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb8* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb5* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg32* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg16* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg8* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.r32* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.r16* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.r8* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth_component32* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth_component24* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth_component16* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth24* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth32* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texstorage3d.size.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_teximage2d.r11f_g11f_b10f_* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_teximage2d.rgb9_e5_* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_teximage3d* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb9* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_texsubimage2d.r11f_g11f_b10f_* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_texsubimage2d.rgb9_e5_* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_texsubimage3d* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_texsubimage3d.r11f* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.basic_texsubimage3d.rgb9* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.random_teximage2d.2d_9 = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage2d_pbo.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage3d_pbo.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params.rgb8_skip_images = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params.rgb8_skip_images = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage2d_depth.depth32f_stencil8 = FAIL
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage2d_depth_pbo.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage3d_depth* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage2d_depth.depth32f_stencil8 = FAIL
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage3d_depth* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage3d_unpack* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.vertex.* = SKIP
3189 VULKAN : dEQP-GLES3.functional.texture.units.* = SKIP
3189 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params.r8_* = FAIL
3190 VULKAN : dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params.r8_* = FAIL
3190 VULKAN PIXEL2 : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba16* = FAIL
3190 VULKAN PIXEL2 : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb16* = FAIL
3190 VULKAN PIXEL2 : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg32* = FAIL
3190 VULKAN : dEQP-GLES3.functional.texture.filtering.3d.formats.r11f* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.format.sized.3d.r11* = SKIP
// Functional texture general failures:
3190 VULKAN : dEQP-GLES3.functional.texture.vertex.2d.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.vertex.cube.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.vertex.2d_array.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.units.*2d* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.units.*cube* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.units.*mixed* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.units.all_units.* = SKIP
3190 VULKAN : dEQP-GLES3.functional.texture.units.8_units.* = SKIP
// New shader builtins for texture sampling:
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.textureoffset.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.textureprojoffset.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.texturelodoffset.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.texelfetch.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset.* = SKIP
3622 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.texturesize.* = SKIP
// ASTC support:
// HDR not officially supported by Vulkan (see also the discussion in 1185):
......@@ -674,6 +678,7 @@
// PBO:
2950 VULKAN : dEQP-GLES3.functional.pbo.* = SKIP
2950 VULKAN : dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_texture_layer = SKIP
// Uniform API:
3198 VULKAN : dEQP-GLES3.functional.uniform_api.value.* = SKIP
......
......@@ -40,3 +40,14 @@
// Depth/stencil related failures.
3457 VULKAN : KHR-GLES2.core.internalformat.texture2d.depth_stencil_unsigned_int_24_8_depth_stencil = FAIL
// 3d texture framebuffer tests
3188 VULKAN : KHR-GLES2.texture_3d.framebuffer_* = SKIP
// Unclear what is happening here, failing to validate a 2D texture format
3190 VULKAN : KHR-GLES2.texture_3d.copy_sub_image.rgba8 = SKIP
// Compressed texture tests on Android
3190 VULKAN PIXEL2 : KHR-GLES2.texture_3d.compressed_texture.rgba_astc_* = FAIL
3190 VULKAN PIXEL2 : KHR-GLES2.texture_3d.compressed_texture.sgb8_alpha8_astc_* = FAIL
3190 VULKAN PIXEL2 : KHR-GLES2.texture_3d.compressed_texture.srgb8_alpha8_astc_* = FAIL
\ No newline at end of file
......@@ -67,6 +67,10 @@ TEST_P(TextureParameterTest, InitialState)
// Negative test: invalid enum / operation
TEST_P(TextureParameterTest, NegativeEnum)
{
// The texture3d query below appears to be broken on all configs
// anglebug.com/3639
ANGLE_SKIP_TEST_IF(true);
// Invalid target (not supported)
glGetTexParameteriv(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, nullptr);
EXPECT_GL_ERROR(GL_INVALID_ENUM);
......
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