gallium/auxiliary/vl: Fix compute shader scale_y for interlaced videos
Signed-off-by: Thong Thai <thong.thai@amd.com>
Fixes: 494b7ef0c1
("gallium/auxiliary/vl: Fix compute shader scaling for non-square pixels")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5121>
This commit is contained in:
parent
fc06b8b7dc
commit
ef0d92459c
|
@ -328,6 +328,7 @@ set_yuv_layer(struct vl_compositor_state *s, struct vl_compositor *c,
|
|||
|
||||
assert(layer < VL_COMPOSITOR_MAX_LAYERS);
|
||||
|
||||
s->interlaced = buffer->interlaced;
|
||||
s->used_layers |= 1 << layer;
|
||||
sampler_views = buffer->get_sampler_view_components(buffer);
|
||||
for (i = 0; i < 3; ++i) {
|
||||
|
@ -435,7 +436,7 @@ vl_compositor_clear_layers(struct vl_compositor_state *s)
|
|||
unsigned i, j;
|
||||
|
||||
assert(s);
|
||||
|
||||
s->interlaced = false;
|
||||
s->used_layers = 0;
|
||||
for ( i = 0; i < VL_COMPOSITOR_MAX_LAYERS; ++i) {
|
||||
struct vertex4f v_one = { 1.0f, 1.0f, 1.0f, 1.0f };
|
||||
|
@ -551,6 +552,7 @@ vl_compositor_set_buffer_layer(struct vl_compositor_state *s,
|
|||
|
||||
assert(layer < VL_COMPOSITOR_MAX_LAYERS);
|
||||
|
||||
s->interlaced = buffer->interlaced;
|
||||
s->used_layers |= 1 << layer;
|
||||
sampler_views = buffer->get_sampler_view_components(buffer);
|
||||
for (i = 0; i < 3; ++i) {
|
||||
|
|
|
@ -97,6 +97,7 @@ struct vl_compositor_state
|
|||
|
||||
unsigned used_layers:VL_COMPOSITOR_MAX_LAYERS;
|
||||
struct vl_compositor_layer layers[VL_COMPOSITOR_MAX_LAYERS];
|
||||
bool interlaced;
|
||||
};
|
||||
|
||||
struct vl_compositor
|
||||
|
|
|
@ -713,7 +713,9 @@ draw_layers(struct vl_compositor *c,
|
|||
drawn.scale_x = layer->viewport.scale[0] /
|
||||
(float)layer->sampler_views[0]->texture->width0;
|
||||
drawn.scale_y = layer->viewport.scale[1] /
|
||||
(float)layer->sampler_views[0]->texture->height0;
|
||||
((float)layer->sampler_views[0]->texture->height0 *
|
||||
(s->interlaced ? 2.0 : 1.0));
|
||||
|
||||
drawn.translate_x = (int)layer->viewport.translate[0];
|
||||
drawn.translate_y = (int)layer->viewport.translate[1];
|
||||
drawn.sampler0_w = (float)layer->sampler_views[0]->texture->width0;
|
||||
|
|
Loading…
Reference in New Issue