summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/xorg/xorg_composite.c
diff options
context:
space:
mode:
authorZack Rusin <zackr@vmware.com>2009-11-06 08:31:16 -0500
committerZack Rusin <zackr@vmware.com>2009-11-06 22:08:21 -0500
commite521bf7706a5527ad5750baef78feaa961f73ecc (patch)
treec350f914792a79b0af3eb887c2f8b244bc401dd4 /src/gallium/state_trackers/xorg/xorg_composite.c
parent4322346f3fd03788a79d056ca7bce2db25bc9d88 (diff)
st/xorg: implement batching for the composite op
something is broken so disabled for now
Diffstat (limited to 'src/gallium/state_trackers/xorg/xorg_composite.c')
-rw-r--r--src/gallium/state_trackers/xorg/xorg_composite.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_composite.c b/src/gallium/state_trackers/xorg/xorg_composite.c
index 93fcdaf44d..8947d0a67c 100644
--- a/src/gallium/state_trackers/xorg/xorg_composite.c
+++ b/src/gallium/state_trackers/xorg/xorg_composite.c
@@ -431,6 +431,14 @@ boolean xorg_composite_bind_state(struct exa_context *exa,
setup_transforms(exa, pSrcPicture, pMaskPicture);
+ if (exa->num_bound_samplers == 0 ) { /* solid fill */
+ renderer_begin_solid(exa->renderer);
+ } else {
+ renderer_begin_textures(exa->renderer,
+ exa->bound_textures,
+ exa->num_bound_samplers);
+ }
+
return TRUE;
}
@@ -440,11 +448,9 @@ void xorg_composite(struct exa_context *exa,
int dstX, int dstY, int width, int height)
{
if (exa->num_bound_samplers == 0 ) { /* solid fill */
- renderer_begin_solid(exa->renderer);
renderer_solid(exa->renderer,
dstX, dstY, dstX + width, dstY + height,
exa->solid_color);
- renderer_draw_flush(exa->renderer);
} else {
int pos[6] = {srcX, srcY, maskX, maskY, dstX, dstY};
float *src_matrix = NULL;
@@ -455,11 +461,19 @@ void xorg_composite(struct exa_context *exa,
if (exa->transform.has_mask)
mask_matrix = exa->transform.mask;
+#if 1
renderer_draw_textures(exa->renderer,
pos, width, height,
exa->bound_textures,
exa->num_bound_samplers,
src_matrix, mask_matrix);
+#else
+ renderer_texture(exa->renderer,
+ pos, width, height,
+ exa->bound_textures,
+ exa->num_bound_samplers,
+ src_matrix, mask_matrix);
+#endif
}
}