iris,anv: simplify and inline sampler count calculations

Use the CLAMP macro to clamp the value and simplify the sampler count
encoding.

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30922>
This commit is contained in:
Rohan Garg
2024-08-29 12:56:03 +02:00
committed by Marge Bot
parent 32f606486f
commit 51e05c2844
2 changed files with 5 additions and 9 deletions

View File

@@ -4948,17 +4948,15 @@ iris_populate_cs_key(const struct iris_context *ice,
{
}
static uint32_t
static inline uint32_t
encode_sampler_count(const struct iris_compiled_shader *shader)
{
uint32_t count = util_last_bit64(shader->bt.samplers_used_mask);
uint32_t count_by_4 = DIV_ROUND_UP(count, 4);
/* We can potentially have way more than 32 samplers and that's ok.
* However, the 3DSTATE_XS packets only have 3 bits to specify how
* many to pre-fetch and all values above 4 are marked reserved.
*/
return MIN2(count_by_4, 4);
uint32_t count = util_last_bit64(shader->bt.samplers_used_mask);
return DIV_ROUND_UP(CLAMP(count, 0, 16), 4);
}
#define INIT_THREAD_DISPATCH_FIELDS(pkt, prefix, stage) \

View File

@@ -1157,16 +1157,14 @@ emit_3dstate_streamout(struct anv_graphics_pipeline *pipeline,
}
}
static uint32_t
static inline uint32_t
get_sampler_count(const struct anv_shader_bin *bin)
{
uint32_t count_by_4 = DIV_ROUND_UP(bin->bind_map.sampler_count, 4);
/* We can potentially have way more than 32 samplers and that's ok.
* However, the 3DSTATE_XS packets only have 3 bits to specify how
* many to pre-fetch and all values above 4 are marked reserved.
*/
return MIN2(count_by_4, 4);
return DIV_ROUND_UP(CLAMP(bin->bind_map.sampler_count, 0, 16), 4);
}
static UNUSED struct anv_address