st/xa: Disable composite solid fill with mask

Xa doesn't support it yet. Trying to do that would cause a segfault.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
This commit is contained in:
Thomas Hellstrom 2011-12-14 16:18:06 +01:00
parent aa7d7656f5
commit 3baaa1bbd7
1 changed files with 19 additions and 1 deletions

View File

@ -227,6 +227,14 @@ xa_composite_check_accelerated(const struct xa_composite *comp)
if (src_pic->src_pict) {
if (src_pic->src_pict->type != xa_src_pict_solid_fill)
return -XA_ERR_INVAL;
/*
* Currently we don't support solid fill with a mask.
* We can easily do that, but that would require shader,
* sampler view setup and vertex setup modification.
*/
if (comp->mask)
return -XA_ERR_INVAL;
}
if (blend_for_op(&blend, comp->op, comp->src, comp->mask, comp->dst)) {
@ -329,7 +337,7 @@ bind_shaders(struct xa_context *ctx, const struct xa_composite *comp)
if (src_pic->src_pict) {
if (src_pic->src_pict->type == xa_src_pict_solid_fill) {
fs_traits |= FS_SOLID_FILL;
fs_traits |= FS_SOLID_FILL | FS_FILL;
vs_traits |= VS_SOLID_FILL;
xa_pixel_to_float4(src_pic->src_pict->solid_fill.color,
ctx->solid_color);
@ -439,6 +447,16 @@ bind_samplers(struct xa_context *ctx,
&view_templ);
pipe_sampler_view_reference(&ctx->bound_sampler_views[1], NULL);
ctx->bound_sampler_views[1] = src_view;
/*
* If src is a solid color, we have no src view, so set up a
* dummy one that will not be used anyway.
*/
if (ctx->bound_sampler_views[0] == NULL)
pipe_sampler_view_reference(&ctx->bound_sampler_views[0],
src_view);
}
cso_set_samplers(ctx->cso, ctx->num_bound_samplers,