diff options
author | Huan Song <huans@google.com> | 2021-05-03 17:40:22 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-05-03 17:40:22 +0000 |
commit | ecff709a9077eb560c2f11e0b6cb713350ee3fe3 (patch) | |
tree | 979a3407aefee73102e9f0b4d10df819048ed2e5 | |
parent | 7bf34a5d33c83eb69e068db113d5474f6eb125c1 (diff) | |
parent | 4ece08ff1bcdc6fad2bda24cf32cc1094a72be14 (diff) | |
download | vulkan-cereal-ecff709a9077eb560c2f11e0b6cb713350ee3fe3.tar.gz |
Set correct glViewPort when composing secondary displays am: 4ece08ff1b
Original change: https://android-review.googlesource.com/c/device/generic/vulkan-cereal/+/1692656
Change-Id: Ib16c354b7ddedf72f15755aa3d313cc100670d28
-rw-r--r-- | stream-servers/PostWorker.cpp | 22 | ||||
-rw-r--r-- | stream-servers/PostWorker.h | 2 |
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, |