drawColor() was not calling quickReject because it fills the clip region
and thus always passes the test. However, quickReject also checks whether
the current layer is invisible. drawColor() now performs the same check
and avoid drawing inside an invisible layer.
Change-Id: I63d0e9a8a9c0fba774f0f5c3870d58e6ed96fbd1
This optimization is currently disabled until Launcher is
modified to take advantage of it. The optimization can be
enabled by turning on RENDER_LAYERS_AS_REGIONS in the
OpenGLRenderer.h file.
Change-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1
This change batches calls to glScissor() and removes extra GL
queries and glActiveTexture() calls.
Change-Id: I1cd079d314f87cd9c088f95c8d4909c2f860f6aa
A change was made earlier in the renderer to not snap the current clip rect
on every clip operation. The clip rect must not be snapped to pixel boundaries
before being used for pixel precision operations. Some operations were doing
this correctly, others were not. For instance, a layer was always created by
rounding to the correct pixels, but composing a layer was done with a non
rounded clip, thus resulting in slightly odd behaviors.
Change-Id: I31c2cf0a343450470bcd449c3f13fe37648b9c7c
The local clip rect could be off by one pixel when a 3D transform
was applied to a text primitive. This would cause small rendering
glitches in Launcher in particular.
Change-Id: I1254f6a5838c26810cbe969b096679d40b8dd504
Don't clear the entire texture when we use textures that are bigger
than the layer itself. This will save time during the glClear() calls.
Change-Id: I06f3259ba62affb3708ba69ea41418832c7e1a65
This change detects empty quads in 9patches and removes them from
the mesh to avoid unnecessary blending.
Change-Id: I4500566fb4cb6845d64dcb59b522c0be7a0ec704
This change is a workaround for a driver bug that causes an INVALID_OPERATION
to be thrown on every glCopyTexSubImage() call. This change also adds a new
test for gradients local matrices.
Change-Id: I41b7437481026702d0a3a9677f099b4557c0a84e
Add a glGetError() check on every frame
Don't attempt to create textures larger than the maximum size allowed
Change-Id: Iee4afae16089406dbe8bf10fc93b674f1271a0ca
The implementation is simple but tricky. Leave explanations to my
future self so that I don't invent a time machine to come back to
now and slap my self.
This change also simplifies the way the GL blending function is
chosen when compositing a layer. It reuses existing OpenGLRenderer
APIs and is easier to understand.
Change-Id: I1b9cf8c5d51e09836d85b8cf157a1c284aa65c59