Hash :
5b419533
Author :
Date :
2020-11-03T13:33:44
GL: Implement EXT_YUV_target Add test coverage of YUV format sampling as RGB or directly as YUV and rendering as YUV using layout(yuv). Initializing YUV AHardwareBuffers requires Android API 29 so ANGLE must be compiled with: android32_ndk_api_level = 29 android64_ndk_api_level = 29 The following tests can still run with Android API 26 because they don't need to initialize the buffer: ImageTestES3.ClearYUVAHB ImageTestES3.YUVValidation Bug: angleproject:4852 Bug: b/172649538 Change-Id: I4fe9afb2a68fb827dc5a5732b213b5eb60d585ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2517562 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
//
// Copyright 2018 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// NativeBufferImageSiblingAndroid.cpp: Implements the NativeBufferImageSiblingAndroid class
#include "libANGLE/renderer/gl/egl/android/NativeBufferImageSiblingAndroid.h"
#include "common/android_util.h"
namespace rx
{
NativeBufferImageSiblingAndroid::NativeBufferImageSiblingAndroid(EGLClientBuffer buffer)
: mBuffer(buffer), mFormat(GL_NONE), mYUV(false)
{}
NativeBufferImageSiblingAndroid::~NativeBufferImageSiblingAndroid() {}
egl::Error NativeBufferImageSiblingAndroid::initialize(const egl::Display *display)
{
int pixelFormat = 0;
angle::android::GetANativeWindowBufferProperties(
angle::android::ClientBufferToANativeWindowBuffer(mBuffer), &mSize.width, &mSize.height,
&mSize.depth, &pixelFormat);
mFormat = gl::Format(angle::android::NativePixelFormatToGLInternalFormat(pixelFormat));
mYUV = angle::android::NativePixelFormatIsYUV(pixelFormat);
return egl::NoError();
}
gl::Format NativeBufferImageSiblingAndroid::getFormat() const
{
return mFormat;
}
bool NativeBufferImageSiblingAndroid::isRenderable(const gl::Context *context) const
{
return true;
}
bool NativeBufferImageSiblingAndroid::isTexturable(const gl::Context *context) const
{
return true;
}
bool NativeBufferImageSiblingAndroid::isYUV() const
{
return mYUV;
}
gl::Extents NativeBufferImageSiblingAndroid::getSize() const
{
return mSize;
}
size_t NativeBufferImageSiblingAndroid::getSamples() const
{
return 0;
}
EGLClientBuffer NativeBufferImageSiblingAndroid::getBuffer() const
{
return mBuffer;
}
} // namespace rx