diff --git a/.pick_status.json b/.pick_status.json index 558fbcb28e8..ea3c31f3c47 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4204,7 +4204,7 @@ "description": "pan/lib: emit high bits of buffer-size", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "4db7958edc4145acc7777534c1454bc300dea8be", "notes": null diff --git a/src/panfrost/lib/pan_texture.c b/src/panfrost/lib/pan_texture.c index e4c0988978d..68b291eeb34 100644 --- a/src/panfrost/lib/pan_texture.c +++ b/src/panfrost/lib/pan_texture.c @@ -1321,10 +1321,19 @@ GENX(pan_buffer_texture_emit)(const struct pan_buffer_view *bview, .raw = false, }; + uint64_t buffer_size = bview->width_el * stride; + pan_pack(out, BUFFER, cfg) { cfg.type = MALI_DESCRIPTOR_TYPE_BUFFER; cfg.buffer_type = MALI_BUFFER_TYPE_STRUCTURE; - cfg.size = bview->width_el * stride; + +#if PAN_ARCH >= 11 + cfg.size = buffer_size & BITFIELD_MASK(32); + cfg.size_hi = buffer_size >> 32; +#else + cfg.size = buffer_size; +#endif + cfg.address = bview->base; cfg.stride = stride; cfg.conversion = conv;