radeonsi: rework how shader pointers to descriptors are set
For 10.6: This is a prerequisite for the next fix. The below comment is from the original commit. This is mainly needed for tessellation where a VS can be bound as VS, ES, or LS, and TES (tess. evaluationshader) can be bound as VS or ES or neither. Therefore we need the ability to move pointers to descriptors between shaders arbitrarily. The idea is that the context has a mapping from PIPE_SHADER_x to SPI_SHADER_USER_DATA_x. After a shader is enabled or disabled, si_shader_change_notify should be called to update this mapping accordingly. There is a dirty flag for each shader pointer, but only one emit function for all pointers in the whole context, whose code and logic is separated from descriptors. Reviewed-by:Michel Dänzer <michel.daenzer@amd.com> (cherry picked from commit 3ce91c72)
- src/gallium/drivers/radeonsi/si_descriptors.c 138 additions, 84 deletionssrc/gallium/drivers/radeonsi/si_descriptors.c
- src/gallium/drivers/radeonsi/si_pipe.h 2 additions, 3 deletionssrc/gallium/drivers/radeonsi/si_pipe.h
- src/gallium/drivers/radeonsi/si_state.h 11 additions, 2 deletionssrc/gallium/drivers/radeonsi/si_state.h
- src/gallium/drivers/radeonsi/si_state_draw.c 1 addition, 2 deletionssrc/gallium/drivers/radeonsi/si_state_draw.c
- src/gallium/drivers/radeonsi/si_state_shaders.c 4 additions, 0 deletionssrc/gallium/drivers/radeonsi/si_state_shaders.c