[Glamor] [PATCH 2/3] Just use the shader to generate trapezoid if PolyMode == Imprecise
junyan.he at linux.intel.com
junyan.he at linux.intel.com
Thu Jul 19 14:52:50 PDT 2012
From: Junyan He <junyan.he at linux.intel.com>
The precise mode of trapezoid rendering need to sample the trapezoid on
the centre points of an (2*n+1)x(2*n-1) subpixel grid. It is computationally
expensive in shader, and we use inside area ratio to replace it.
The result has some difference, and we just use it if the polymode == Imprecise.
Signed-off-by: Junyan He <junyan.he at linux.intel.com>
---
src/glamor_trapezoid.c | 23 ++++++++++++++---------
1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/glamor_trapezoid.c b/src/glamor_trapezoid.c
index d7bba66..5c02a8c 100644
--- a/src/glamor_trapezoid.c
+++ b/src/glamor_trapezoid.c
@@ -1664,15 +1664,20 @@ _glamor_trapezoids(CARD8 op,
if(ret)
return TRUE;
} else {
- picture = glamor_create_mask_picture(screen, dst, mask_format,
- width, height, 1);
- if (!picture)
- return TRUE;
-
- ret = _glamor_generate_trapezoid_with_shader(screen, picture, traps, ntrap, &bounds);
-
- if (!ret)
- FreePicture(picture, 0);
+ /* The precise mode is that we sample the trapezoid on the centre points of
+ an (2*n+1)x(2*n-1) subpixel grid. It is computationally expensive in shader
+ and we use inside area ratio to replace it if the polymode == Imprecise. */
+ if(dst->polyMode == PolyModeImprecise) {
+ picture = glamor_create_mask_picture(screen, dst, mask_format,
+ width, height, 1);
+ if (!picture)
+ return TRUE;
+
+ ret = _glamor_generate_trapezoid_with_shader(screen, picture, traps, ntrap, &bounds);
+
+ if (!ret)
+ FreePicture(picture, 0);
+ }
}
#endif
--
1.7.7.6
More information about the Glamor
mailing list