Bug 1782405 - Fix UV sampling rect for blurs with downscale-adjusted sizes r=gfx-reviewers,lsalzman

Differential Revision: https://phabricator.services.mozilla.com/D153314
This commit is contained in:
Glenn Watson 2022-08-01 20:02:12 +00:00
Родитель 940ea9d31a
Коммит 07bcbd6c5e
3 изменённых файлов: 10 добавлений и 1 удалений

Просмотреть файл

@ -3979,6 +3979,7 @@ struct SurfaceAllocInfo {
task_size: DeviceIntSize,
needs_scissor_rect: bool,
clipped: DeviceRect,
unclipped: DeviceRect,
clipped_local: PictureRect,
uv_rect_kind: UvRectKind,
}
@ -5343,6 +5344,13 @@ impl PicturePrimitive {
let cmd_buffer_index = frame_state.cmd_buffers.create_cmd_buffer();
// Since we (may have) adjusted the render task size for downscaling accuracy
// above, recalculate the uv rect for tasks that may sample from this blur output
let uv_rect_kind = calculate_uv_rect_kind(
DeviceRect::from_origin_and_size(surface_rects.clipped.min, adjusted_size.to_f32()),
surface_rects.unclipped,
);
let picture_task_id = frame_state.rg_builder.add().init(
RenderTask::new_dynamic(
adjusted_size,
@ -5359,7 +5367,7 @@ impl PicturePrimitive {
cmd_buffer_index,
can_use_shared_surface,
)
).with_uv_rect_kind(surface_rects.uv_rect_kind)
).with_uv_rect_kind(uv_rect_kind)
);
let blur_render_task_id = RenderTask::new_blur(
@ -7248,6 +7256,7 @@ fn get_surface_rects(
task_size,
needs_scissor_rect,
clipped,
unclipped,
clipped_local,
uv_rect_kind,
})

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 29 KiB

После

Ширина:  |  Высота:  |  Размер: 43 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 103 KiB

После

Ширина:  |  Высота:  |  Размер: 106 KiB