i965/fs_surface_builder: Only apply predicate to components that exist
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 14 Sep 2015 22:36:24 +0000 (15:36 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 15 Sep 2015 18:09:48 +0000 (11:09 -0700)
commit0c6df7a1cb593666636aed660e90be0c6aca4591
tree17e3c6bfbce0cd3db07df63cf7452770dd129ca1
parent51824000541d8df9f870cbe0823a3835c9403bff
i965/fs_surface_builder: Only apply predicate to components that exist

In certain conditions, we have to do bounds-checking in the shader for
image_load_store.  The way this works for image loads is that we do a
predicated load and then emit a series of selects, one per component,
that gives us 0 or the loaded value depending on whether or not you're
in bounds.  However, we were hard-coding 4 components which may not be
correct.  Instead, we should be using size which is the number of
components read.

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp