Render ChangeLog, 1.5, 1.6 configure.ac, 1.3, 1.4 protocol, 1.8,
1.9 render.h, 1.13, 1.14 renderproto.h, 1.14, 1.15
Keith Packard
xlibs-commit at pdx.freedesktop.org
Thu Jul 29 00:58:05 PDT 2004
- Previous message: Xfixes ChangeLog, 1.10, 1.11 Makefile.am, 1.3, 1.4 Region.c, 1.4,
1.5 Xfixes.c, 1.3, 1.4 Xfixes.h, 1.5, 1.6 configure.ac, 1.6, 1.7
- Next message: Xrender ChangeLog, 1.11, 1.12 Makefile.am, 1.10, 1.11 Xrender.h,
1.20, 1.21 configure.ac, 1.18, 1.19
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Committed by: keithp
Update of /cvs/xlibs/Render
In directory pdx:/tmp/cvs-serv8477
Modified Files:
ChangeLog configure.ac protocol render.h renderproto.h
Log Message:
2004-07-29 Keith Packard <keithp at keithp.com>
* configure.ac:
* protocol:
* render.h:
* renderproto.h:
Specify new AddTraps request.
Change pixelization specification.
Index: ChangeLog
===================================================================
RCS file: /cvs/xlibs/Render/ChangeLog,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- ChangeLog 4 Jul 2004 20:25:48 -0000 1.5
+++ ChangeLog 29 Jul 2004 07:58:03 -0000 1.6
@@ -1,3 +1,12 @@
+2004-07-29 Keith Packard <keithp at keithp.com>
+
+ * configure.ac:
+ * protocol:
+ * render.h:
+ * renderproto.h:
+ Specify new AddTraps request.
+ Change pixelization specification.
+
2004-07-03 Eric Anholt <anholt at FreeBSD.org>
* render.h:
Index: configure.ac
===================================================================
RCS file: /cvs/xlibs/Render/configure.ac,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- configure.ac 10 Nov 2003 04:46:53 -0000 1.3
+++ configure.ac 29 Jul 2004 07:58:03 -0000 1.4
@@ -24,7 +24,7 @@
dnl Process this file with autoconf to create configure.
AC_PREREQ([2.57])
-AC_INIT([renderext], [0.8], [keithp at keithp.com], [renderext])
+AC_INIT([renderext], [0.9], [keithp at keithp.com], [renderext])
AM_INIT_AUTOMAKE([dist-bzip2])
AM_MAINTAINER_MODE
Index: protocol
===================================================================
RCS file: /cvs/xlibs/Render/protocol,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- protocol 3 May 2003 19:20:00 -0000 1.8
+++ protocol 29 Jul 2004 07:58:03 -0000 1.9
@@ -1,6 +1,6 @@
The X Rendering Extension
- Version 0.8
- 2003-5-3
+ Version 0.9
+ 2004-7-23
Keith Packard
keithp at keithp.com
@@ -29,7 +29,7 @@
how OpenGL works.
+ Carl Worth for providing the sample implementation of
- trapezoid rendering
+ trapezoid rendering and showing how broken the spec was
+ Sam Pottle and Jamey Sharp for helping demonstrate the correctness
of the trapezoid specification.
@@ -208,9 +208,13 @@
p1, p2: POINTFIX
]
TRAP [
+ top, bottom: SPANFIX
+ ]
+TRAPEZOID [
top, bottom: FIXED
left, right: LINEFIX
]
+(TRAPEZOID is deprecated)
COLORTRIANGLE [
p1, p2, p3: COLORPOINT
]
@@ -372,22 +376,13 @@
10. Polygon Rasterization
-All polygons must be convex. Rendering of concave polygons is unspecified
-except that the result must obey the clipping rules.
-
-Each polygon request fills the region closed by the specified path. The
-path is automatically closed if the last point does not coincide with the
-first point.
+Render provides only two kinds of polygons, trapezoids and triangles. To
+improve efficiency, several different wire encodings exist for each.
-A point is infinitely small and the path is an infinitely thin line. A
-pixel is inside if the center point of the pixel is inside and the center
-point is not on the boundary. If the center point is on the boundary, the
-pixel is inside if and only if the polygon interior is immediately to its
-right (x increasing direction). Pixels with centers along a horizontal edge
-are a special case and are inside if and only if the polygon interior is
-immediately below (y increasing direction). A polygon contains a pixel if
-the pixel is inside the polygon.
+All trapezoids must be convex. Rendering of concave trapezoids is unspecified
+except that the result must obey the clipping rules.
+Composite
Polygons are rasterized by implicit generating an alpha mask and using that
in the general compositing operator along with a supplied source image:
@@ -404,21 +399,20 @@
the alpha width in the fallback format before application of the compositing
operator.
----
-
-This needs rewriting to match current trapezoid specification and
-base other polygons on that. I suspect imprecise polygons will need
-to have a relaxed specification as well; hardware is unlikely to
-meet the "sum to one" constraint.
-
----
+Rasterization
+Alpha values are generated by point sampling the coverage of a square
+surrounding the center of each pixel by the polygon.
-When rasterized in Precise mode, the pixelization will match this
-specification exactly.
+In Precise poly mode, the sample points are located in a regular grid. When
+alpha depth 'e' is even, the regular grid is 2**(e/2) + 1 samples wide and
+2**(e/2) -1 samples high. For odd alpha depth 'o', the sample grid is 2**o
+- 1 samples wide and 1 sample high. Note that odd alpha depth usually
+occurs only at depth 1, so this misshapen sample grid has no ill effects.
+The sample grid is centered within the pixel and then each sample point is
+rounded down to a point on the sub-pixel coordinate grid.
-When rasterized in Imprecise mode, the pixelization may deviate from this
-specification by up to 1/2 pixel along any edge subject to the following
-constraints:
+In Imprecise mode, the location of the sample points is not specified, but
+the implementation must conform to the following constraints:
+ Abutting edges must match precisely. When specifying two polygons
abutting along a common edge, if that edge is specified with the
@@ -436,16 +430,6 @@
+ Order independent. Two identical polygons specified with vertices
in different orders must generate identical results.
-Polygons can also be specified with colors for each vertex. These color
-values are interpolated along the edges and across each scanline.
-
-When rasterized in Precise mode, the interpolated colors are exact.
-
-When rasterized in Imprecise mode, the color of each pixel may optionally be
-interpolated from a triangle containing the pixel which is formed from any
-three polygon vertices. Any interpolated color value can err up to 1 lsb in
-each channel.
-
11. Image Filtering
When computing pixels from source and mask images, a filter may be applied
@@ -460,8 +444,8 @@
Filter Name Description
- Nearest Nearest neighbor filtering
- Bilinear Linear interpolation in two dimensions
+ nearest Nearest neighbor filtering
+ bilinear Linear interpolation in two dimensions
Additional names may be provided for any filter as aliases. A set of
standard alias names are required to be mapped to a provided filter so that
@@ -469,13 +453,29 @@
Alias name Intended interpretation
- Fast High performance, quality similar to Nearest
- Good Reasonable performance, quality similar to Bilinear
- Best Highest quality available, performance may not
+ fast High performance, quality similar to Nearest
+ good Reasonable performance, quality similar to Bilinear
+ best Highest quality available, performance may not
be suitable for interactive use
Aliases must map directly to a non-aliased filter name.
+There is also a set of standard filters which are not required but may be
+provided. If they are provided, using the standard name, they must match
+the definition specified here.
+
+ Filter Name Description
+
+ convolution MxN convolution filter. The values specified
+ in SetPictureFilter are M, N and then M * N
+ filter parameters. M and N must be integers
+ represented as fixed point numbers.
+ gaussian Gaussian blur. The value specified is a radius
+ in pixels (which can be fractional). A standard
+ Gaussian 2D convolution filter will be applied.
+ binomial Binomial blur. An approximation of a Gaussian
+ blur using binomial coefficients
+
12. Glyph Rendering
Glyphs are small alpha masks which can be stored in the X server and
@@ -816,14 +816,15 @@
src-x, src-y: INT16
dst: PICTURE
mask-format: PICTFORMAT or None
- traps: LISTofTRAP
+ traps: LISTofTRAPEZOID
- This request rasterizes the list of trapezoids. For each trap, the
- area between the left and right edges is filled from the top to the
- bottom. src-x and src-y register the pattern to the floor of the
- top x and y coordinate of the left edge of the first trapezoid, they
- are adjusted for subsequent trapezoids so that the pattern remains
- globally aligned within the destination.
+ This request rasterizes the list of trapezoids.
+
+ For each trap, the area between the left and right edges is filled
+ from the top to the bottom. src-x and src-y register the pattern to
+ the floor of the top x and y coordinate of the left edge of the
+ first trapezoid, they are adjusted for subsequent trapezoids so that
+ the pattern remains globally aligned within the destination.
When mask-format is not None, trapezoids are rendered in the
following way with the effective mask computed in mask-format:
@@ -1110,6 +1111,19 @@
'cursors', showing each cursor in the element for the number of
milliseconds indicated by the 'delay' member of that element.
+AddTraps
+ picture: PICTURE
+ off-x, off-y: INT16
+ trapezoids: LISTofTRAP
+
+ Errors: Match
+
+ Each trap is PictOpAdd'ed to 'picture'. 'off-x', 'off-y'
+ are added to each coordinate.
+
+ 'picture' must be an alpha-only picture else a 'Match' error is
+ returned.
+
15. Extension Versioning
The Render extension was developed in parallel with the implementation to
@@ -1158,3 +1172,5 @@
QueryPictIndexValues
0.8:
CreateAnimCursor
+ 0.9:
+ AddTrapezoids
Index: render.h
===================================================================
RCS file: /cvs/xlibs/Render/render.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- render.h 4 Jul 2004 20:25:48 -0000 1.13
+++ render.h 29 Jul 2004 07:58:03 -0000 1.14
@@ -33,7 +33,7 @@
#define RENDER_NAME "RENDER"
#define RENDER_MAJOR 0
-#define RENDER_MINOR 8
+#define RENDER_MINOR 9
#define X_RenderQueryVersion 0
#define X_RenderQueryPictFormats 1
@@ -68,8 +68,11 @@
#define X_RenderSetPictureTransform 28
#define X_RenderQueryFilters 29
#define X_RenderSetPictureFilter 30
+/* 0.8 */
#define X_RenderCreateAnimCursor 31
-#define RenderNumberRequests (X_RenderCreateAnimCursor+1)
+/* 0.9 */
+#define X_RenderAddTraps 32
+#define RenderNumberRequests (X_RenderAddTraps+1)
#define BadPictFormat 0
#define BadPicture 1
@@ -155,6 +158,10 @@
/* Filters included in 0.6 */
#define FilterNearest "nearest"
#define FilterBilinear "bilinear"
+/* Other standard, but not required filters */
+#define FilterConvolution "convolution"
+#define FilterGaussian "gaussian"
+#define FilterBinomial "binomial"
#define FilterFast "fast"
#define FilterGood "good"
Index: renderproto.h
===================================================================
RCS file: /cvs/xlibs/Render/renderproto.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- renderproto.h 21 Apr 2003 17:19:22 -0000 1.14
+++ renderproto.h 29 Jul 2004 07:58:03 -0000 1.15
@@ -168,6 +168,18 @@
#define sz_xGlyphElt 8
+typedef struct {
+ Fixed l, r, y;
+} xSpanFix;
+
+#define sz_xSpanFix 12
+
+typedef struct {
+ xSpanFix top, bot;
+} xTrap;
+
+#define sz_xTrap 24
+
/*
* requests and replies
*/
@@ -568,6 +580,19 @@
#define sz_xRenderCreateAnimCursorReq 8
+/* 0.9 and higher */
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 renderReqType;
+ CARD16 length B16;
+ Picture picture;
+ INT16 xOff B16;
+ INT16 yOff B16;
+} xRenderAddTrapsReq;
+
+#define sz_xRenderAddTrapsReq 12
+
#undef Window
#undef Drawable
#undef Font
- Previous message: Xfixes ChangeLog, 1.10, 1.11 Makefile.am, 1.3, 1.4 Region.c, 1.4,
1.5 Xfixes.c, 1.3, 1.4 Xfixes.h, 1.5, 1.6 configure.ac, 1.6, 1.7
- Next message: Xrender ChangeLog, 1.11, 1.12 Makefile.am, 1.10, 1.11 Xrender.h,
1.20, 1.21 configure.ac, 1.18, 1.19
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the xlibs-commit
mailing list