Merge "Frameworks/base: Wall Werror in libs/hwui"
This commit is contained in:
@@ -121,7 +121,7 @@ inline void computeBufferSize(int* totalVertexCount, int* totalIndexCount,
|
||||
*totalUmbraCount = 0;
|
||||
if (!isCasterOpaque) {
|
||||
// Add the centroid if occluder is translucent.
|
||||
*totalVertexCount++;
|
||||
(*totalVertexCount)++;
|
||||
*totalIndexCount += 2 * innerVertexCount + 1;
|
||||
*totalUmbraCount = innerVertexCount;
|
||||
}
|
||||
|
||||
@@ -13,107 +13,110 @@ LOCAL_CLANG_CFLAGS += \
|
||||
# Only build libhwui when USE_OPENGL_RENDERER is
|
||||
# defined in the current device/board configuration
|
||||
ifeq ($(USE_OPENGL_RENDERER),true)
|
||||
LOCAL_SRC_FILES := \
|
||||
utils/Blur.cpp \
|
||||
utils/GLUtils.cpp \
|
||||
utils/SortedListImpl.cpp \
|
||||
thread/TaskManager.cpp \
|
||||
font/CacheTexture.cpp \
|
||||
font/Font.cpp \
|
||||
AmbientShadow.cpp \
|
||||
AnimationContext.cpp \
|
||||
Animator.cpp \
|
||||
AnimatorManager.cpp \
|
||||
AssetAtlas.cpp \
|
||||
DamageAccumulator.cpp \
|
||||
FontRenderer.cpp \
|
||||
GammaFontRenderer.cpp \
|
||||
Caches.cpp \
|
||||
DisplayList.cpp \
|
||||
DeferredDisplayList.cpp \
|
||||
DeferredLayerUpdater.cpp \
|
||||
DisplayListLogBuffer.cpp \
|
||||
DisplayListRenderer.cpp \
|
||||
Dither.cpp \
|
||||
DrawProfiler.cpp \
|
||||
Extensions.cpp \
|
||||
FboCache.cpp \
|
||||
GradientCache.cpp \
|
||||
Image.cpp \
|
||||
Interpolator.cpp \
|
||||
Layer.cpp \
|
||||
LayerCache.cpp \
|
||||
LayerRenderer.cpp \
|
||||
Matrix.cpp \
|
||||
OpenGLRenderer.cpp \
|
||||
Patch.cpp \
|
||||
PatchCache.cpp \
|
||||
PathCache.cpp \
|
||||
PathTessellator.cpp \
|
||||
PixelBuffer.cpp \
|
||||
Program.cpp \
|
||||
ProgramCache.cpp \
|
||||
RenderBufferCache.cpp \
|
||||
RenderNode.cpp \
|
||||
RenderProperties.cpp \
|
||||
RenderState.cpp \
|
||||
ResourceCache.cpp \
|
||||
ShadowTessellator.cpp \
|
||||
SkiaShader.cpp \
|
||||
Snapshot.cpp \
|
||||
SpotShadow.cpp \
|
||||
StatefulBaseRenderer.cpp \
|
||||
Stencil.cpp \
|
||||
TessellationCache.cpp \
|
||||
Texture.cpp \
|
||||
TextureCache.cpp \
|
||||
TextDropShadowCache.cpp
|
||||
LOCAL_SRC_FILES := \
|
||||
utils/Blur.cpp \
|
||||
utils/GLUtils.cpp \
|
||||
utils/SortedListImpl.cpp \
|
||||
thread/TaskManager.cpp \
|
||||
font/CacheTexture.cpp \
|
||||
font/Font.cpp \
|
||||
AmbientShadow.cpp \
|
||||
AnimationContext.cpp \
|
||||
Animator.cpp \
|
||||
AnimatorManager.cpp \
|
||||
AssetAtlas.cpp \
|
||||
DamageAccumulator.cpp \
|
||||
FontRenderer.cpp \
|
||||
GammaFontRenderer.cpp \
|
||||
Caches.cpp \
|
||||
DisplayList.cpp \
|
||||
DeferredDisplayList.cpp \
|
||||
DeferredLayerUpdater.cpp \
|
||||
DisplayListLogBuffer.cpp \
|
||||
DisplayListRenderer.cpp \
|
||||
Dither.cpp \
|
||||
DrawProfiler.cpp \
|
||||
Extensions.cpp \
|
||||
FboCache.cpp \
|
||||
GradientCache.cpp \
|
||||
Image.cpp \
|
||||
Interpolator.cpp \
|
||||
Layer.cpp \
|
||||
LayerCache.cpp \
|
||||
LayerRenderer.cpp \
|
||||
Matrix.cpp \
|
||||
OpenGLRenderer.cpp \
|
||||
Patch.cpp \
|
||||
PatchCache.cpp \
|
||||
PathCache.cpp \
|
||||
PathTessellator.cpp \
|
||||
PixelBuffer.cpp \
|
||||
Program.cpp \
|
||||
ProgramCache.cpp \
|
||||
RenderBufferCache.cpp \
|
||||
RenderNode.cpp \
|
||||
RenderProperties.cpp \
|
||||
RenderState.cpp \
|
||||
ResourceCache.cpp \
|
||||
ShadowTessellator.cpp \
|
||||
SkiaShader.cpp \
|
||||
Snapshot.cpp \
|
||||
SpotShadow.cpp \
|
||||
StatefulBaseRenderer.cpp \
|
||||
Stencil.cpp \
|
||||
TessellationCache.cpp \
|
||||
Texture.cpp \
|
||||
TextureCache.cpp \
|
||||
TextDropShadowCache.cpp
|
||||
|
||||
# RenderThread stuff
|
||||
LOCAL_SRC_FILES += \
|
||||
renderthread/CanvasContext.cpp \
|
||||
renderthread/DrawFrameTask.cpp \
|
||||
renderthread/EglManager.cpp \
|
||||
renderthread/RenderProxy.cpp \
|
||||
renderthread/RenderTask.cpp \
|
||||
renderthread/RenderThread.cpp \
|
||||
renderthread/TimeLord.cpp
|
||||
LOCAL_SRC_FILES += \
|
||||
renderthread/CanvasContext.cpp \
|
||||
renderthread/DrawFrameTask.cpp \
|
||||
renderthread/EglManager.cpp \
|
||||
renderthread/RenderProxy.cpp \
|
||||
renderthread/RenderTask.cpp \
|
||||
renderthread/RenderThread.cpp \
|
||||
renderthread/TimeLord.cpp
|
||||
|
||||
intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,)
|
||||
intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,)
|
||||
|
||||
LOCAL_C_INCLUDES += \
|
||||
external/skia/src/core
|
||||
LOCAL_C_INCLUDES += \
|
||||
external/skia/src/core
|
||||
|
||||
LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES
|
||||
LOCAL_CFLAGS += -Wno-unused-parameter
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_SHARED_LIBRARIES := liblog libcutils libutils libEGL libGLESv2 libskia libui libgui
|
||||
LOCAL_MODULE := libhwui
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES
|
||||
LOCAL_CFLAGS += -Wno-unused-parameter
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_SHARED_LIBRARIES := liblog libcutils libutils libEGL libGLESv2 libskia libui libgui
|
||||
LOCAL_MODULE := libhwui
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT))
|
||||
LOCAL_CFLAGS += -DANDROID_ENABLE_RENDERSCRIPT
|
||||
LOCAL_SHARED_LIBRARIES += libRS libRScpp
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(intermediates) \
|
||||
frameworks/rs/cpp \
|
||||
frameworks/rs \
|
||||
ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT))
|
||||
LOCAL_CFLAGS += -DANDROID_ENABLE_RENDERSCRIPT
|
||||
LOCAL_SHARED_LIBRARIES += libRS libRScpp
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(intermediates) \
|
||||
frameworks/rs/cpp \
|
||||
frameworks/rs \
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef HWUI_COMPILE_SYMBOLS
|
||||
LOCAL_CFLAGS += -fvisibility=hidden
|
||||
endif
|
||||
ifndef HWUI_COMPILE_SYMBOLS
|
||||
LOCAL_CFLAGS += -fvisibility=hidden
|
||||
endif
|
||||
|
||||
ifdef HWUI_COMPILE_FOR_PERF
|
||||
LOCAL_CFLAGS += -fno-omit-frame-pointer -marm -mapcs
|
||||
endif
|
||||
ifdef HWUI_COMPILE_FOR_PERF
|
||||
# TODO: Non-arm?
|
||||
LOCAL_CFLAGS += -fno-omit-frame-pointer -marm -mapcs
|
||||
endif
|
||||
|
||||
# Defaults for ATRACE_TAG and LOG_TAG for libhwui
|
||||
LOCAL_CFLAGS += -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\"
|
||||
# Defaults for ATRACE_TAG and LOG_TAG for libhwui
|
||||
LOCAL_CFLAGS += -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\"
|
||||
|
||||
include external/stlport/libstlport.mk
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
|
||||
|
||||
include $(call all-makefiles-under,$(LOCAL_PATH))
|
||||
include external/stlport/libstlport.mk
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(call all-makefiles-under,$(LOCAL_PATH))
|
||||
endif
|
||||
|
||||
@@ -333,7 +333,7 @@ private:
|
||||
class RestoreToCountBatch : public Batch {
|
||||
public:
|
||||
RestoreToCountBatch(const StateOp* op, const DeferredDisplayState* state, int restoreCount) :
|
||||
mOp(op), mState(state), mRestoreCount(restoreCount) {}
|
||||
mState(state), mRestoreCount(restoreCount) {}
|
||||
|
||||
virtual status_t replay(OpenGLRenderer& renderer, Rect& dirty, int index) {
|
||||
DEFER_LOGD("batch %p restoring to count %d", this, mRestoreCount);
|
||||
@@ -345,7 +345,6 @@ public:
|
||||
|
||||
private:
|
||||
// we use the state storage for the RestoreToCountOp, but don't replay the op itself
|
||||
const StateOp* mOp;
|
||||
const DeferredDisplayState* mState;
|
||||
|
||||
/*
|
||||
@@ -700,7 +699,6 @@ void DeferredDisplayList::discardDrawingBatches(const unsigned int maxIndex) {
|
||||
for (unsigned int i = mEarliestUnclearedIndex; i <= maxIndex; i++) {
|
||||
// leave deferred state ops alone for simplicity (empty save restore pairs may now exist)
|
||||
if (mBatches[i] && mBatches[i]->purelyDrawBatch()) {
|
||||
DrawBatch* b = (DrawBatch*) mBatches[i];
|
||||
delete mBatches[i];
|
||||
mBatches.replaceAt(NULL, i);
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ public:
|
||||
};
|
||||
|
||||
class DeferredDisplayList {
|
||||
friend class DeferStateStruct; // used to give access to allocator
|
||||
friend struct DeferStateStruct; // used to give access to allocator
|
||||
public:
|
||||
DeferredDisplayList(const Rect& bounds, bool avoidOverdraw = true) :
|
||||
mBounds(bounds), mAvoidOverdraw(avoidOverdraw) {
|
||||
|
||||
@@ -91,8 +91,7 @@ private:
|
||||
std::vector<SkPath> mTempPaths;
|
||||
};
|
||||
|
||||
class DeferStateStruct : public PlaybackStateStruct {
|
||||
public:
|
||||
struct DeferStateStruct : public PlaybackStateStruct {
|
||||
DeferStateStruct(DeferredDisplayList& deferredList, OpenGLRenderer& renderer, int replayFlags)
|
||||
: PlaybackStateStruct(renderer, replayFlags, &(deferredList.mAllocator)),
|
||||
mDeferredList(deferredList) {}
|
||||
|
||||
@@ -80,7 +80,7 @@ void DisplayListLogBuffer::outputCommands(FILE *file)
|
||||
|
||||
fprintf(file, "%*s%s\n", 2 * tmpBufferPtr->level, "", tmpBufferPtr->label);
|
||||
|
||||
OpLog* nextOp = tmpBufferPtr++;
|
||||
tmpBufferPtr++;
|
||||
if (tmpBufferPtr > mBufferLast) {
|
||||
tmpBufferPtr = mBufferFirst;
|
||||
}
|
||||
|
||||
@@ -358,7 +358,7 @@ void FontRenderer::cacheBitmap(const SkGlyph& glyph, CachedGlyphInfo* cachedGlyp
|
||||
break;
|
||||
}
|
||||
case SkMask::kBW_Format: {
|
||||
uint32_t cacheX = 0, bX = 0, cacheY = 0, bY = 0;
|
||||
uint32_t cacheX = 0, cacheY = 0;
|
||||
uint32_t row = (startY - TEXTURE_BORDER_SIZE) * cacheWidth + startX
|
||||
- TEXTURE_BORDER_SIZE;
|
||||
static const uint8_t COLORS[2] = { 0, 255 };
|
||||
|
||||
@@ -14,6 +14,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// LOG_TAG is being provided by the Makefile, reset.
|
||||
#ifdef LOG_TAG
|
||||
#undef LOG_TAG
|
||||
#endif
|
||||
#define LOG_TAG "Interpolator"
|
||||
|
||||
#include "Interpolator.h"
|
||||
|
||||
@@ -80,8 +80,10 @@ int LayerCache::LayerEntry::compare(const LayerCache::LayerEntry& lhs,
|
||||
|
||||
void LayerCache::deleteLayer(Layer* layer) {
|
||||
if (layer) {
|
||||
LAYER_LOGD("Destroying layer %dx%d, fbo %d", layer->getWidth(), layer->getHeight(),
|
||||
layer->getFbo());
|
||||
if (kDebugLayers) {
|
||||
ALOGD("Destroying layer %dx%d, fbo %d", layer->getWidth(), layer->getHeight(),
|
||||
layer->getFbo());
|
||||
}
|
||||
mSize -= layer->getWidth() * layer->getHeight() * 4;
|
||||
layer->state = Layer::kState_DeletedFromCache;
|
||||
Caches::getInstance().resourceCache.decrementRefcount(layer);
|
||||
@@ -110,9 +112,13 @@ Layer* LayerCache::get(RenderState& renderState, const uint32_t width, const uin
|
||||
layer->state = Layer::kState_RemovedFromCache;
|
||||
mSize -= layer->getWidth() * layer->getHeight() * 4;
|
||||
|
||||
LAYER_LOGD("Reusing layer %dx%d", layer->getWidth(), layer->getHeight());
|
||||
if (kDebugLayers) {
|
||||
ALOGD("Reusing layer %dx%d", layer->getWidth(), layer->getHeight());
|
||||
}
|
||||
} else {
|
||||
LAYER_LOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight);
|
||||
if (kDebugLayers) {
|
||||
ALOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight);
|
||||
}
|
||||
|
||||
layer = new Layer(Layer::kType_DisplayList, renderState, entry.mWidth, entry.mHeight);
|
||||
layer->setBlend(true);
|
||||
@@ -137,7 +143,9 @@ void LayerCache::dump() {
|
||||
size_t size = mCache.size();
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
const LayerEntry& entry = mCache.itemAt(i);
|
||||
LAYER_LOGD(" Layer size %dx%d", entry.mWidth, entry.mHeight);
|
||||
if (kDebugLayers) {
|
||||
ALOGD(" Layer size %dx%d", entry.mWidth, entry.mHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,8 +165,10 @@ bool LayerCache::put(Layer* layer) {
|
||||
deleteLayer(victim);
|
||||
mCache.removeAt(position);
|
||||
|
||||
LAYER_LOGD(" Deleting layer %.2fx%.2f", victim->layer.getWidth(),
|
||||
victim->layer.getHeight());
|
||||
if (kDebugLayers) {
|
||||
ALOGD(" Deleting layer %.2fx%.2f", victim->layer.getWidth(),
|
||||
victim->layer.getHeight());
|
||||
}
|
||||
}
|
||||
|
||||
layer->cancelDefer();
|
||||
|
||||
@@ -26,15 +26,11 @@ namespace uirenderer {
|
||||
|
||||
class RenderState;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Defines
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Debug
|
||||
#if DEBUG_LAYERS
|
||||
#define LAYER_LOGD(...) ALOGD(__VA_ARGS__)
|
||||
static const bool kDebugLayers = true;
|
||||
#else
|
||||
#define LAYER_LOGD(...)
|
||||
static const bool kDebugLayers = false;
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -473,8 +473,6 @@ bool OpenGLRenderer::updateLayer(Layer* layer, bool inFrame) {
|
||||
&& layer->renderNode.get() && layer->renderNode->isRenderable()) {
|
||||
ATRACE_CALL();
|
||||
|
||||
Rect& dirty = layer->dirtyRect;
|
||||
|
||||
if (inFrame) {
|
||||
endTiling();
|
||||
debugOverdraw(false, false);
|
||||
@@ -779,8 +777,10 @@ int OpenGLRenderer::saveLayerDeferred(float left, float top, float right, float
|
||||
*/
|
||||
bool OpenGLRenderer::createLayer(float left, float top, float right, float bottom,
|
||||
const SkPaint* paint, int flags, const SkPath* convexMask) {
|
||||
LAYER_LOGD("Requesting layer %.2fx%.2f", right - left, bottom - top);
|
||||
LAYER_LOGD("Layer cache size = %d", mCaches.layerCache.getSize());
|
||||
if (kDebugLayers) {
|
||||
ALOGD("Requesting layer %.2fx%.2f", right - left, bottom - top);
|
||||
ALOGD("Layer cache size = %d", mCaches.layerCache.getSize());
|
||||
}
|
||||
|
||||
const bool fboLayer = flags & SkCanvas::kClipToLayer_SaveFlag;
|
||||
|
||||
@@ -955,7 +955,9 @@ void OpenGLRenderer::composeLayer(const Snapshot& removed, const Snapshot& resto
|
||||
// Failing to add the layer to the cache should happen only if the layer is too large
|
||||
layer->setConvexMask(NULL);
|
||||
if (!mCaches.layerCache.put(layer)) {
|
||||
LAYER_LOGD("Deleting layer");
|
||||
if (kDebugLayers) {
|
||||
ALOGD("Deleting layer");
|
||||
}
|
||||
Caches::getInstance().resourceCache.decrementRefcount(layer);
|
||||
}
|
||||
}
|
||||
@@ -1984,8 +1986,6 @@ status_t OpenGLRenderer::drawRenderNode(RenderNode* renderNode, Rect& dirty, int
|
||||
}
|
||||
|
||||
void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, const SkPaint* paint) {
|
||||
int color = paint != NULL ? paint->getColor() : 0;
|
||||
|
||||
float x = left;
|
||||
float y = top;
|
||||
|
||||
@@ -2407,7 +2407,7 @@ status_t OpenGLRenderer::drawVertexBuffer(float translateX, float translateY,
|
||||
setupDrawShaderUniforms(getShader(paint));
|
||||
|
||||
const void* vertices = vertexBuffer.getBuffer();
|
||||
bool force = mCaches.unbindMeshBuffer();
|
||||
mCaches.unbindMeshBuffer();
|
||||
mCaches.bindPositionVertexPointer(true, vertices, isAA ? gAlphaVertexStride : gVertexStride);
|
||||
mCaches.resetTexCoordsVertexPointer();
|
||||
|
||||
@@ -3182,14 +3182,6 @@ status_t OpenGLRenderer::drawRects(const float* rects, int count, const SkPaint*
|
||||
return drawColorRects(rects, count, paint, false, true, true);
|
||||
}
|
||||
|
||||
static void mapPointFakeZ(Vector3& point, const mat4& transformXY, const mat4& transformZ) {
|
||||
// map z coordinate with true 3d matrix
|
||||
point.z = transformZ.mapZ(point);
|
||||
|
||||
// map x,y coordinates with draw/Skia matrix
|
||||
transformXY.mapPoint(point.x, point.y);
|
||||
}
|
||||
|
||||
status_t OpenGLRenderer::drawShadow(float casterAlpha,
|
||||
const VertexBuffer* ambientShadowVertexBuffer, const VertexBuffer* spotShadowVertexBuffer) {
|
||||
if (currentSnapshot()->isIgnored()) return DrawGlInfo::kStatusDone;
|
||||
|
||||
@@ -212,7 +212,7 @@ void PathCache::removeTexture(PathTexture* texture) {
|
||||
// before attempting our cleanup
|
||||
const sp<Task<SkBitmap*> >& task = texture->task();
|
||||
if (task != NULL) {
|
||||
SkBitmap* bitmap = task->getResult();
|
||||
task->getResult();
|
||||
texture->clearTask();
|
||||
} else {
|
||||
// If there is a pending task, the path was not added
|
||||
|
||||
@@ -279,7 +279,6 @@ void getStrokeVerticesFromUnclosedVertices(const PaintInfo& paintInfo,
|
||||
- (vertices[lastIndex].x - vertices[lastIndex - 1].x),
|
||||
vertices[lastIndex].y - vertices[lastIndex - 1].y);
|
||||
const float dTheta = PI / (extra + 1);
|
||||
const float radialScale = 2.0f / (1 + cos(dTheta));
|
||||
|
||||
int capOffset;
|
||||
for (int i = 0; i < extra; i++) {
|
||||
@@ -831,7 +830,6 @@ void PathTessellator::tessellatePoints(const float* points, int count, const SkP
|
||||
|
||||
Rect bounds;
|
||||
// tessellate, then duplicate outline across points
|
||||
int numPoints = count / 2;
|
||||
VertexBuffer tempBuffer;
|
||||
if (!paintInfo.isAA) {
|
||||
getFillVerticesFromPerimeter(outlineVertices, tempBuffer);
|
||||
|
||||
@@ -244,7 +244,7 @@ enum DebugLevel {
|
||||
// Converts a number of kilo-bytes into bytes
|
||||
#define KB(s) s * 1024
|
||||
|
||||
static DebugLevel readDebugLevel() {
|
||||
static inline DebugLevel readDebugLevel() {
|
||||
char property[PROPERTY_VALUE_MAX];
|
||||
if (property_get(PROPERTY_DEBUG, property, NULL) > 0) {
|
||||
return (DebugLevel) atoi(property);
|
||||
|
||||
@@ -736,7 +736,6 @@ void RenderNode::issueOperationsOf3dChildren(ChildrenSelectMode mode,
|
||||
int restoreTo = renderer.save(SkCanvas::kMatrix_SaveFlag);
|
||||
|
||||
DrawRenderNodeOp* childOp = zTranslatedNodes[drawIndex].value;
|
||||
RenderNode* child = childOp->mRenderNode;
|
||||
|
||||
renderer.concatMatrix(childOp->mTransformFromParent);
|
||||
childOp->mSkipInOrderDraw = false; // this is horrible, I'm so sorry everyone
|
||||
@@ -885,7 +884,7 @@ void RenderNode::issueOperations(OpenGLRenderer& renderer, T& handler) {
|
||||
initialTransform, zTranslatedNodes, renderer, handler);
|
||||
|
||||
|
||||
for (int opIndex = chunk.beginOpIndex; opIndex < chunk.endOpIndex; opIndex++) {
|
||||
for (size_t opIndex = chunk.beginOpIndex; opIndex < chunk.endOpIndex; opIndex++) {
|
||||
DisplayListOp *op = mDisplayListData->displayListOps[opIndex];
|
||||
#if DEBUG_DISPLAY_LIST
|
||||
op->output(level + 1);
|
||||
@@ -893,7 +892,8 @@ void RenderNode::issueOperations(OpenGLRenderer& renderer, T& handler) {
|
||||
logBuffer.writeCommand(level, op->name());
|
||||
handler(op, saveCountOffset, properties().getClipToBounds());
|
||||
|
||||
if (CC_UNLIKELY(!mProjectedNodes.isEmpty() && opIndex == projectionReceiveIndex)) {
|
||||
if (CC_UNLIKELY(!mProjectedNodes.isEmpty() && projectionReceiveIndex >= 0 &&
|
||||
opIndex == static_cast<size_t>(projectionReceiveIndex))) {
|
||||
issueOperationsOfProjectedChildren(renderer, handler);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,6 @@ void ShadowTessellator::tessellateSpotShadow(bool isCasterOpaque,
|
||||
reverseReceiverTransform.loadInverse(receiverTransform);
|
||||
reverseReceiverTransform.mapPoint3d(adjustedLightCenter);
|
||||
|
||||
const int lightVertexCount = 8;
|
||||
if (CC_UNLIKELY(caches.propertyLightDiameter > 0)) {
|
||||
lightRadius = caches.propertyLightDiameter;
|
||||
}
|
||||
|
||||
@@ -378,7 +378,7 @@ void Font::precache(const SkPaint* paint, const char* text, int numGlyphs) {
|
||||
break;
|
||||
}
|
||||
|
||||
CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph, true);
|
||||
getCachedGlyph(paint, glyph, true);
|
||||
glyphsCount++;
|
||||
}
|
||||
}
|
||||
@@ -403,8 +403,6 @@ void Font::render(const SkPaint* paint, const char* text, uint32_t start, uint32
|
||||
text += start;
|
||||
int glyphsCount = 0;
|
||||
|
||||
const SkPaint::Align align = paint->getTextAlign();
|
||||
|
||||
while (glyphsCount < numGlyphs) {
|
||||
glyph_t glyph = GET_GLYPH(text);
|
||||
|
||||
|
||||
@@ -30,9 +30,12 @@
|
||||
#define DEFAULT_TEXT_LARGE_CACHE_WIDTH 2048
|
||||
#define DEFAULT_TEXT_LARGE_CACHE_HEIGHT 512
|
||||
|
||||
#define TEXTURE_BORDER_SIZE 1
|
||||
#if TEXTURE_BORDER_SIZE != 1
|
||||
# error TEXTURE_BORDER_SIZE other than 1 is not currently supported
|
||||
#ifdef TEXTURE_BORDER_SIZE
|
||||
#if TEXTURE_BORDER_SIZE != 1
|
||||
#error TEXTURE_BORDER_SIZE other than 1 is not currently supported
|
||||
#endif
|
||||
#else
|
||||
#define TEXTURE_BORDER_SIZE 1
|
||||
#endif
|
||||
|
||||
#define CACHE_BLOCK_ROUNDING_SIZE 4
|
||||
@@ -44,7 +47,7 @@
|
||||
#define GET_GLYPH(text) nextGlyph((const uint16_t**) &text)
|
||||
#define IS_END_OF_STRING(glyph) false
|
||||
|
||||
static glyph_t nextGlyph(const uint16_t** srcPtr) {
|
||||
static inline glyph_t nextGlyph(const uint16_t** srcPtr) {
|
||||
const uint16_t* src = *srcPtr;
|
||||
glyph_t g = *src++;
|
||||
*srcPtr = src;
|
||||
|
||||
@@ -349,8 +349,12 @@ CREATE_BRIDGE0(fence) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void UNUSED(T t) {}
|
||||
|
||||
void RenderProxy::fence() {
|
||||
SETUP_TASK(fence);
|
||||
UNUSED(args);
|
||||
postAndWait(task);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// LOG_TAG is being provided by the Makefile, reset.
|
||||
#ifdef LOG_TAG
|
||||
#undef LOG_TAG
|
||||
#endif
|
||||
#define LOG_TAG "RenderTask"
|
||||
|
||||
#include "RenderTask.h"
|
||||
|
||||
Reference in New Issue
Block a user