g3dvl: Preserve previously rendered components for MC output.
Fixes xvmc-softpipe MC entrypoint, amongst others.
This commit is contained in:
parent
8082816e27
commit
b56daf71d2
|
@ -590,7 +590,7 @@ vl_mc_set_surface(struct vl_mc_buffer *buffer, struct pipe_surface *surface)
|
|||
}
|
||||
|
||||
static void
|
||||
prepare_pipe_4_rendering(struct vl_mc_buffer *buffer, unsigned mask)
|
||||
prepare_pipe_4_rendering(struct vl_mc_buffer *buffer, unsigned component, unsigned mask)
|
||||
{
|
||||
struct vl_mc *renderer;
|
||||
|
||||
|
@ -599,7 +599,7 @@ prepare_pipe_4_rendering(struct vl_mc_buffer *buffer, unsigned mask)
|
|||
renderer = buffer->renderer;
|
||||
renderer->pipe->bind_rasterizer_state(renderer->pipe, renderer->rs_state);
|
||||
|
||||
if (buffer->surface_cleared)
|
||||
if (buffer->surface_cleared || component > 0)
|
||||
renderer->pipe->bind_blend_state(renderer->pipe, renderer->blend_add[mask]);
|
||||
else
|
||||
renderer->pipe->bind_blend_state(renderer->pipe, renderer->blend_clear[mask]);
|
||||
|
@ -615,7 +615,7 @@ vl_mc_render_ref(struct vl_mc_buffer *buffer, struct pipe_sampler_view *ref)
|
|||
|
||||
assert(buffer && ref);
|
||||
|
||||
prepare_pipe_4_rendering(buffer, PIPE_MASK_R | PIPE_MASK_G | PIPE_MASK_B);
|
||||
prepare_pipe_4_rendering(buffer, 0, PIPE_MASK_R | PIPE_MASK_G | PIPE_MASK_B);
|
||||
|
||||
renderer = buffer->renderer;
|
||||
|
||||
|
@ -643,7 +643,7 @@ vl_mc_render_ycbcr(struct vl_mc_buffer *buffer, unsigned component, unsigned num
|
|||
if (num_instances == 0)
|
||||
return;
|
||||
|
||||
prepare_pipe_4_rendering(buffer, mask);
|
||||
prepare_pipe_4_rendering(buffer, component, mask);
|
||||
|
||||
renderer = buffer->renderer;
|
||||
|
||||
|
|
Loading…
Reference in New Issue