From ddb6f1d2d138109b5716baf4d77683d5bf6cffc8 Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Tue, 13 Dec 2016 01:10:15 +0100 Subject: [PATCH] st/nine: SYSTEMMEM ignores DISCARD. Tests show SYSTEMMEM should ignore DISCARD. Prevents game bugs with following patches reimplementing DISCARD. Halo is affected. Signed-off-by: Axel Davy --- src/gallium/state_trackers/nine/buffer9.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/state_trackers/nine/buffer9.c b/src/gallium/state_trackers/nine/buffer9.c index 726408a..e497222 100644 --- a/src/gallium/state_trackers/nine/buffer9.c +++ b/src/gallium/state_trackers/nine/buffer9.c @@ -225,7 +225,11 @@ NineBuffer9_Lock( struct NineBuffer9 *This, * D3DERR_WASSTILLDRAWING if the resource is in use, except for DYNAMIC. * Our tests: some apps do use both DISCARD and NOOVERWRITE at the same * time. On windows it seems to return different pointer, thus indicating - * DISCARD is taken into account. */ + * DISCARD is taken into account. + * Our tests: SYSTEMMEM doesn't DISCARD */ + + if (This->base.pool == D3DPOOL_SYSTEMMEM) + Flags &= ~D3DLOCK_DISCARD; if (Flags & D3DLOCK_DISCARD) usage = PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE; -- 2.7.4