freedreno/ir3: add helper to determine point-coord inputs
This will simplify a bit the logic for setting up vinterp/vprepl in the driver backend, and also avoid it being a flag-day when we switch the texcoord pipe cap. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5595>
This commit is contained in:
parent
64c2a10707
commit
022c363cfb
|
@ -769,8 +769,6 @@ struct ir3_shader_linkage {
|
|||
static inline void
|
||||
ir3_link_add(struct ir3_shader_linkage *l, uint8_t regid_, uint8_t compmask, uint8_t loc)
|
||||
{
|
||||
|
||||
|
||||
for (int j = 0; j < util_last_bit(compmask); j++) {
|
||||
uint8_t comploc = loc + j;
|
||||
l->varmask[comploc / 32] |= 1 << (comploc % 32);
|
||||
|
|
|
@ -49,4 +49,22 @@ void ir3_shader_state_delete(struct pipe_context *pctx, void *hwcso);
|
|||
|
||||
void ir3_prog_init(struct pipe_context *pctx);
|
||||
|
||||
/**
|
||||
* A helper to determine if a fs input 'i' is point/sprite coord, given
|
||||
* the specified sprite_coord_enable mask
|
||||
*/
|
||||
static inline bool
|
||||
ir3_point_sprite(const struct ir3_shader_variant *fs, int i,
|
||||
uint32_t sprite_coord_enable, bool *coord_mode)
|
||||
{
|
||||
gl_varying_slot slot = fs->inputs[i].slot;
|
||||
(void)coord_mode; /* this will be used later */
|
||||
/* since we don't enable PIPE_CAP_TGSI_TEXCOORD: */
|
||||
if (slot >= VARYING_SLOT_VAR0) {
|
||||
unsigned texmask = 1 << (slot - VARYING_SLOT_VAR0);
|
||||
return !!(sprite_coord_enable & texmask);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* IR3_GALLIUM_H_ */
|
||||
|
|
Loading…
Reference in New Issue