mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 22:20:14 +01:00
pvr: Fix packing issue with max_{x,y}_clip
The spec. guarantees the framebuffer width and height to be `> 0` but the same is not true for the render area. Previously a render area of `0` size would wrap around due to the `- 1` so we now check for `0`. Fixes: pvr_packet_helpers.h:79: __pvr_uint: Assertion `v <= max' failed. on dEQP-VK.api.pipeline.renderpass.framebuffer_compatible_renderpass Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com> Reviewed-by: Luigi Santivetti <luigi.santivetti@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24329>
This commit is contained in:
parent
670bd70fa6
commit
2c6cadb5ea
1 changed files with 10 additions and 8 deletions
|
|
@ -1017,16 +1017,18 @@ static void pvr_setup_pbe_state(
|
|||
break;
|
||||
}
|
||||
|
||||
#define PVR_DEC_IF_NOT_ZERO(_v) (((_v) > 0) ? (_v)-1 : 0)
|
||||
|
||||
render_params.min_x_clip = MAX2(0, render_area->offset.x);
|
||||
render_params.min_y_clip = MAX2(0, render_area->offset.y);
|
||||
render_params.max_x_clip =
|
||||
MIN2(framebuffer->width,
|
||||
render_area->offset.x + render_area->extent.width) -
|
||||
1;
|
||||
render_params.max_y_clip =
|
||||
MIN2(framebuffer->height,
|
||||
render_area->offset.y + render_area->extent.height) -
|
||||
1;
|
||||
render_params.max_x_clip = MIN2(
|
||||
framebuffer->width - 1,
|
||||
PVR_DEC_IF_NOT_ZERO(render_area->offset.x + render_area->extent.width));
|
||||
render_params.max_y_clip = MIN2(
|
||||
framebuffer->height - 1,
|
||||
PVR_DEC_IF_NOT_ZERO(render_area->offset.y + render_area->extent.height));
|
||||
|
||||
#undef PVR_DEC_IF_NOT_ZERO
|
||||
|
||||
render_params.slice = 0;
|
||||
render_params.mrt_index = mrt_index;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue