Eric Anholt <e...@anholt.net> writes: > Unlike the previous two fixes, this one introduces new GL calls and > statechanges of the scissor. However, given that our Render drawing > already does CPU side transformation and inefficient box upload, this > shouldn't be a limiting factor for Render acceleration. > > Surprisingly, it improves x11perf -comppixwin10 -repeat 1 -reps 10000 > on i965 by 3.21191% +/- 1.79977% (n=50). > > Signed-off-by: Eric Anholt <e...@anholt.net> > --- > glamor/glamor_render.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c > index 52f073d0578b..413c4a7f8e8a 100644 > --- a/glamor/glamor_render.c > +++ b/glamor/glamor_render.c > @@ -1198,6 +1198,29 @@ glamor_composite_with_shader(CARD8 op, > > nrect_max = MIN(nrect, GLAMOR_COMPOSITE_VBO_VERT_CNT / 4); > > + if (nrect < 100) { > + BoxRec bounds = glamor_start_rendering_bounds(); > + > + for (int i = 0; i < nrect; i++) { > + BoxRec box = { > + .x1 = rects[i].x_dst, > + .y1 = rects[i].y_dst, > + .x2 = rects[i].x_dst + rects[i].width, > + .y2 = rects[i].y_dst + rects[i].height, > + }; > + glamor_bounds_union_box(&bounds, &box); > + } > + > + if (bounds.x1 >= bounds.x2 || bounds.y1 >= bounds.y2) > + goto disable;
You might as well branch after the glDisable(GL_SCISSOR_TEST) to make it symmetrical here? > + > + glEnable(GL_SCISSOR_TEST); > + glScissor(bounds.x1 + dest_x_off, > + bounds.y1 + dest_y_off, > + bounds.x2 - bounds.x1, > + bounds.y2 - bounds.y1); > + } I think that's right; have you tested in a composited window to make sure the offset is correct? -- -keith
signature.asc
Description: PGP signature
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel