radeonsi: put image, fmask, and sampler descriptors into one array
authorMarek Olšák <marek.olsak@amd.com>
Sat, 6 Feb 2016 21:09:45 +0000 (22:09 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 10 Feb 2016 18:41:49 +0000 (19:41 +0100)
commit7aedbbacae6d3ec3d06735fff2eb662964773ad2
tree8e641136cfb7acaaba9e00c1198e5e9d782df140
parent796ee76e2eeabbeed9ab41b012363cabd5497b33
radeonsi: put image, fmask, and sampler descriptors into one array

The texture slot is expanded to 16 dwords containing 2 descriptors.
Those can be:
- Image and fmask, or
- Image and sampler state

By carefully choosing the locations, we can put all three into one slot,
with the fmask and sampler state being mutually exclusive.

This improves shaders in 2 ways:
- 2 user SGPRs are unused, shaders can use them as temporary registers now
- each pair of descriptors is always on the same cache line

v2: cosmetic changes: add back v8i32, don't load a sampler state & fmask
    at the same time

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_blit.c
src/gallium/drivers/radeonsi/si_descriptors.c
src/gallium/drivers/radeonsi/si_pipe.h
src/gallium/drivers/radeonsi/si_shader.c
src/gallium/drivers/radeonsi/si_shader.h
src/gallium/drivers/radeonsi/si_state.h