glamor: glamor_poly_point_nf cannot fail for non-DDX pixmaps

All of the glamor _nf functions must check to see if the DDX can
access the pixmap directly before returning failure back to the
driver; this restructures the point code to split out the _nf checking
from the _gl code.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Keith Packard 2014-04-01 20:54:15 -07:00
parent d5dd1d6371
commit 8d88b90953

View File

@ -35,8 +35,8 @@ static const glamor_facet glamor_facet_point = {
.vs_exec = GLAMOR_POS(gl_Position, primitive),
};
Bool
glamor_poly_point_nf(DrawablePtr drawable, GCPtr gc, int mode, int npt, DDXPointPtr ppt)
static Bool
glamor_poly_point_gl(DrawablePtr drawable, GCPtr gc, int mode, int npt, DDXPointPtr ppt)
{
ScreenPtr screen = drawable->pScreen;
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
@ -123,7 +123,22 @@ void
glamor_poly_point(DrawablePtr drawable, GCPtr gc, int mode, int npt,
DDXPointPtr ppt)
{
if (glamor_poly_point_nf(drawable, gc, mode, npt, ppt))
if (glamor_poly_point_gl(drawable, gc, mode, npt, ppt))
return;
miPolyPoint(drawable, gc, mode, npt, ppt);
}
Bool
glamor_poly_point_nf(DrawablePtr drawable, GCPtr gc, int mode, int npt,
DDXPointPtr ppt)
{
if (glamor_poly_point_gl(drawable, gc, mode, npt, ppt))
return TRUE;
if (glamor_ddx_fallback_check_pixmap(drawable) && glamor_ddx_fallback_check_gc(gc))
return FALSE;
miPolyPoint(drawable, gc, mode, npt, ppt);
return TRUE;
}