Commit 923f6a6f by Sunny Sachanandani Committed by Commit Bot

Ignore internal format attribute for YUV D3D11 EGLImages

Internal format doesn't play any role in this case, and causes confusion due to mixing sized and unsized formats resulting in more complicated code in Chromium. Bug: angleproject:5538, chromium:1116101 Change-Id: Ie200026f014850053108aa0416e1da15bcda7b84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808855 Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 1f8e35b5
......@@ -155,7 +155,8 @@ Additions to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
EGL_D3D11_TEXTURE_PLANE_ANGLE must be specified for YUV
formats DXGI_FORMAT_NV12, DXGI_FORMAT_P010, or
DXGI_FORMAT_P016, and must be 0 or 1.
DXGI_FORMAT_P016, and must be 0 or 1. It is ignored for
all non-YUV formats.
EGL_TEXTURE_INTERNAL_FORMAT_ANGLE (if supported) must be
GL_RGBA (supported for all non-YUV formats),
......@@ -164,16 +165,8 @@ Additions to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
GL_BGRA_EXT (supported only for
DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, or
DXGI_FORMAT_B8G8R8A8_TYPELESS),
GL_R8_EXT (supported only for plane 0 with
DXGI_FORMAT_NV12),
GL_RG8_EXT (supported only for plane 1 with
DXGI_FORMAT_NV12),
GL_R16_EXT (supported only for plane 0 with
DXGI_FORMAT_P010 or DXGI_FORMAT_P016), or
GL_RG16_EXT (supported only for plane 1 with
DXGI_FORMAT_P010 or DXGI_FORMAT_P016).
DXGI_FORMAT_B8G8R8A8_TYPELESS).
It is ignored for all YUV formats.
--------------------------------------------------------------------------
Table egl.restrictions - Restrictions on D3D resources that can be used
as a <buffer>.
......
......@@ -1504,20 +1504,9 @@ egl::Error Renderer11::getD3DTextureInfo(const egl::Config *configuration,
{
return egl::EglBadParameter() << "Invalid client buffer texture plane: " << plane;
}
ASSERT(textureAngleFormat);
ASSERT(textureAngleFormat);
sizedInternalFormat = textureAngleFormat->glInternalFormat;
if (attribs.contains(EGL_TEXTURE_INTERNAL_FORMAT_ANGLE))
{
const GLenum internalFormat =
static_cast<GLenum>(attribs.get(EGL_TEXTURE_INTERNAL_FORMAT_ANGLE));
if (internalFormat != sizedInternalFormat)
{
return egl::EglBadParameter()
<< "Invalid client buffer internal format: " << std::hex << internalFormat;
}
}
}
else
{
......
......@@ -1606,9 +1606,7 @@ class D3DTextureYUVTest : public D3DTextureTest
EXPECT_TRUE(SUCCEEDED(mD3D11Device->CreateTexture2D(&desc, &data, &d3d11_texture)));
const EGLint yAttribs[] = {EGL_D3D11_TEXTURE_PLANE_ANGLE, 0,
EGL_TEXTURE_INTERNAL_FORMAT_ANGLE,
isNV12 ? GL_R8_EXT : GL_R16_EXT, EGL_NONE};
const EGLint yAttribs[] = {EGL_D3D11_TEXTURE_PLANE_ANGLE, 0, EGL_NONE};
EGLImage yImage = eglCreateImageKHR(display, EGL_NO_CONTEXT, EGL_D3D11_TEXTURE_ANGLE,
static_cast<EGLClientBuffer>(d3d11_texture), yAttribs);
ASSERT_EGL_SUCCESS();
......@@ -1665,9 +1663,7 @@ class D3DTextureYUVTest : public D3DTextureTest
}
ASSERT_GL_NO_ERROR();
const EGLint uvAttribs[] = {EGL_D3D11_TEXTURE_PLANE_ANGLE, 1,
EGL_TEXTURE_INTERNAL_FORMAT_ANGLE,
isNV12 ? GL_RG8_EXT : GL_RG16_EXT, EGL_NONE};
const EGLint uvAttribs[] = {EGL_D3D11_TEXTURE_PLANE_ANGLE, 1, EGL_NONE};
EGLImage uvImage =
eglCreateImageKHR(display, EGL_NO_CONTEXT, EGL_D3D11_TEXTURE_ANGLE,
static_cast<EGLClientBuffer>(d3d11_texture), uvAttribs);
......
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