Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1f3c389 authored by Stan Iliev's avatar Stan Iliev
Browse files

Use Skia API to detect if FP16 render buffer is supported

Use Skia GrCaps to detect if we can render into a FP16 buffer.
Exclude Extension class initialization from SkiaGL pipeline.

Bug: 68383159
Test: Passed testWindowProducerCopyToRGBA16F on gce_x86_phone emu
Change-Id: I3355bad891ed5403fbd94d18bb8ba110a3b77325
parent a3e562cd
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -31,11 +31,7 @@ namespace android {
namespace uirenderer {

Extensions::Extensions() {
    if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) {
        // Extensions class is used only by OpenGL and SkiaGL pipelines
        // The code below will crash for SkiaVulkan, because OpenGL is not initialized
        // TODO: instantiate Extensions class only for OpenGL pipeline
        // TODO: remove the only usage of Extensions by SkiaGL in SkiaOpenGLReadback::copyImageInto
    if (Properties::isSkiaEnabled()) {
        return;
    }
    const char* version = (const char*)glGetString(GL_VERSION);
+1 −7
Original line number Diff line number Diff line
@@ -66,14 +66,8 @@ CopyResult SkiaOpenGLReadback::copyImageInto(EGLImageKHR eglImage, const Matrix4
            break;
    }

    /* Ideally, we would call grContext->caps()->isConfigRenderable(...). We
     * currently can't do that since some devices (i.e. SwiftShader) supports all
     * the appropriate half float extensions, but only allow the buffer to be read
     * back as full floats.  We can relax this extension if Skia implements support
     * for reading back float buffers (skbug.com/6945).
     */
    if (pixelConfig == kRGBA_half_GrPixelConfig &&
        !DeviceInfo::get()->extensions().hasRenderableFloatTextures()) {
            !grContext->caps()->isConfigRenderable(kRGBA_half_GrPixelConfig, false)) {
        ALOGW("Can't copy surface into bitmap, RGBA_F16 config is not supported");
        return CopyResult::DestinationInvalid;
    }