Signed-off-by: Christian König <deathsimple@vodafone.de>tags/i965-primitive-restart-v2
@@ -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); |