glamor: Track the next vertex offset as we go for non-AA traps.
v2: Use sizeof(float) instead of 4. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Markus Wick <markus at selfnet.de>
This commit is contained in:
parent
03a33048a7
commit
ca307fd18d
|
@ -191,14 +191,16 @@ point_inside_trapezoid(int point[2], xTrapezoid *trap, xFixed cut_y)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
glamor_emit_composite_vert(ScreenPtr screen,
|
glamor_emit_composite_vert(ScreenPtr screen,
|
||||||
|
float *vb,
|
||||||
const float *src_coords,
|
const float *src_coords,
|
||||||
const float *mask_coords,
|
const float *mask_coords,
|
||||||
const float *dst_coords, int i)
|
const float *dst_coords, int i)
|
||||||
{
|
{
|
||||||
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
|
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
|
||||||
float *vb = (float *) (glamor_priv->vb + glamor_priv->vbo_offset);
|
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
||||||
|
vb += i * glamor_priv->vb_stride / sizeof(float);
|
||||||
|
|
||||||
vb[j++] = dst_coords[i * 2 + 0];
|
vb[j++] = dst_coords[i * 2 + 0];
|
||||||
vb[j++] = dst_coords[i * 2 + 1];
|
vb[j++] = dst_coords[i * 2 + 1];
|
||||||
if (glamor_priv->has_source_coords) {
|
if (glamor_priv->has_source_coords) {
|
||||||
|
@ -216,13 +218,17 @@ glamor_emit_composite_vert(ScreenPtr screen,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
glamor_emit_composite_triangle(ScreenPtr screen,
|
glamor_emit_composite_triangle(ScreenPtr screen,
|
||||||
|
float *vb,
|
||||||
const float *src_coords,
|
const float *src_coords,
|
||||||
const float *mask_coords,
|
const float *mask_coords,
|
||||||
const float *dst_coords)
|
const float *dst_coords)
|
||||||
{
|
{
|
||||||
glamor_emit_composite_vert(screen, src_coords, mask_coords, dst_coords, 0);
|
glamor_emit_composite_vert(screen, vb,
|
||||||
glamor_emit_composite_vert(screen, src_coords, mask_coords, dst_coords, 1);
|
src_coords, mask_coords, dst_coords, 0);
|
||||||
glamor_emit_composite_vert(screen, src_coords, mask_coords, dst_coords, 2);
|
glamor_emit_composite_vert(screen, vb,
|
||||||
|
src_coords, mask_coords, dst_coords, 1);
|
||||||
|
glamor_emit_composite_vert(screen, vb,
|
||||||
|
src_coords, mask_coords, dst_coords, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -887,6 +893,8 @@ _glamor_trapezoids_with_shader(CARD8 op,
|
||||||
|
|
||||||
nclip_rect = nbox;
|
nclip_rect = nbox;
|
||||||
while (nclip_rect) {
|
while (nclip_rect) {
|
||||||
|
float *vb;
|
||||||
|
|
||||||
mclip_rect = (nclip_rect * ntrap * 4) > ntriangle_per_loop ?
|
mclip_rect = (nclip_rect * ntrap * 4) > ntriangle_per_loop ?
|
||||||
(ntriangle_per_loop / (4 * ntrap)) : nclip_rect;
|
(ntriangle_per_loop / (4 * ntrap)) : nclip_rect;
|
||||||
|
|
||||||
|
@ -904,8 +912,9 @@ _glamor_trapezoids_with_shader(CARD8 op,
|
||||||
|
|
||||||
NTRAPS_LOOP_AGAIN:
|
NTRAPS_LOOP_AGAIN:
|
||||||
|
|
||||||
glamor_setup_composite_vbo(screen,
|
vb = glamor_setup_composite_vbo(screen,
|
||||||
mclip_rect * traps_count * 4 * vert_stride);
|
(mclip_rect * traps_count *
|
||||||
|
4 * vert_stride));
|
||||||
clip_processed = mclip_rect;
|
clip_processed = mclip_rect;
|
||||||
|
|
||||||
while (mclip_rect--) {
|
while (mclip_rect--) {
|
||||||
|
@ -963,8 +972,10 @@ _glamor_trapezoids_with_shader(CARD8 op,
|
||||||
source_texcoords[4], source_texcoords[5]);
|
source_texcoords[4], source_texcoords[5]);
|
||||||
}
|
}
|
||||||
|
|
||||||
glamor_emit_composite_triangle(screen, source_texcoords,
|
glamor_emit_composite_triangle(screen, vb,
|
||||||
|
source_texcoords,
|
||||||
NULL, vertices);
|
NULL, vertices);
|
||||||
|
vb += 3 * glamor_priv->vb_stride / sizeof(float);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue