postprocess: handle partial intialization failures.
authorMatthew McClure <mcclurem@vmware.com>
Fri, 21 Jun 2013 20:45:55 +0000 (13:45 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 27 Jun 2013 15:44:29 +0000 (09:44 -0600)
commite87fc11cac696881469a57955af2ac7b4929a2c7
tree58731bbae06fc08d4878089b77055ade2c67538e
parent482c43a946a126a354bc30569ae8c41d3f50b06c
postprocess: handle partial intialization failures.

This patch fixes segfaults observed when enabling the post processing
features. When the format is not supported, or a texture cannot be
created, the code must gracefully handle failure and report the error to
the calling code for proper failure handling.

To accomplish this the following changes were made to the filters.h
prototypes:

- bool return for pp_init_func
- Added pp_free_func for filter specific resource destruction

Fixes segfaults from backtraces:

* util_destroy_blit
  pp_free

* u_transfer_inline_write_vtbl
  pp_jimenezmlaa_init_run
  pp_init

This patch also uses tgsi_alloc_tokens to allocate temporary tokens in
pp_tgsi_to_state, instead of allocating the array on the stack. This
fixes the following stack corruption segfault in pp_run.c:

* _int_free
  aaline_delete_fs_state
  pp_free

Bug Number: 1021843
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/postprocess/filters.h
src/gallium/auxiliary/postprocess/postprocess.h
src/gallium/auxiliary/postprocess/pp_celshade.c
src/gallium/auxiliary/postprocess/pp_colors.c
src/gallium/auxiliary/postprocess/pp_init.c
src/gallium/auxiliary/postprocess/pp_mlaa.c
src/gallium/auxiliary/postprocess/pp_run.c