mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
gallium/util: add half texel offset param to util_compute_blit
Fixes an issue where the video image is blurry after blitting. Fixes:c5088b4972("gallium: Fix VAAPI postproc blit") Signed-off-by: Thong Thai <thong.thai@amd.com> Reviewed-by: Leo Liu <leo.liu@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12251> (cherry picked from commit5dace8e0fb)
This commit is contained in:
parent
94acf7bfaf
commit
50c6394450
3 changed files with 6 additions and 5 deletions
|
|
@ -544,7 +544,7 @@
|
|||
"description": "gallium/util: add half texel offset param to util_compute_blit",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "c5088b497290ba1207085899ec635ef851635267"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ static void *blit_compute_shader(struct pipe_context *ctx)
|
|||
}
|
||||
|
||||
void util_compute_blit(struct pipe_context *ctx, struct pipe_blit_info *blit_info,
|
||||
void **compute_state)
|
||||
void **compute_state, bool half_texel_offset)
|
||||
{
|
||||
if (blit_info->src.box.width == 0 || blit_info->src.box.height == 0 ||
|
||||
blit_info->dst.box.width == 0 || blit_info->dst.box.height == 0)
|
||||
|
|
@ -91,9 +91,10 @@ void util_compute_blit(struct pipe_context *ctx, struct pipe_blit_info *blit_inf
|
|||
float x_scale = blit_info->src.box.width / (float)blit_info->dst.box.width;
|
||||
float y_scale = blit_info->src.box.height / (float)blit_info->dst.box.height;
|
||||
float z_scale = blit_info->src.box.depth / (float)blit_info->dst.box.depth;
|
||||
float offset = half_texel_offset ? 0.5 : 0.0;
|
||||
|
||||
unsigned data[] = {u_bitcast_f2u(blit_info->src.box.x / (float)src->width0),
|
||||
u_bitcast_f2u(blit_info->src.box.y / (float)src->height0),
|
||||
unsigned data[] = {u_bitcast_f2u((blit_info->src.box.x + offset) / (float)src->width0),
|
||||
u_bitcast_f2u((blit_info->src.box.y + offset) / (float)src->height0),
|
||||
u_bitcast_f2u(blit_info->src.box.z),
|
||||
u_bitcast_f2u(0),
|
||||
u_bitcast_f2u(x_scale / src->width0),
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
void util_compute_blit(struct pipe_context *ctx, struct pipe_blit_info *blit_info,
|
||||
void **compute_state);
|
||||
void **compute_state, bool half_texel_offset);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue