Remove Properties::isSkiaPipeline (3/!?)
Test: hwuiunit & CtsUiRenderingTestCases pass Change-Id: Ie7b336eacdd1b8660e09653c64eb6ea0a7b4a258
This commit is contained in:
@@ -217,7 +217,6 @@ cc_defaults {
|
||||
"DeferredLayerUpdater.cpp",
|
||||
"DeviceInfo.cpp",
|
||||
"DisplayList.cpp",
|
||||
"Extensions.cpp",
|
||||
"FboCache.cpp",
|
||||
"FontRenderer.cpp",
|
||||
"FrameBuilder.cpp",
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "Extensions.h"
|
||||
|
||||
#include "Debug.h"
|
||||
#include "Properties.h"
|
||||
#include "utils/StringUtils.h"
|
||||
|
||||
#include <cutils/compiler.h>
|
||||
|
||||
#include <GLES2/gl2.h>
|
||||
#include <GLES2/gl2ext.h>
|
||||
|
||||
#include <utils/Log.h>
|
||||
|
||||
namespace android {
|
||||
namespace uirenderer {
|
||||
|
||||
Extensions::Extensions() {
|
||||
if (Properties::isSkiaEnabled()) {
|
||||
return;
|
||||
}
|
||||
const char* version = (const char*)glGetString(GL_VERSION);
|
||||
|
||||
// Section 6.1.5 of the OpenGL ES specification indicates the GL version
|
||||
// string strictly follows this format:
|
||||
//
|
||||
// OpenGL<space>ES<space><version number><space><vendor-specific information>
|
||||
//
|
||||
// In addition section 6.1.5 describes the version number thusly:
|
||||
//
|
||||
// "The version number is either of the form major number.minor number or
|
||||
// major number.minor number.release number, where the numbers all have one
|
||||
// or more digits. The release number and vendor specific information are
|
||||
// optional."
|
||||
|
||||
if (sscanf(version, "OpenGL ES %d.%d", &mVersionMajor, &mVersionMinor) != 2) {
|
||||
// If we cannot parse the version number, assume OpenGL ES 2.0
|
||||
mVersionMajor = 2;
|
||||
mVersionMinor = 0;
|
||||
}
|
||||
|
||||
auto extensions = StringUtils::split((const char*)glGetString(GL_EXTENSIONS));
|
||||
mHasNPot = extensions.has("GL_OES_texture_npot");
|
||||
mHasFramebufferFetch = extensions.has("GL_NV_shader_framebuffer_fetch");
|
||||
mHasDiscardFramebuffer = extensions.has("GL_EXT_discard_framebuffer");
|
||||
mHasDebugMarker = extensions.has("GL_EXT_debug_marker");
|
||||
mHas1BitStencil = extensions.has("GL_OES_stencil1");
|
||||
mHas4BitStencil = extensions.has("GL_OES_stencil4");
|
||||
mHasUnpackSubImage = extensions.has("GL_EXT_unpack_subimage");
|
||||
mHasRenderableFloatTexture = extensions.has("GL_OES_texture_half_float");
|
||||
|
||||
mHasSRGB = mVersionMajor >= 3 || extensions.has("GL_EXT_sRGB");
|
||||
mHasSRGBWriteControl = extensions.has("GL_EXT_sRGB_write_control");
|
||||
|
||||
#ifdef ANDROID_ENABLE_LINEAR_BLENDING
|
||||
// If linear blending is enabled, the device must have (ES3.0 or EXT_sRGB)
|
||||
// and EXT_sRGB_write_control
|
||||
LOG_ALWAYS_FATAL_IF(!mHasSRGB, "Linear blending requires ES 3.0 or EXT_sRGB");
|
||||
LOG_ALWAYS_FATAL_IF(!mHasSRGBWriteControl, "Linear blending requires EXT_sRGB_write_control");
|
||||
|
||||
mHasLinearBlending = true;
|
||||
#else
|
||||
mHasLinearBlending = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
}; // namespace uirenderer
|
||||
}; // namespace android
|
||||
@@ -26,43 +26,31 @@ namespace uirenderer {
|
||||
|
||||
class Extensions {
|
||||
public:
|
||||
Extensions();
|
||||
Extensions() {}
|
||||
|
||||
inline bool hasNPot() const { return mHasNPot; }
|
||||
inline bool hasFramebufferFetch() const { return mHasFramebufferFetch; }
|
||||
inline bool hasDiscardFramebuffer() const { return mHasDiscardFramebuffer; }
|
||||
inline bool hasDebugMarker() const { return mHasDebugMarker; }
|
||||
inline bool has1BitStencil() const { return mHas1BitStencil; }
|
||||
inline bool has4BitStencil() const { return mHas4BitStencil; }
|
||||
inline bool hasUnpackRowLength() const { return mVersionMajor >= 3 || mHasUnpackSubImage; }
|
||||
inline bool hasNPot() const { return false; }
|
||||
inline bool hasFramebufferFetch() const { return false; }
|
||||
inline bool hasDiscardFramebuffer() const { return false; }
|
||||
inline bool hasDebugMarker() const { return false; }
|
||||
inline bool has1BitStencil() const { return false; }
|
||||
inline bool has4BitStencil() const { return false; }
|
||||
inline bool hasUnpackRowLength() const { return mVersionMajor >= 3; }
|
||||
inline bool hasPixelBufferObjects() const { return mVersionMajor >= 3; }
|
||||
inline bool hasOcclusionQueries() const { return mVersionMajor >= 3; }
|
||||
inline bool hasFloatTextures() const { return mVersionMajor >= 3; }
|
||||
inline bool hasRenderableFloatTextures() const {
|
||||
return (mVersionMajor >= 3 && mVersionMinor >= 2) || mHasRenderableFloatTexture;
|
||||
return (mVersionMajor >= 3 && mVersionMinor >= 2);
|
||||
}
|
||||
inline bool hasSRGB() const { return mHasSRGB; }
|
||||
inline bool hasSRGBWriteControl() const { return hasSRGB() && mHasSRGBWriteControl; }
|
||||
inline bool hasLinearBlending() const { return hasSRGB() && mHasLinearBlending; }
|
||||
inline bool hasSRGB() const { return false; }
|
||||
inline bool hasSRGBWriteControl() const { return hasSRGB() && false; }
|
||||
inline bool hasLinearBlending() const { return hasSRGB() && false; }
|
||||
|
||||
inline int getMajorGlVersion() const { return mVersionMajor; }
|
||||
inline int getMinorGlVersion() const { return mVersionMinor; }
|
||||
|
||||
private:
|
||||
bool mHasNPot;
|
||||
bool mHasFramebufferFetch;
|
||||
bool mHasDiscardFramebuffer;
|
||||
bool mHasDebugMarker;
|
||||
bool mHas1BitStencil;
|
||||
bool mHas4BitStencil;
|
||||
bool mHasUnpackSubImage;
|
||||
bool mHasSRGB;
|
||||
bool mHasSRGBWriteControl;
|
||||
bool mHasLinearBlending;
|
||||
bool mHasRenderableFloatTexture;
|
||||
|
||||
int mVersionMajor;
|
||||
int mVersionMinor;
|
||||
int mVersionMajor = 2;
|
||||
int mVersionMinor = 0;
|
||||
}; // class Extensions
|
||||
|
||||
}; // namespace uirenderer
|
||||
|
||||
@@ -215,10 +215,5 @@ void Properties::overrideRenderPipelineType(RenderPipelineType type) {
|
||||
sRenderPipelineType = type;
|
||||
}
|
||||
|
||||
bool Properties::isSkiaEnabled() {
|
||||
auto renderType = getRenderPipelineType();
|
||||
return RenderPipelineType::SkiaGL == renderType || RenderPipelineType::SkiaVulkan == renderType;
|
||||
}
|
||||
|
||||
}; // namespace uirenderer
|
||||
}; // namespace android
|
||||
|
||||
@@ -247,7 +247,6 @@ public:
|
||||
|
||||
static ProfileType getProfileType();
|
||||
ANDROID_API static RenderPipelineType getRenderPipelineType();
|
||||
static bool isSkiaEnabled();
|
||||
|
||||
ANDROID_API static bool enableHighContrastText;
|
||||
|
||||
|
||||
@@ -114,11 +114,7 @@ void RenderNode::prepareTree(TreeInfo& info) {
|
||||
LOG_ALWAYS_FATAL_IF(!info.damageAccumulator, "DamageAccumulator missing");
|
||||
MarkAndSweepRemoved observer(&info);
|
||||
|
||||
// The OpenGL renderer reserves the stencil buffer for overdraw debugging. Functors
|
||||
// will need to be drawn in a layer.
|
||||
bool functorsNeedLayer = Properties::debugOverdraw && !Properties::isSkiaEnabled();
|
||||
|
||||
prepareTreeImpl(observer, info, functorsNeedLayer);
|
||||
prepareTreeImpl(observer, info, false);
|
||||
}
|
||||
|
||||
void RenderNode::addAnimator(const sp<BaseRenderNodeAnimator>& animator) {
|
||||
|
||||
@@ -62,13 +62,7 @@ SkiaCanvas::SkiaCanvas(const SkBitmap& bitmap) {
|
||||
mCanvasOwned =
|
||||
std::unique_ptr<SkCanvas>(new SkCanvas(bitmap, SkCanvas::ColorBehavior::kLegacy));
|
||||
if (cs.get() == nullptr || cs->isSRGB()) {
|
||||
if (!uirenderer::Properties::isSkiaEnabled()) {
|
||||
mCanvasWrapper =
|
||||
SkCreateColorSpaceXformCanvas(mCanvasOwned.get(), SkColorSpace::MakeSRGB());
|
||||
mCanvas = mCanvasWrapper.get();
|
||||
} else {
|
||||
mCanvas = mCanvasOwned.get();
|
||||
}
|
||||
mCanvas = mCanvasOwned.get();
|
||||
} else {
|
||||
/** The wrapper is needed if we are drawing into a non-sRGB destination, since
|
||||
* we need to transform all colors (not just bitmaps via filters) into the
|
||||
@@ -101,8 +95,6 @@ void SkiaCanvas::setBitmap(const SkBitmap& bitmap) {
|
||||
std::unique_ptr<SkCanvas> newCanvasWrapper;
|
||||
if (cs.get() != nullptr && !cs->isSRGB()) {
|
||||
newCanvasWrapper = SkCreateColorSpaceXformCanvas(newCanvas.get(), std::move(cs));
|
||||
} else if (!uirenderer::Properties::isSkiaEnabled()) {
|
||||
newCanvasWrapper = SkCreateColorSpaceXformCanvas(newCanvas.get(), SkColorSpace::MakeSRGB());
|
||||
}
|
||||
|
||||
// deletes the previously owned canvas (if any)
|
||||
|
||||
@@ -205,10 +205,8 @@ Bitmap::Bitmap(GraphicBuffer* buffer, const SkImageInfo& info)
|
||||
mPixelStorage.hardware.buffer = buffer;
|
||||
buffer->incStrong(buffer);
|
||||
setImmutable(); // HW bitmaps are always immutable
|
||||
if (uirenderer::Properties::isSkiaEnabled()) {
|
||||
mImage = SkImage::MakeFromAHardwareBuffer(reinterpret_cast<AHardwareBuffer*>(buffer),
|
||||
mInfo.alphaType(), mInfo.refColorSpace());
|
||||
}
|
||||
mImage = SkImage::MakeFromAHardwareBuffer(reinterpret_cast<AHardwareBuffer*>(buffer),
|
||||
mInfo.alphaType(), mInfo.refColorSpace());
|
||||
}
|
||||
|
||||
Bitmap::~Bitmap() {
|
||||
@@ -288,13 +286,9 @@ void Bitmap::setAlphaType(SkAlphaType alphaType) {
|
||||
void Bitmap::getSkBitmap(SkBitmap* outBitmap) {
|
||||
outBitmap->setHasHardwareMipMap(mHasHardwareMipMap);
|
||||
if (isHardware()) {
|
||||
if (uirenderer::Properties::isSkiaEnabled()) {
|
||||
outBitmap->allocPixels(SkImageInfo::Make(info().width(), info().height(),
|
||||
info().colorType(), info().alphaType(),
|
||||
nullptr));
|
||||
} else {
|
||||
outBitmap->allocPixels(info());
|
||||
}
|
||||
uirenderer::renderthread::RenderProxy::copyGraphicBufferInto(graphicBuffer(), outBitmap);
|
||||
return;
|
||||
}
|
||||
@@ -317,7 +311,7 @@ GraphicBuffer* Bitmap::graphicBuffer() {
|
||||
sk_sp<SkImage> Bitmap::makeImage(sk_sp<SkColorFilter>* outputColorFilter) {
|
||||
sk_sp<SkImage> image = mImage;
|
||||
if (!image) {
|
||||
SkASSERT(!(isHardware() && uirenderer::Properties::isSkiaEnabled()));
|
||||
SkASSERT(!isHardware());
|
||||
SkBitmap skiaBitmap;
|
||||
skiaBitmap.setInfo(info(), rowBytes());
|
||||
skiaBitmap.setPixelRef(sk_ref_sp(this), 0, 0);
|
||||
@@ -327,8 +321,7 @@ sk_sp<SkImage> Bitmap::makeImage(sk_sp<SkColorFilter>* outputColorFilter) {
|
||||
// TODO: refactor Bitmap to not derive from SkPixelRef, which would allow caching here.
|
||||
image = SkMakeImageFromRasterBitmap(skiaBitmap, kNever_SkCopyPixelsMode);
|
||||
}
|
||||
if (uirenderer::Properties::isSkiaEnabled() && image->colorSpace() != nullptr &&
|
||||
!image->colorSpace()->isSRGB()) {
|
||||
if (image->colorSpace() != nullptr && !image->colorSpace()->isSRGB()) {
|
||||
*outputColorFilter = SkToSRGBColorFilter::Make(image->refColorSpace());
|
||||
}
|
||||
return image;
|
||||
|
||||
@@ -29,10 +29,7 @@
|
||||
namespace android {
|
||||
|
||||
Canvas* Canvas::create_recording_canvas(int width, int height, uirenderer::RenderNode* renderNode) {
|
||||
if (uirenderer::Properties::isSkiaEnabled()) {
|
||||
return new uirenderer::skiapipeline::SkiaRecordingCanvas(renderNode, width, height);
|
||||
}
|
||||
return new uirenderer::RecordingCanvas(width, height);
|
||||
return new uirenderer::skiapipeline::SkiaRecordingCanvas(renderNode, width, height);
|
||||
}
|
||||
|
||||
static inline void drawStroke(SkScalar left, SkScalar right, SkScalar top, SkScalar thickness,
|
||||
|
||||
@@ -50,9 +50,7 @@ CacheManager::CacheManager(const DisplayInfo& display) : mMaxSurfaceArea(display
|
||||
mVectorDrawableAtlas = new skiapipeline::VectorDrawableAtlas(
|
||||
mMaxSurfaceArea / 2,
|
||||
skiapipeline::VectorDrawableAtlas::StorageMode::disallowSharedSurface);
|
||||
if (Properties::isSkiaEnabled()) {
|
||||
skiapipeline::ShaderCache::get().initShaderDiskCache();
|
||||
}
|
||||
skiapipeline::ShaderCache::get().initShaderDiskCache();
|
||||
}
|
||||
|
||||
void CacheManager::reset(sk_sp<GrContext> context) {
|
||||
|
||||
@@ -334,7 +334,7 @@ sk_sp<Bitmap> RenderProxy::allocateHardwareBitmap(SkBitmap& bitmap) {
|
||||
|
||||
int RenderProxy::copyGraphicBufferInto(GraphicBuffer* buffer, SkBitmap* bitmap) {
|
||||
RenderThread& thread = RenderThread::getInstance();
|
||||
if (Properties::isSkiaEnabled() && gettid() == thread.getTid()) {
|
||||
if (gettid() == thread.getTid()) {
|
||||
// TODO: fix everything that hits this. We should never be triggering a readback ourselves.
|
||||
return (int)thread.readback().copyGraphicBufferInto(buffer, bitmap);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user