i965/fs: Enables 16-bit load_ubo with sampler
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 20 Nov 2017 23:03:46 +0000 (00:03 +0100)
committerJose Maria Casanova Crespo <jmcasanova@igalia.com>
Wed, 6 Dec 2017 07:57:18 +0000 (08:57 +0100)
commit3282309f74e72991635bfde08f5e5e58a18604c7
tree61f41d0a99438b5e770fd52ef4dab745b8fd3245
parent3db31c0b06acf2d1505070434764c89bc58a48af
i965/fs: Enables 16-bit load_ubo with sampler

load_ubo is using 32-bit loads as uniforms surfaces have a 32-bit
surface format defined. So when reading 16-bit components with the
sampler we need to unshuffle two 16-bit components from each 32-bit
component.

Using the sampler avoids the use of the byte_scattered_read message
that needs one message for each component and is supposed to be
slower.

v2: (Jason Ekstrand)
    - Simplify component selection and unshuffling for different bitsizes
    - Remove SKL optimization of reading only two 32-bit components when
      reading 16-bits types.

Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
src/intel/compiler/brw_fs.cpp