summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHuan Song <huans@google.com>2021-05-03 18:34:34 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-05-03 18:34:34 +0000
commita7644be7a7bbd259cda7626b2bd281fef44a32da (patch)
tree979a3407aefee73102e9f0b4d10df819048ed2e5
parent4e606cc0751d82ea4fcf5c6fed36accfea6190e9 (diff)
parent0bbca883813283929d1332ac104e701669ac9ee8 (diff)
downloadvulkan-cereal-a7644be7a7bbd259cda7626b2bd281fef44a32da.tar.gz
Set correct glViewPort when composing secondary displays am: 4ece08ff1b am: ecff709a90 am: 0bbca88381
Original change: https://android-review.googlesource.com/c/device/generic/vulkan-cereal/+/1692656 Change-Id: Ie159b1a1b51a45307863375151f52d477651ee0b
-rw-r--r--stream-servers/PostWorker.cpp22
-rw-r--r--stream-servers/PostWorker.h2
2 files changed, 16 insertions, 8 deletions
diff --git a/stream-servers/PostWorker.cpp b/stream-servers/PostWorker.cpp
index 8f3f374f..9fffb57a 100644
--- a/stream-servers/PostWorker.cpp
+++ b/stream-servers/PostWorker.cpp
@@ -231,7 +231,7 @@ void PostWorker::composeImpl(ComposeDevice* p) {
l->displayFrame.right, l->displayFrame.bottom,
l->crop.left, l->crop.top, l->crop.right,
l->crop.bottom);
- composeLayer(l);
+ composeLayer(l, mFb->getWidth(), mFb->getHeight());
}
cbPtr->setSync();
@@ -249,7 +249,16 @@ void PostWorker::composev2Impl(ComposeDevice_v2* p) {
ComposeLayer* l = (ComposeLayer*)p->layer;
GLint vport[4] = { 0, };
s_gles2.glGetIntegerv(GL_VIEWPORT, vport);
- s_gles2.glViewport(0, 0, mFb->getWidth(),mFb->getHeight());
+ uint32_t w, h;
+ emugl::get_emugl_multi_display_operations().getMultiDisplay(p->displayId,
+ nullptr,
+ nullptr,
+ &w,
+ &h,
+ nullptr,
+ nullptr,
+ nullptr);
+ s_gles2.glViewport(0, 0, w, h);
if (!m_composeFbo) {
s_gles2.glGenFramebuffers(1, &m_composeFbo);
}
@@ -281,7 +290,7 @@ void PostWorker::composev2Impl(ComposeDevice_v2* p) {
l->displayFrame.right, l->displayFrame.bottom,
l->crop.left, l->crop.top, l->crop.right,
l->crop.bottom);
- composeLayer(l);
+ composeLayer(l, w, h);
}
cbPtr->setSync();
@@ -310,7 +319,7 @@ void PostWorker::unbind() {
}
}
-void PostWorker::composeLayer(ComposeLayer* l) {
+void PostWorker::composeLayer(ComposeLayer* l, uint32_t w, uint32_t h) {
if (l->composeMode == HWC2_COMPOSITION_DEVICE) {
ColorBufferPtr cb = mFb->findColorBuffer(l->cbHandle);
if (!cb) {
@@ -318,12 +327,11 @@ void PostWorker::composeLayer(ComposeLayer* l) {
// ERR("%s: fail to find colorbuffer %d\n", __FUNCTION__, l->cbHandle);
return;
}
- cb->postLayer(l, mFb->getWidth(), mFb->getHeight());
+ cb->postLayer(l, w, h);
}
else {
// no Colorbuffer associated with SOLID_COLOR mode
- mFb->getTextureDraw()->drawLayer(l, mFb->getWidth(), mFb->getHeight(),
- 1, 1, 0);
+ mFb->getTextureDraw()->drawLayer(l, w, h, 1, 1, 0);
}
}
diff --git a/stream-servers/PostWorker.h b/stream-servers/PostWorker.h
index 9e7ccd51..31820853 100644
--- a/stream-servers/PostWorker.h
+++ b/stream-servers/PostWorker.h
@@ -84,7 +84,7 @@ private:
void bind();
void unbind();
- void composeLayer(ComposeLayer* l);
+ void composeLayer(ComposeLayer* l, uint32_t w, uint32_t h);
void fillMultiDisplayPostStruct(ComposeLayer* l,
hwc_rect_t displayArea,
hwc_frect_t cropArea,