st/nine: Don't call u_box_union_* when dirty region is empty
When dirty region is empty, u_box_union_* incorrectly expands the new region. This fixes broken font rendering issue in WOLF RPG Editor v2.10 games. Signed-off-by: Masanori Kakura <kakurasan@gmail.com> Reviewed-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
parent
a5f0cdb36f
commit
9b5f5de9e9
|
@ -285,10 +285,14 @@ NineCubeTexture9_AddDirtyRect( struct NineCubeTexture9 *This,
|
|||
This->base.base.info.height0,
|
||||
&This->dirty_rect[FaceType]);
|
||||
} else {
|
||||
struct pipe_box box;
|
||||
rect_to_pipe_box_clamp(&box, pDirtyRect);
|
||||
u_box_union_2d(&This->dirty_rect[FaceType], &This->dirty_rect[FaceType],
|
||||
&box);
|
||||
if (This->dirty_rect[FaceType].width == 0) {
|
||||
rect_to_pipe_box_clamp(&This->dirty_rect[FaceType], pDirtyRect);
|
||||
} else {
|
||||
struct pipe_box box;
|
||||
rect_to_pipe_box_clamp(&box, pDirtyRect);
|
||||
u_box_union_2d(&This->dirty_rect[FaceType], &This->dirty_rect[FaceType],
|
||||
&box);
|
||||
}
|
||||
(void) u_box_clip_2d(&This->dirty_rect[FaceType],
|
||||
&This->dirty_rect[FaceType],
|
||||
This->base.base.info.width0,
|
||||
|
|
|
@ -330,9 +330,13 @@ NineTexture9_AddDirtyRect( struct NineTexture9 *This,
|
|||
u_box_origin_2d(This->base.base.info.width0,
|
||||
This->base.base.info.height0, &This->dirty_rect);
|
||||
} else {
|
||||
struct pipe_box box;
|
||||
rect_to_pipe_box_clamp(&box, pDirtyRect);
|
||||
u_box_union_2d(&This->dirty_rect, &This->dirty_rect, &box);
|
||||
if (This->dirty_rect.width == 0) {
|
||||
rect_to_pipe_box_clamp(&This->dirty_rect, pDirtyRect);
|
||||
} else {
|
||||
struct pipe_box box;
|
||||
rect_to_pipe_box_clamp(&box, pDirtyRect);
|
||||
u_box_union_2d(&This->dirty_rect, &This->dirty_rect, &box);
|
||||
}
|
||||
(void) u_box_clip_2d(&This->dirty_rect, &This->dirty_rect,
|
||||
This->base.base.info.width0,
|
||||
This->base.base.info.height0);
|
||||
|
|
|
@ -222,9 +222,13 @@ NineVolumeTexture9_AddDirtyBox( struct NineVolumeTexture9 *This,
|
|||
This->dirty_box.height = This->base.base.info.height0;
|
||||
This->dirty_box.depth = This->base.base.info.depth0;
|
||||
} else {
|
||||
struct pipe_box box;
|
||||
d3dbox_to_pipe_box(&box, pDirtyBox);
|
||||
u_box_union_3d(&This->dirty_box, &This->dirty_box, &box);
|
||||
if (This->dirty_box.width == 0) {
|
||||
d3dbox_to_pipe_box(&This->dirty_box, pDirtyBox);
|
||||
} else {
|
||||
struct pipe_box box;
|
||||
d3dbox_to_pipe_box(&box, pDirtyBox);
|
||||
u_box_union_3d(&This->dirty_box, &This->dirty_box, &box);
|
||||
}
|
||||
This->dirty_box.x = MAX2(This->dirty_box.x, 0);
|
||||
This->dirty_box.y = MAX2(This->dirty_box.y, 0);
|
||||
This->dirty_box.z = MAX2(This->dirty_box.z, 0);
|
||||
|
|
Loading…
Reference in New Issue