vdpau: skip vlVdpOutputSurfacePutBitsNative with a zero-area rectangle
authorMarek Olšák <marek.olsak@amd.com>
Sun, 12 Feb 2017 14:48:48 +0000 (15:48 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 14 Feb 2017 20:47:51 +0000 (21:47 +0100)
This prevents errors:
"EE r600_texture.c:1571 r600_texture_transfer_map - failed to create
 temporary texture to hold untiled copy"

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99542

Tested-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Christian König <christian.koenig@amd.com>
src/gallium/state_trackers/vdpau/output.c

index 8b26f7a81ab491f968c522f45a93cae352992541..650628014bd6d3c64b2907d06bd2142c864e97b5 100644 (file)
@@ -263,6 +263,13 @@ vlVdpOutputSurfacePutBitsNative(VdpOutputSurface surface,
    pipe_mutex_lock(vlsurface->device->mutex);
 
    dst_box = RectToPipeBox(destination_rect, vlsurface->sampler_view->texture);
+
+   /* Check for a no-op. (application bug?) */
+   if (!dst_box.width || !dst_box.height) {
+      pipe_mutex_unlock(vlsurface->device->mutex);
+      return VDP_STATUS_OK;
+   }
+
    pipe->texture_subdata(pipe, vlsurface->sampler_view->texture, 0,
                          PIPE_TRANSFER_WRITE, &dst_box, *source_data,
                          *source_pitches, 0);