Yeah, that solution looks more correct to me.
Christian.
Am 31.05.2016 um 14:44 schrieb Julien Isorce:
Hi,
Thx for looking at it but are you sure your diff compiles ?
Can you try this instead:
--- a/src/gallium/state_trackers/va/image.c
+++ b/src/gallium/state_trackers/va/image.c
@@ -471,19 +471,19 @@ vlVaPutImage(VADriverContextP ctx, VASurfaceID
surface, VAImageID image,
if (format != surf->buffer->buffer_format) {
struct pipe_video_buffer *tmp_buf;
- enum pipe_format old_surf_format = surf->templat.buffer_format;
+ struct pipe_video_buffer templat = surf->templat;
- surf->templat.buffer_format = format;
- tmp_buf = drv->pipe->create_video_buffer(drv->pipe,
&surf->templat);
+ templat.buffer_format = format;
+ tmp_buf = drv->pipe->create_video_buffer(drv->pipe, &templat);
if (!tmp_buf) {
- surf->templat.buffer_format = old_surf_format;
pipe_mutex_unlock(drv->mutex);
return VA_STATUS_ERROR_ALLOCATION_FAILED;
}
surf->buffer->destroy(surf->buffer);
surf->buffer = tmp_buf;
+ surf->templat.buffer_format = format;
}
Cheers
Julien
On 31 May 2016 at 08:43, Christian König <[email protected]
<mailto:[email protected]>> wrote:
Am 31.05.2016 um 03:24 schrieb Eric Engestrom:
CoverityID: 1337953
Signed-off-by: Eric Engestrom <[email protected]
<mailto:[email protected]>>
---
Note that I do not know this code at all; I'm blindly
following Coverity's advice on this one :]
Well and that is completely nonsense. The buffer was already
reallocated when this error happens and so resetting the template
to the original value is incorrect and actually rather dangerous.
Why does Coverity things that we should add this? And how can we
fix this?
Regards,
Christian.
---
src/gallium/state_trackers/va/image.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/gallium/state_trackers/va/image.c
b/src/gallium/state_trackers/va/image.c
index 92d014c..8cfe17a 100644
--- a/src/gallium/state_trackers/va/image.c
+++ b/src/gallium/state_trackers/va/image.c
@@ -490,6 +490,7 @@ vlVaPutImage(VADriverContextP ctx,
VASurfaceID surface, VAImageID image,
views =
surf->buffer->get_sampler_view_planes(surf->buffer);
if (!views) {
+ surf->templat.buffer_format = old_surf_format;
pipe_mutex_unlock(drv->mutex);
return VA_STATUS_ERROR_OPERATION_FAILED;
}
_______________________________________________
mesa-dev mailing list
[email protected] <mailto:[email protected]>
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev