Nothing actually needs the pointer to the memory object so it's better
to not even include it.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
*offset_B = ALIGN_POT(*offset_B, plane->nil.align_B);
if (mem->dedicated_image_plane == plane) {
assert(*offset_B == 0);
- plane->mem = mem;
- plane->offset = 0;
+ plane->addr = mem->bo->offset;
} else if (plane->internal != NULL) {
- plane->mem = plane->internal;
- plane->offset = 0;
+ plane->addr = plane->internal->bo->offset;
} else {
- plane->mem = mem;
- plane->offset = *offset_B;
+ plane->addr = mem->bo->offset + *offset_B;
}
*offset_B += plane->nil.size_B;
}
nvk_get_image_format_features(struct nvk_physical_device *pdevice,
VkFormat format, VkImageTiling tiling);
-
struct nvk_image_plane {
struct nil_image nil;
- struct nvk_device_memory *mem;
- VkDeviceSize offset;
+ uint64_t addr;
/* Used for internal dedicated allocations */
struct nvk_device_memory *internal;
};
+
struct nvk_image {
struct vk_image vk;
static inline uint64_t
nvk_image_plane_base_address(const struct nvk_image_plane *plane)
{
- return plane->mem->bo->offset + plane->offset;
+ return plane->addr;
}
static inline uint64_t