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 <[email protected]> --- glamor/glamor_points.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/glamor/glamor_points.c b/glamor/glamor_points.c index 5399f96..0d58e55 100644 --- a/glamor/glamor_points.c +++ b/glamor/glamor_points.c @@ -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; +} + -- 1.9.0 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
