mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 03:48:06 +02:00
anv: use main image address to determine ccs compatibility
The BO address is not really a good criteria since we can bind an
image at an offset inside a BO.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: ee6e2bc4a3 ("anv: Place images into the aux-map when safe to do so")
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26335>
This commit is contained in:
parent
7c6faa1efe
commit
b09db9d823
2 changed files with 21 additions and 4 deletions
|
|
@ -2311,10 +2311,9 @@ VkResult anv_BindImageMemory2(
|
|||
continue;
|
||||
|
||||
/* Add the plane to the aux map when applicable. */
|
||||
if (anv_bo_allows_aux_map(device, bo)) {
|
||||
const struct anv_address main_addr =
|
||||
anv_image_address(image,
|
||||
&image->planes[p].primary_surface.memory_range);
|
||||
const struct anv_address main_addr = anv_image_address(
|
||||
image, &image->planes[p].primary_surface.memory_range);
|
||||
if (anv_address_allows_aux_map(device, main_addr)) {
|
||||
const struct anv_address aux_addr =
|
||||
anv_image_address(image,
|
||||
&image->planes[p].compr_ctrl_memory_range);
|
||||
|
|
|
|||
|
|
@ -5151,6 +5151,24 @@ anv_bo_allows_aux_map(const struct anv_device *device,
|
|||
return true;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
anv_address_allows_aux_map(const struct anv_device *device,
|
||||
struct anv_address addr)
|
||||
{
|
||||
if (device->aux_map_ctx == NULL)
|
||||
return false;
|
||||
|
||||
/* Technically, we really only care about what offset the image is bound
|
||||
* into on the BO, but we don't have that information here. As a heuristic,
|
||||
* rely on the BO offset instead.
|
||||
*/
|
||||
if (((addr.bo ? addr.bo->offset : 0) + addr.offset) %
|
||||
intel_aux_map_get_alignment(device->aux_map_ctx) != 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
anv_cmd_buffer_mark_image_written(struct anv_cmd_buffer *cmd_buffer,
|
||||
const struct anv_image *image,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue