[Nouveau] [PATCH 1/2] Check before trying a solid fill
Ilia Mirkin
imirkin at alum.mit.edu
Tue May 19 13:28:28 PDT 2015
Pre-nv50 has all sorts of funny requirements for non-copy alu
operations, and will bail out of solid fills left and right. Account for
that case and fall back to the memset.
Reported-by: Andrew Randrianasulu <randrianasulu at gmail.com>
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
src/drmmode_display.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 7c1d2bb..2ca1dba 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -410,12 +410,15 @@ drmmode_fbcon_copy(ScreenPtr pScreen)
fallback:
if (pdpix) {
- pNv->EXADriverPtr->PrepareSolid(pdpix, GXclear, ~0, 0);
- pNv->EXADriverPtr->Solid(pdpix, 0, 0, w, h);
- pNv->EXADriverPtr->DoneSolid(pdpix);
- nouveau_bo_wait(pNv->scanout, NOUVEAU_BO_RDWR, pNv->client);
+ if (exa->PrepareSolid(pdpix, GXclear, ~0, 0)) {
+ exa->Solid(pdpix, 0, 0, w, h);
+ exa->DoneSolid(pdpix);
+ PUSH_KICK(pNv->pushbuf);
+ nouveau_bo_wait(pNv->scanout, NOUVEAU_BO_RDWR, pNv->client);
+ pScreen->DestroyPixmap(pdpix);
+ return;
+ }
pScreen->DestroyPixmap(pdpix);
- return;
}
#endif
if (nouveau_bo_map(pNv->scanout, NOUVEAU_BO_WR, pNv->client))
--
2.3.6
More information about the Nouveau
mailing list