mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
st/vdpau: fix default swizzle for Output/Bitmap samplers
Signed-off-by: Christian König <deathsimple@vodafone.de>
This commit is contained in:
parent
503cfbc7ba
commit
379f46c8ac
4 changed files with 24 additions and 6 deletions
|
|
@ -84,8 +84,7 @@ vlVdpBitmapSurfaceCreate(VdpDevice device,
|
|||
return VDP_STATUS_RESOURCES;
|
||||
}
|
||||
|
||||
memset(&sv_templ, 0, sizeof(sv_templ));
|
||||
u_sampler_view_default_template(&sv_templ, res, res->format);
|
||||
vlVdpDefaultSamplerViewTemplate(&sv_templ, res);
|
||||
vlsurface->sampler_view = pipe->create_sampler_view(pipe, res, &sv_templ);
|
||||
if (!vlsurface->sampler_view) {
|
||||
pipe_resource_reference(&res, NULL);
|
||||
|
|
|
|||
|
|
@ -239,6 +239,25 @@ vlVdpGetErrorString (VdpStatus status)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
vlVdpDefaultSamplerViewTemplate(struct pipe_sampler_view *templ, struct pipe_resource *res)
|
||||
{
|
||||
const struct util_format_description *desc;
|
||||
|
||||
memset(templ, 0, sizeof(*templ));
|
||||
u_sampler_view_default_template(templ, res, res->format);
|
||||
|
||||
desc = util_format_description(res->format);
|
||||
if (desc->swizzle[0] == UTIL_FORMAT_SWIZZLE_0)
|
||||
templ->swizzle_r = PIPE_SWIZZLE_ONE;
|
||||
if (desc->swizzle[1] == UTIL_FORMAT_SWIZZLE_0)
|
||||
templ->swizzle_g = PIPE_SWIZZLE_ONE;
|
||||
if (desc->swizzle[2] == UTIL_FORMAT_SWIZZLE_0)
|
||||
templ->swizzle_b = PIPE_SWIZZLE_ONE;
|
||||
if (desc->swizzle[3] == UTIL_FORMAT_SWIZZLE_0)
|
||||
templ->swizzle_a = PIPE_SWIZZLE_ONE;
|
||||
}
|
||||
|
||||
void
|
||||
vlVdpResolveDelayedRendering(vlVdpDevice *dev, struct pipe_surface *surface, struct u_rect *dirty_area)
|
||||
{
|
||||
|
|
@ -270,8 +289,7 @@ vlVdpResolveDelayedRendering(vlVdpDevice *dev, struct pipe_surface *surface, str
|
|||
struct pipe_resource *res = surface->texture;
|
||||
struct pipe_sampler_view sv_templ;
|
||||
|
||||
memset(&sv_templ, 0, sizeof(sv_templ));
|
||||
u_sampler_view_default_template(&sv_templ, res, res->format);
|
||||
vlVdpDefaultSamplerViewTemplate(&sv_templ, res);
|
||||
pipe_sampler_view_reference(&vlsurface->sampler_view,
|
||||
dev->context->create_sampler_view(dev->context, res, &sv_templ));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,8 +85,7 @@ vlVdpOutputSurfaceCreate(VdpDevice device,
|
|||
return VDP_STATUS_ERROR;
|
||||
}
|
||||
|
||||
memset(&sv_templ, 0, sizeof(sv_templ));
|
||||
u_sampler_view_default_template(&sv_templ, res, res->format);
|
||||
vlVdpDefaultSamplerViewTemplate(&sv_templ, res);
|
||||
vlsurface->sampler_view = pipe->create_sampler_view(pipe, res, &sv_templ);
|
||||
if (!vlsurface->sampler_view) {
|
||||
pipe_resource_reference(&res, NULL);
|
||||
|
|
|
|||
|
|
@ -381,6 +381,8 @@ boolean vlGetFuncFTAB(VdpFuncId function_id, void **func);
|
|||
VdpDeviceCreateX11 vdp_imp_device_create_x11;
|
||||
VdpPresentationQueueTargetCreateX11 vlVdpPresentationQueueTargetCreateX11;
|
||||
|
||||
void vlVdpDefaultSamplerViewTemplate(struct pipe_sampler_view *templ, struct pipe_resource *res);
|
||||
|
||||
/* Delayed rendering funtionality */
|
||||
void vlVdpResolveDelayedRendering(vlVdpDevice *dev, struct pipe_surface *surface, struct u_rect *dirty_area);
|
||||
void vlVdpSave4DelayedRendering(vlVdpDevice *dev, VdpOutputSurface surface, struct vl_compositor_state *cstate);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue