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
This adds the ability to blend with the framebuffer using Darken,
Lighten, Add, Multiply, Overlay and Screen.
Change-Id: Iae01a53797d4ad39c373cba6ff2a42293129da1a
Bug #2988077
This change keeps the 8888 format for new bitmaps and also keeps,
when possible, the opaque flag.
Change-Id: Ia61f2e89936916b329212a4c59a7d815c329f84e
Prior to this change layers would clip their content incorrectly. They would
also not apply alpha properly.
Change-Id: Id7b3aaa7dbdc51de68fe050e64458f68e40503fd
When an app tries to render a bitmap or path larger than the GPU's maximum
texture size, the drawing command is ignored and a warning is logged. This
change also makes texture drawing more robust by catching potential errors
during texture creation.
This change also fixes a crash in the FontRenderer. The destructor would
sometimes try to free an uninitialized array.
Change-Id: I95ae0939c52192d97b340aa02417bf6d0c962c57
Rendering is implementing by rasterizing the paths into A8 textures.
This cna be extremely inefficient if the path changes often.
Change-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a
With this change, Skia shaders can easily be applied to any mesh. This change also
supports ComposeShader. For instance, this can be used to blend a gradient and a
bitmap togehter and paint a string of text with the result.
Change-Id: I701c2f9cf7f89b2ff58005e8a1d0d80ccf4a4aea
This changes binds all textures to GL_TEXTURE0, this will have
to be changed when combining shader capabilities.
Change-Id: I02df4f5ba41e9b01ffa52fd7c26b41477c7ed18f
The generator supports features that are not yet implement in the
renderer: color matrix, lighting, porterduff color blending and
composite shaders.
This change also adds support for repeated/mirrored non-power of 2
bitmap shaders.
Change-Id: I903a11a070c0eb9cc8850a60ef305751e5b47234
With this change, all the vertex and fragment shaders used by the GL
renderer are now generated based on a program description supplied
by the caller. This allows the renderer to generate a large number
of shaders without having to write all the possible combinations by
hand. The generated shaders are stored in a program cache.
Change-Id: If54d286e77ae021c724d42090da476df12a18ebb
This change adds a new DrawLinearGradientProgram class to enable the drawing
of linear gradients. Two new vertex and fragment shaders are introduced,
based on DrawTextureProgram's shaders.
Change-Id: I885afc076bb6cef8cd3962ae21a086fa6a03bf96
The LinearGradient class keeps a copy of the various parameters that
define the gradient. The copies are native arrays to avoid copying
Java arrays on every draw call. The gradient code path is implemented
until OpenGLRenderer::drawRect() (see TODO.) The actual gradient
implementation will be added in a latter change.
Change-Id: I9300d250ef5e2e9c2e097c3116ee71dfc9d752d8
The renderer is still changing textures' wrap modes every time, this will require
a latter optimization.
Change-Id: I3eb92cb8c886c4a692b7f0ca759911f9371d4d2c
This change also modifies the way the clip is stored. The clip is now
always stored in screen-space coordinates.
Change-Id: I96375784d82dfe975bc6477a159e6866e7052487