| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change uses a new OpenGL ES 3.0 feature to upload less data when
the font cache needs to be update. This can result in significant
performance improvements on device with large textures or with locales
that use a lot of glyphs (CJK for instance.)
This change also fixes various unpack alignment issues. The unpack
alignment, as well as the unpack row length, is not texture specific
but a global state that affect all glTex/SubImage2D calls. Some of
them were missing the appropriate glPixelStorei() call. This could
result in corrupted textures.
Change-Id: Iefb429d4d0d0b4e0faeadf27daafee6d30a21d85
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
bug:8540150
Layers now require traversal in update order, as it will be child
first, then parent for layer-in-layer
Fixes issue with deferred layer playback not flushing in order, and
thus child not painting before parent
Also fixes DisplayList to only be cleared after flush in deferred list
Change-Id: I2f284d00079cdb20798aeef6a1c94e823940db40
|
|\ \ \
| |/ /
|/| /
| |/ |
|
| |
| |
| |
| | |
Change-Id: Idc02efc237b8e97445a9bab05c291bf193c7f279
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
bug:8480642
With the additional save/restore around the operations in flush, the
stored restore batches weren't matching up to the correct saves.
Change-Id: I2f48f19009bd97289b6973283f43dc8d3e35affd
|
|\ \ |
|
| |/
| |
| |
| |
| | |
bug:8531373
Change-Id: I35444014f23fc61da687694fccc0d13bce718793
|
|/
|
|
|
|
|
|
|
|
|
|
| |
bug:8501661
Makes the performance issues and interaction with layer type/paint
more clear.
Additionally, corrects change from 47ab7d6612e2b5b8b66fb261dafef7c91264e173
to still allow displayList alpha to override layer paint
Change-Id: Ic94d75865700820489370461cd8ac9f9077a8d90
|
|
|
|
|
|
| |
Bug #8504687
Change-Id: I9b01bbc4e3f37af23dfe5e68d3d03ad3d238b94a
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug #8489505
A layer should be updated even with an empty deferred display list. It is
possible for a layer to request an update just to execute a clear which
will be handled by LayerRenderer::prepareDirty().
Change-Id: Iffb98bd71d6caa8d4a701df98197676f9423c0c2
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
[Take 2]"
* commit '3ae30483777708ff3a4f59a4fa75c6a76213cc30':
Correct executable bit for source files [Take 2]
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Change Ieb51bafb46c895a21d2e83696f5a901ba752b2c5 left out some
files, this fixes them.
Change-Id: Ia949a8581668836ea0251602e048f09c852f5169
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
bug:8464795
Changes drawModifiers and alpha to be restored for all operations,
since saveLayer/restore use these values, not just draw operations
Also forces a renderer state restoration before a deferred restore op
is played back, in case it is associated with a saveLayer that
doesn't have the save_clip flag set
Change-Id: I9da5d44fefbfffdee164c98f4f139843dacf85df
|
|\ \ \ \
| |/ / /
|/| | /
| | |/
| |/| |
#8437401" into jb-mr2-dev
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Bug #8437401
A misplaced ref count decrement was causing a crash when attempting to
resize a layer to dimensions larger than the max texture size supported
by the GPU.
This change fixes the crash and clarifies the warnings to make it more
obvious what's happening.
Change-Id: I632dc1b90aaa2605969e10523491a81c4922d3dc
|
|\ \ \
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
bug:8471552
Additionally, add ignore check for draw functor
In deferred mode, if we don't set ignore, a 0 alpha displayList won't
be quickRejected, and not only would its contents be needlessly
deferred, but upon playback any functors would be drawn, ignoring the
state of the snapshot.
Change-Id: Ib1edb3252080f674254086edee6f965f0efcce78
|
| | |
| | |
| | |
| | |
| | |
| | | |
Bug #8478275
Change-Id: Ib541ea051e42e01cc0d277790e9c09de38ef72ee
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug #8378964
This change defers drawing into layers until after the renderer for FBO0
is ready to draw. At that point, all the precaching is done which means
all glyphs can be uploaded at once in the font caches.
Change-Id: Ie1f7a7ff30f76f06fb3dbc72c7d05e66207d1ecb
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
bug:8450062
- Fixes overdraw indication with DeferredDisplayList
- Fixes drawHardwareLayer called after flush
Additionally changes drawLayer to pass its paint to native via setLayerPaint
Wrap flush in save/restore so that reordering doesn't affect final
transform
Change-Id: I08befa42c28500da6387699eefd4be28aedf9f4c
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
bug:8409891
Snapshots frequently have their clip overwritten due to applying
deferred state - now, store tiling clip information in a separate
rect, outside of the snapshot so it isn't overwritten.
Change-Id: I21ca4c45dcd802eae99e8de86f11525196777ccb
|
|/ /
| |
| |
| | |
Change-Id: I6fe7e31aeb6dd41fa65ab952caed97bc2da510d7
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Only performs the GL setup steps when at least one glyph is drawn.
This change also skips various draw operations when the specified
paint draws with alpha = 0.
Change-Id: I9eda148b0503acffc552ee19196f5d52e958a1a2
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | | |
Change-Id: Icc093390da2fc36b2b6693d0e5e4357b2f730bf9
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
bug:8409891
In order to defer fbo-targetting saveLayer operations, it's necessary
to update the snapshot at defer time so that deferred display state
(namely, clip and transform) are fbo relative.
Re-enables deferring, as the issues with saveLayer are fixed.
Change-Id: I74b0779bc732675c747208f0757c3ea85f6dfbed
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Removes mMultipliedAlpha, using the snapshot alpha for all
non-overlapping display list alpha control.
Additionally, fixes opacity issues where children of
hasOverlappingRendering=false displaylists (both hw layer sublists and
other sublists with hasOverlappingRendering=false)
Change-Id: I6adc16da855835f9f518f8967628e5d0135c789b
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This change moves the mesh buffer from FontRenderer to CacheTexture
to help reduce the number of texture binds and glDraw calls when
drawing text that spans across multiple textures.
Change-Id: I7de574d88313ca3672879ca878c253ff5f131fc1
|
|\ \ \ \
| |/ / / |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When several CacheTextures are used to draw text, sort the
draw batches by texture ID to minimize state changes in the
driver.
This change also tweaks the font cache size and renames
a property that was too long to be set using setprop.
Change-Id: I0a36dfffe58c9e75dd7384592d3343c192d042b1
|
|\ \ \ \
| |/ / / |
|
| | | |
| | | |
| | | |
| | | | |
Change-Id: Idf9b8e7d7b30f8fcd8ba1fd4bfe8991e9ca148e2
|
|\ \ \ \
| |/ / / |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This change will greatly simplify the multi-threading of all
shape types.
This change also uses PathTessellator to render convex paths.
Change-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
bug:8409891
Disables deferring
Change-Id: I93498a4a45a5bfe01143faa154926c6a138db8f9
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
bug:8401910
This avoids leaving the renderer in a state with stale pointers (to,
e.g., shaders or color filters)
Change-Id: Idf8b63657041352e70e34e91ea416fe4385d4bc2
|
|\ \ \
| |/ / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
bug:8037003
A recursive drawDisplayList call is now entirely deferred before
playing back to the screen and issuing GL commands. This way, the
entire stream can be inspected, optimized, and batch work (such as
uploading textures) before issuing commands.
Additionally, this fixes an issue where operations draw could move
across restores corresponding to saveLayer(alpha). Those and other
similar cases (such as complex clipping, requiring the stencil) are
now treated as batching barriers, with the operations that change
renderer state in a way that's difficult to defer are just re-issued
at flush time.
Change-Id: Ie7348166662a5ad89fb9b1e87558334fb826b01e
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The renderer used to pre-cache glyphs at record time. This then changed
to pre-caching at the beginning of every frame. This unfortunately entails
a lot of duplicate work on every frame, which amounts to 0.5 to 1ms in
some stock applications.
This change is somewhere in the middle: pre-caching happens the first
time a DrawTextOp is deferred or every time the screen-space transform
is different from the last pre-caching operation.
Change-Id: Id6d9e2599d90a5b75010b0f0a28746befbf3c205
|
|/ /
| |
| |
| | |
Change-Id: I04b5fa498336068f997c68d8613b35a99f67adbe
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This API can be used to run arbitrary tasks on a pool of worker
threads. The number of threads is calculated based on the number
of CPU cores available.
The API is made of 3 classes:
TaskManager
Creates and manages the worker threads.
Task
Describes the work to be done and the type of the output.
A task contains a future used to wait for the worker thread
to be done computing the result of the task.
TaskProcessor
The processor dispatches tasks to the TaskManager and is
responsible for performing the computation required by
each task. A processor will only be asked to process tasks
sent to the manager through the processor.
A typical use case:
class MyTask: Task<MyType>
class MyProcessor: TaskProcessor<MyType>
TaskManager m = new TaskManager();
MyProcessor p = new MyProcessor(m);
MyTask t = new MyTask();
p.add(t);
// Waits until the result is available
MyType result = t->getResult();
Change-Id: I1fe845ba4c49bb0e1b0627ab147f9a861c8e0749
|