270 Commits

Author SHA1 Message Date
Romain Guy
e45362cad9 Fix rendering bug with saveLayerAlpha/drawColor.
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
2010-11-03 19:58:32 -07:00
Romain Guy
5ec9924d24 Fix rendering issue with layers.
Change-Id: I1d511ab2707000762a942d32c300a9944ab38603
2010-11-03 16:19:08 -07:00
Romain Guy
5b3b35296e Optimize FBO drawing with regions.
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
2010-11-02 16:17:23 -07:00
Romain Guy
746b7401ce Remove unnecessary GL calls.
This change batches calls to glScissor() and removes extra GL
queries and glActiveTexture() calls.

Change-Id: I1cd079d314f87cd9c088f95c8d4909c2f860f6aa
2010-10-26 16:27:31 -07:00
Romain Guy
3e3ba155fc Don't change texture unit when not needed.
Change-Id: Ifa84426d234f2122402cb13533cb5964f1ce95ec
2010-10-25 18:33:16 -07:00
Romain Guy
8164c2d338 Don't change textures wrap modes on every draw.
Change-Id: If6d3f313778cc7f3e803a063338539c8b3e165e3
2010-10-25 18:03:28 -07:00
Romain Guy
ae88e5e8e9 Fix rendering issue with layers.
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
2010-10-22 17:49:18 -07:00
Romain Guy
58ae6db4ff Don't use two different variables to refer to mSnapshot.
Change-Id: Ie4a0616d2fe0b040ac14b734a9ddf77bf1f35b0c
2010-10-22 11:16:37 -07:00
Romain Guy
ae517591d9 Don't perform glCopyTextImage with coordinates outside the buffer.
Bug #3122179

Change-Id: I91ed397e9e553a8eeb69d82d0c5b1e49a3cdd5ff
2010-10-22 10:40:27 -07:00
Chet Haase
5c13d89c13 Optimizing display lists by referencing pointers to resources instead of copying them
Change-Id: I81ad3551d74aa1e5bb64d69e33d2eb29a6c1eb6a
2010-10-21 12:02:42 -07:00
Romain Guy
50c0f093d9 Solve rendering issue with embedded WebViews.
Bug #3094017

The blending mode was not appropriately set after WebView released the
context.

Change-Id: Ib36d48e82c12f6d131dd5a0bcde9106925b8da63
2010-10-19 11:42:22 -07:00
Romain Guy
03750a067e Use VBOs to render most geometries.
Change-Id: I4360dc4fe5693ab425450c107282b2c22db4dca7
2010-10-18 14:49:19 -07:00
Romain Guy
054dc18409 Don't draw entirely transparent 9patch meshes.
Change-Id: If3e62e18b8e0dbde8a22f8ede2889b86500a4dc2
2010-10-15 17:55:25 -07:00
Romain Guy
9d13fe25f4 Fix text rendering artifact.
Change-Id: I50f47207846e4208d363dde4e8f5f1a0f23d2d75
2010-10-15 16:06:03 -07:00
Romain Guy
e5ebcb0107 Fix clipping issue in StackView.
Change-Id: I7ec28f25c3993a2bd7ef6399ba1923839d239905
2010-10-15 13:57:28 -07:00
Romain Guy
d2a1ff003b Fix text rendering issue.
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
2010-10-14 14:49:34 -07:00
Romain Guy
93d2361c6d Fix layer rendering glitch.
Change-Id: If2f987fe5526fc88743ca3e91edde4f8232ff658
2010-10-13 18:26:36 -07:00
Romain Guy
909cbaf8f9 Don't draw TextView's alpha layers when not needed.
Change-Id: Iedf42cbc62d727f18500c78fcccf2d081a761fec
2010-10-13 18:19:48 -07:00
Romain Guy
99bcdc52dc Return identity matrix when rendering in an FBO.
Change-Id: I57438e745b30c8cfe16c269f3cafcd719049d705
2010-10-13 17:24:41 -07:00
Romain Guy
41030da168 Add a getNativeMatrix() API.
This API can be used by WebView to apply the appropriate transform
on its rendering.

Change-Id: I79aa39a29805f462fb08226370328815e74bdc52
2010-10-13 13:40:37 -07:00
Romain Guy
eb07af6873 Optimize layer clears.
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
2010-10-12 18:40:36 -07:00
Romain Guy
e91080581f Tweak layers caching for better performance in Launcher.
Change-Id: Ia6e67699d98f69c8a93385b3ecbdd814c7b16921
2010-10-12 18:15:42 -07:00
Romain Guy
4bb942083a Optimize 9patch rendering.
This change detects empty quads in 9patches and removes them from
the mesh to avoid unnecessary blending.

Change-Id: I4500566fb4cb6845d64dcb59b522c0be7a0ec704
2010-10-12 15:59:26 -07:00
Romain Guy
c00972bb16 Don't recreate a new texture every time we draw a layer.
Change-Id: I3c28aff5acffc7c6f1ac74805869725426c62d28
2010-10-12 11:31:07 -07:00
Romain Guy
dbc26d2ba1 Don't draw fully transparent views/primitives.
Change-Id: Icd7d8ef1f57b51a24faf32f7004125e6300d4fdc
2010-10-11 17:58:29 -07:00
Romain Guy
707b2f78cc Optimize GLSL shaders.
Change-Id: I9a5e01bced63d8da0c61330a543a2b805388a59d
2010-10-11 16:34:59 -07:00
Romain Guy
2728f96161 Don't update 9patches on every frame.
Change-Id: I7ffb2365f83e0453e7d0a0cdcb3fc9308b305238
2010-10-08 18:36:57 -07:00
Romain Guy
8550c4c7b5 Better cache for layers, reduce memory usage and increase framerate.
Change-Id: I5ff864a361db4791bd5ff6be716f7ce692ef572d
2010-10-08 15:49:53 -07:00
Romain Guy
6b7bd24659 Don't clear the framebuffer when not needed. 2010-10-06 19:49:23 -07:00
Romain Guy
eb99356a05 Optimize saveLayer() when the clip flag is set.
This speeds up applications, especially Launcher.
2010-10-05 18:14:38 -07:00
Romain Guy
bdb801ca99 Remove logs to reduce logcat spam.
Change-Id: I5fc295b05b5d82bb86827b88e94dd51e8bcdc7d3
2010-10-04 17:22:29 -07:00
Romain Guy
e8cb9c1430 Apply bilinear filtering on text only when necessary.
Change-Id: Ic903f4b5d30e9c92528c6291941896efe4729ee3
2010-10-04 14:14:11 -07:00
Romain Guy
0bb5667b4e Fix INVALID_OPERATION error with layers rendering.
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
2010-10-01 00:25:02 -07:00
Romain Guy
4aa90573bb Adding display lists to the GL renderer (checkpoint.)
Change-Id: Iaa49757600a53b39369dbb23f8c3feab282518e6
2010-09-26 18:40:37 -07:00
Romain Guy
e2d345ea67 Add debug mode to measure performance.
Change-Id: I9d4c84034dc200b99c8266165942a7cdbcb5c0c5
2010-09-24 18:39:22 -07:00
Romain Guy
38c85b907a Correctly initialize/refresh layers.
Change-Id: Id8cdcf587b13098460f7d4aa1bd17708784d89bb
2010-09-22 22:51:12 -07:00
Romain Guy
e20ecbd12d Draw text decorations with lines instead of rectangles.
Change-Id: Icd25c85c3a24da96a3d2f76f9477da6f87e0303c
2010-09-22 19:49:04 -07:00
Romain Guy
29d8997bd4 Fix OpenGL errors in various places.
Change-Id: I3a4e115d8fb13b6c443e65460d92987b16f2524c
2010-09-22 16:44:49 -07:00
Romain Guy
b5ab4173e0 Fix positioning of 1 pixel wide lines (esp. non AA lines.)
Change-Id: Ic155cac72f351edae35dffdfbb236954f57ba7de
2010-09-17 15:36:56 -07:00
Romain Guy
c95c8d6bf8 Add support for non AA lines.
Change-Id: Id5200e94815404d62760437d0d2dbb0a9276c700
2010-09-17 15:31:32 -07:00
Romain Guy
759ea80dca Add support for drawLines(), with anti-aliasing
Change-Id: I16c0593c5671490909dec13a85df601e1428a1a6
2010-09-16 20:49:46 -07:00
Romain Guy
bf434114cb Snap layer bounds to pixel boundaries.
Change-Id: I272ceebf469a119f01ea9d73cdd68519afdffa99
2010-09-16 14:40:17 -07:00
Romain Guy
b025b9c8b4 Better error handling in the OpenGL renderer.
Add a glGetError() check on every frame
Don't attempt to create textures larger than the maximum size allowed

Change-Id: Iee4afae16089406dbe8bf10fc93b674f1271a0ca
2010-09-16 14:16:48 -07:00
Romain Guy
6820ac8b14 Fix 9patch rendering.
Change-Id: Ic4c18ff483cca95fbabcb10843f7714efe488adb
2010-09-15 18:11:50 -07:00
Romain Guy
87a76578f7 Docs updates.
Change-Id: Iff395e1c6d81a484a2c4ad6e88357c0134971b78
2010-09-13 18:13:52 -07:00
Romain Guy
1c740bce8a Document the implementation of saveLayer().
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
2010-09-13 18:03:21 -07:00
Romain Guy
81ab046a11 Forgot the return value...
Change-Id: Iccf369a613c1cf83f3e948460c567291b084fad2
2010-09-13 17:32:34 -07:00
Romain Guy
8411f336c7 Fix rendering issue with layers intersecting the clip rect.
Change-Id: Icbe35194fa219ef13ce639d33631235f8d7df3d7
2010-09-13 17:27:57 -07:00
Romain Guy
2bffd268f1 Fix text rendering issue with text scaling.
Change-Id: I1f3ae40025697e8f8ca0616ee6550fe215cadcc8
2010-09-12 17:59:13 -07:00
Romain Guy
8694230ff2 Optimize calls to glCopyTexImage2D().
Change-Id: I34ee87bd4472864f440916e03a2894fae24bbe4a
2010-09-12 13:02:16 -07:00