mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 13:28:06 +02:00
pan/image: Get rid of pan_image_mem::offset
We can simply adjust pan_image_mem::base to take the memory offset into account. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Eric R. Smith <eric.smith@collabora.com> Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com> Acked-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Ryan Mckeever <ryan.mckeever@collabora.com> Reviewed-by: Olivia Lee <olivia.lee@collabora.com> Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34767>
This commit is contained in:
parent
2952c6d789
commit
97e0fdbd4d
9 changed files with 14 additions and 24 deletions
|
|
@ -3575,8 +3575,7 @@ panfrost_afbc_size(struct panfrost_batch *batch, struct panfrost_resource *src,
|
|||
|
||||
struct pan_image_slice_layout *slice = &src->image.layout.slices[level];
|
||||
struct panfrost_afbc_size_info consts = {
|
||||
.src =
|
||||
src->image.data.base + src->image.data.offset + slice->offset,
|
||||
.src = src->image.data.base + slice->offset,
|
||||
.metadata = metadata->ptr.gpu + offset,
|
||||
};
|
||||
|
||||
|
|
@ -3597,8 +3596,7 @@ panfrost_afbc_pack(struct panfrost_batch *batch, struct panfrost_resource *src,
|
|||
|
||||
struct pan_image_slice_layout *src_slice = &src->image.layout.slices[level];
|
||||
struct panfrost_afbc_pack_info consts = {
|
||||
.src = src->image.data.base + src->image.data.offset +
|
||||
src_slice->offset,
|
||||
.src = src->image.data.base + src_slice->offset,
|
||||
.dst = dst->ptr.gpu + dst_slice->offset,
|
||||
.metadata = metadata->ptr.gpu + metadata_offset,
|
||||
.header_size = dst_slice->afbc.header_size,
|
||||
|
|
|
|||
|
|
@ -1638,8 +1638,7 @@ GENX(csf_emit_write_timestamp)(struct panfrost_batch *batch,
|
|||
struct cs_builder *b = batch->csf.cs.builder;
|
||||
|
||||
struct cs_index address = cs_reg64(b, 40);
|
||||
cs_move64_to(b, address,
|
||||
dst->image.data.base + dst->image.data.offset + offset);
|
||||
cs_move64_to(b, address, dst->image.data.base + offset);
|
||||
cs_store_state(b, address, 0, MALI_CS_STATE_TIMESTAMP, cs_now());
|
||||
|
||||
panfrost_batch_write_rsrc(batch, dst, PIPE_SHADER_VERTEX);
|
||||
|
|
|
|||
|
|
@ -1027,7 +1027,7 @@ GENX(jm_emit_write_timestamp)(struct panfrost_batch *batch,
|
|||
struct pan_ptr job = pan_pool_alloc_desc(&batch->pool.base, WRITE_VALUE_JOB);
|
||||
|
||||
pan_section_pack(job.cpu, WRITE_VALUE_JOB, PAYLOAD, cfg) {
|
||||
cfg.address = dst->image.data.base + dst->image.data.offset + offset;
|
||||
cfg.address = dst->image.data.base + offset;
|
||||
cfg.type = MALI_WRITE_VALUE_TYPE_SYSTEM_TIMESTAMP;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -309,8 +309,7 @@ pan_prepare_crc(const struct pan_fb_info *fb, int rt_crc,
|
|||
const struct pan_image_slice_layout *slice =
|
||||
&image->layout.slices[rt->first_level];
|
||||
|
||||
ext->crc_base =
|
||||
image->data.base + image->data.offset + slice->crc.offset;
|
||||
ext->crc_base = image->data.base + slice->crc.offset;
|
||||
ext->crc_row_stride = slice->crc.stride;
|
||||
|
||||
#if PAN_ARCH >= 7
|
||||
|
|
@ -1097,8 +1096,7 @@ GENX(pan_emit_fbd)(const struct pan_fb_info *fb, unsigned layer_idx,
|
|||
&image->layout.slices[level];
|
||||
|
||||
cfg.crc_buffer.row_stride = slice->crc.stride;
|
||||
cfg.crc_buffer.base =
|
||||
image->data.base + image->data.offset + slice->crc.offset;
|
||||
cfg.crc_buffer.base = image->data.base + slice->crc.offset;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ extern "C" {
|
|||
|
||||
struct pan_image_mem {
|
||||
uint64_t base;
|
||||
unsigned offset;
|
||||
};
|
||||
|
||||
struct pan_image {
|
||||
|
|
@ -188,7 +187,7 @@ pan_iview_get_surface(const struct pan_image_view *iview, unsigned level,
|
|||
|
||||
bool is_3d = image->layout.dim == MALI_TEXTURE_DIMENSION_3D;
|
||||
const struct pan_image_slice_layout *slice = &image->layout.slices[level];
|
||||
uint64_t base = image->data.base + image->data.offset;
|
||||
uint64_t base = image->data.base;
|
||||
|
||||
memset(surf, 0, sizeof(*surf));
|
||||
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ get_image_section_info(const struct pan_image_view *iview,
|
|||
{
|
||||
const struct util_format_description *desc =
|
||||
util_format_description(iview->format);
|
||||
uint64_t base = plane->data.base + plane->data.offset;
|
||||
uint64_t base = plane->data.base;
|
||||
struct pan_image_section_info info = {0};
|
||||
|
||||
if (iview->buf.size) {
|
||||
|
|
|
|||
|
|
@ -541,8 +541,7 @@ static void
|
|||
panvk_image_plane_bind(struct pan_image *plane, struct pan_kmod_bo *bo,
|
||||
uint64_t base, uint64_t offset)
|
||||
{
|
||||
plane->data.base = base;
|
||||
plane->data.offset = offset;
|
||||
plane->data.base = base + offset;
|
||||
/* Reset the AFBC headers */
|
||||
if (drm_is_afbc(plane->layout.modifier)) {
|
||||
/* Transient CPU mapping */
|
||||
|
|
@ -555,7 +554,7 @@ panvk_image_plane_bind(struct pan_image *plane, struct pan_kmod_bo *bo,
|
|||
layer++) {
|
||||
for (unsigned level = 0; level < plane->layout.nr_slices;
|
||||
level++) {
|
||||
void *header = bo_base + plane->data.offset +
|
||||
void *header = bo_base + offset +
|
||||
(layer * plane->layout.array_stride) +
|
||||
plane->layout.slices[level].offset;
|
||||
memset(header, 0,
|
||||
|
|
@ -589,8 +588,7 @@ panvk_BindImageMemory2(VkDevice device, uint32_t bindInfoCount,
|
|||
|
||||
image->bo = pan_kmod_bo_get(wsi_image->bo);
|
||||
panvk_image_plane_bind(&image->planes[0], image->bo,
|
||||
wsi_image->planes[0].data.base,
|
||||
wsi_image->planes[0].data.offset);
|
||||
wsi_image->planes[0].data.base, 0);
|
||||
} else {
|
||||
VK_FROM_HANDLE(panvk_device_memory, mem, pBindInfos[i].memory);
|
||||
assert(mem);
|
||||
|
|
|
|||
|
|
@ -61,7 +61,6 @@ panvk_per_arch(CreateBufferView)(VkDevice _device,
|
|||
struct pan_image plane = {
|
||||
.data = {
|
||||
.base = address,
|
||||
.offset = 0,
|
||||
},
|
||||
.layout = {
|
||||
.modifier = DRM_FORMAT_MOD_LINEAR,
|
||||
|
|
|
|||
|
|
@ -243,10 +243,9 @@ prepare_attr_buf_descs(struct panvk_image_view *view)
|
|||
const struct pan_image_layout *plane_layout =
|
||||
&image->planes[plane_idx].layout;
|
||||
bool is_3d = plane_layout->dim == MALI_TEXTURE_DIMENSION_3D;
|
||||
unsigned offset = image->planes[plane_idx].data.offset;
|
||||
offset += pan_image_surface_offset(plane_layout, view->pview.first_level,
|
||||
is_3d ? 0 : view->pview.first_layer,
|
||||
is_3d ? view->pview.first_layer : 0);
|
||||
unsigned offset = pan_image_surface_offset(
|
||||
plane_layout, view->pview.first_level,
|
||||
is_3d ? 0 : view->pview.first_layer, is_3d ? view->pview.first_layer : 0);
|
||||
|
||||
pan_pack(&view->descs.img_attrib_buf[0], ATTRIBUTE_BUFFER, cfg) {
|
||||
/* The format is the only thing we lack to emit attribute descriptors
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue