Module: Mesa
Branch: master
Commit: 8b52fa71ac3d706f27ccbddcb050aae4965839e9
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b52fa71ac3d706f27ccbddcb050aae4965839e9

Author: Christian König <christian.koe...@amd.com>
Date:   Mon Dec  7 20:21:57 2015 +0100

st/va: handle default post process regions

Avoid referencing NULL pointers.

Signed-off-by: Christian König <christian.koe...@amd.com>
Reviewed-by: Julien Isorce <j.iso...@samsung.com>
Tested-by: Julien Isorce <j.iso...@samsung.com>

---

 src/gallium/state_trackers/va/postproc.c |   36 +++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/gallium/state_trackers/va/postproc.c 
b/src/gallium/state_trackers/va/postproc.c
index 2d17694..105f251 100644
--- a/src/gallium/state_trackers/va/postproc.c
+++ b/src/gallium/state_trackers/va/postproc.c
@@ -29,9 +29,26 @@
 
 #include "va_private.h"
 
+static const VARectangle *
+vlVaRegionDefault(const VARectangle *region, struct pipe_video_buffer *buf,
+                 VARectangle *def)
+{
+   if (region)
+      return region;
+
+   def->x = 0;
+   def->y = 0;
+   def->width = buf->width;
+   def->height = buf->height;
+
+   return def;
+}
+
 VAStatus
 vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext 
*context, vlVaBuffer *buf)
 {
+   VARectangle def_src_region, def_dst_region;
+   const VARectangle *src_region, *dst_region;
    struct u_rect src_rect;
    struct u_rect dst_rect;
    vlVaSurface *src_surface;
@@ -64,15 +81,18 @@ vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver 
*drv, vlVaContext *contex
 
    psurf = surfaces[0];
 
-   src_rect.x0 = pipeline_param->surface_region->x;
-   src_rect.y0 = pipeline_param->surface_region->y;
-   src_rect.x1 = pipeline_param->surface_region->x + 
pipeline_param->surface_region->width;
-   src_rect.y1 = pipeline_param->surface_region->y + 
pipeline_param->surface_region->height;
+   src_region = vlVaRegionDefault(pipeline_param->surface_region, 
src_surface->buffer, &def_src_region);
+   dst_region = vlVaRegionDefault(pipeline_param->output_region, 
context->target, &def_dst_region);
+
+   src_rect.x0 = src_region->x;
+   src_rect.y0 = src_region->y;
+   src_rect.x1 = src_region->x + src_region->width;
+   src_rect.y1 = src_region->y + src_region->height;
 
-   dst_rect.x0 = pipeline_param->output_region->x;
-   dst_rect.y0 = pipeline_param->output_region->y;
-   dst_rect.x1 = pipeline_param->output_region->x + 
pipeline_param->output_region->width;
-   dst_rect.y1 = pipeline_param->output_region->y + 
pipeline_param->output_region->height;
+   dst_rect.x0 = dst_region->x;
+   dst_rect.y0 = dst_region->y;
+   dst_rect.x1 = dst_region->x + dst_region->width;
+   dst_rect.y1 = dst_region->y + dst_region->height;
 
    vl_compositor_clear_layers(&drv->cstate);
    vl_compositor_set_buffer_layer(&drv->cstate, &drv->compositor, 0, 
src_surface->buffer, &src_rect, NULL, VL_COMPOSITOR_WEAVE);

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to