Merge "Optimize tiling management Bug #7186819" into jb-mr1-dev
This commit is contained in:
@@ -429,7 +429,7 @@ void Caches::resetScissor() {
|
|||||||
|
|
||||||
void Caches::startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool opaque) {
|
void Caches::startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool opaque) {
|
||||||
if (extensions.hasTiledRendering()) {
|
if (extensions.hasTiledRendering()) {
|
||||||
glStartTilingQCOM(x, y, width, height, GL_COLOR_BUFFER_BIT0_QCOM);
|
glStartTilingQCOM(x, y, width, height, opaque ? GL_NONE : GL_COLOR_BUFFER_BIT0_QCOM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ int OpenGLRenderer::prepareDirty(float left, float top, float right, float botto
|
|||||||
mSaveCount = 1;
|
mSaveCount = 1;
|
||||||
|
|
||||||
mSnapshot->setClip(left, top, right, bottom);
|
mSnapshot->setClip(left, top, right, bottom);
|
||||||
mDirtyClip = mOpaqueFrame = opaque;
|
mDirtyClip = opaque;
|
||||||
|
|
||||||
// If we know that we are going to redraw the entire framebuffer,
|
// If we know that we are going to redraw the entire framebuffer,
|
||||||
// perform a discard to let the driver know we don't need to preserve
|
// perform a discard to let the driver know we don't need to preserve
|
||||||
@@ -189,7 +189,7 @@ int OpenGLRenderer::prepareDirty(float left, float top, float right, float botto
|
|||||||
syncState();
|
syncState();
|
||||||
|
|
||||||
mTilingSnapshot = mSnapshot;
|
mTilingSnapshot = mSnapshot;
|
||||||
startTiling();
|
startTiling(mTilingSnapshot, true);
|
||||||
|
|
||||||
if (!opaque) {
|
if (!opaque) {
|
||||||
mCaches.enableScissor();
|
mCaches.enableScissor();
|
||||||
@@ -213,16 +213,9 @@ void OpenGLRenderer::syncState() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLRenderer::startTiling() {
|
void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) {
|
||||||
startTiling(mTilingSnapshot);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGLRenderer::startTiling(const sp<Snapshot>& s) {
|
|
||||||
bool opaque = mOpaqueFrame;
|
|
||||||
Rect* clip = mTilingSnapshot->clipRect;
|
Rect* clip = mTilingSnapshot->clipRect;
|
||||||
|
|
||||||
if (s->flags & Snapshot::kFlagIsFboLayer) {
|
if (s->flags & Snapshot::kFlagIsFboLayer) {
|
||||||
opaque = !s->layer->isBlend();
|
|
||||||
clip = s->clipRect;
|
clip = s->clipRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -351,8 +351,7 @@ private:
|
|||||||
* This method needs to be invoked every time getTargetFbo() is
|
* This method needs to be invoked every time getTargetFbo() is
|
||||||
* bound again.
|
* bound again.
|
||||||
*/
|
*/
|
||||||
void startTiling();
|
void startTiling(const sp<Snapshot>& snapshot, bool opaque = false);
|
||||||
void startTiling(const sp<Snapshot>& snapshot);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tells the GPU that we are done drawing the frame or that we
|
* Tells the GPU that we are done drawing the frame or that we
|
||||||
|
|||||||
@@ -45,10 +45,10 @@ public class MultiLayersActivity extends Activity {
|
|||||||
|
|
||||||
row1.addView(new LayerView(this, 0xffff0000), new LinearLayout.LayoutParams(
|
row1.addView(new LayerView(this, 0xffff0000), new LinearLayout.LayoutParams(
|
||||||
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
||||||
row1.addView(new LayerView(this, 0xff00ff00), new LinearLayout.LayoutParams(
|
row1.addView(new LayerView(this, 0x0f00ff00), new LinearLayout.LayoutParams(
|
||||||
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
||||||
|
|
||||||
row2.addView(new LayerView(this, 0xff0000ff), new LinearLayout.LayoutParams(
|
row2.addView(new LayerView(this, 0x0f0000ff), new LinearLayout.LayoutParams(
|
||||||
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
||||||
row2.addView(new LayerView(this, 0xffffff00), new LinearLayout.LayoutParams(
|
row2.addView(new LayerView(this, 0xffffff00), new LinearLayout.LayoutParams(
|
||||||
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
|
||||||
|
|||||||
Reference in New Issue
Block a user