diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c index 84b6e8dfa1f..3f26ece0c11 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c @@ -500,6 +500,10 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws, uint64_t size, unsigned request.flags |= AMDGPU_GEM_CREATE_VM_ALWAYS_VALID; } } + /* Set AMDGPU_GEM_CREATE_VIRTIO_SHARED if the driver didn't disable buffer sharing. */ + if (ws->info.is_virtio && (initial_domain & RADEON_DOMAIN_VRAM_GTT) && + (flags & RADEON_FLAG_NO_INTERPROCESS_SHARING) == 0) + request.flags |= AMDGPU_GEM_CREATE_VIRTIO_SHARED; if (initial_domain & RADEON_DOMAIN_VRAM) { if (ws->zero_all_vram_allocs || (flags & RADEON_FLAG_ZERO_VRAM)) request.flags |= AMDGPU_GEM_CREATE_VRAM_CLEARED; diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c index 6a6a11930c1..c4d64f8057f 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c @@ -648,6 +648,11 @@ static struct amdgpu_winsys_bo *amdgpu_create_bo(struct amdgpu_winsys *aws, if (flags & RADEON_FLAG_GFX12_ALLOW_DCC) request.flags |= AMDGPU_GEM_CREATE_GFX12_DCC; + /* Set AMDGPU_GEM_CREATE_VIRTIO_SHARED if the driver didn't disable buffer sharing. */ + if (aws->info.is_virtio && (initial_domain & RADEON_DOMAIN_VRAM_GTT) && + (flags & (RADEON_FLAG_DRIVER_INTERNAL | RADEON_FLAG_NO_INTERPROCESS_SHARING)) == 0) + request.flags |= AMDGPU_GEM_CREATE_VIRTIO_SHARED; + r = ac_drm_bo_alloc(aws->dev, &request, &buf_handle); if (r) { fprintf(stderr, "amdgpu: Failed to allocate a buffer:\n");