mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-15 00:10:25 +01:00
lima: set uniforms_address lower bits properly
Looks like blob uses following values for uniforms buffer:
0 for 8 bytes
1 for 16 bytes
2 for 24 bytes
2 for 32 bytes
3 for 40 bytes
3 for 48 bytes
3 for 56 bytes
3 for 64 bytes
4 for 72 bytes
It all looks like log2(size / 8) rounded up, so let's do the same.
Fixes: 931fc2a7b3f9("lima: do not set the PP uniforms address lowest bits")
Reviewed-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
This commit is contained in:
parent
3f92d17894
commit
336b021d36
1 changed files with 8 additions and 0 deletions
|
|
@ -1086,6 +1086,14 @@ lima_pack_render_state(struct lima_context *ctx, const struct pipe_draw_info *in
|
|||
if (ctx->const_buffer[PIPE_SHADER_FRAGMENT].buffer) {
|
||||
render->uniforms_address =
|
||||
lima_ctx_buff_va(ctx, lima_ctx_buff_pp_uniform_array, LIMA_CTX_BUFF_SUBMIT_PP);
|
||||
uint32_t size = ctx->buffer_state[lima_ctx_buff_pp_uniform].size;
|
||||
uint32_t bits = 0;
|
||||
if (size >= 8) {
|
||||
bits = util_last_bit(size >> 3) - 1;
|
||||
bits += size & u_bit_consecutive(0, bits + 3) ? 1 : 0;
|
||||
}
|
||||
render->uniforms_address |= bits > 0xf ? 0xf : bits;
|
||||
|
||||
render->aux0 |= 0x80;
|
||||
render->aux1 |= 0x10000;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue