From 4593c6053aba2dc6cc8d094f4f93255addc0a1a3 Mon Sep 17 00:00:00 2001 From: espes Date: Sat, 17 Oct 2015 14:44:46 +1100 Subject: [PATCH] mask out write combined bit in context surfaces offsets --- hw/xbox/nv2a.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hw/xbox/nv2a.c b/hw/xbox/nv2a.c index 82969bba16..2a1c1e7afd 100644 --- a/hw/xbox/nv2a.c +++ b/hw/xbox/nv2a.c @@ -1947,6 +1947,9 @@ static void *nv_dma_map(NV2AState *d, hwaddr dma_obj_address, hwaddr *len) /* TODO: Handle targets and classes properly */ NV2A_DPRINTF("dma_map %x, %x, %" HWADDR_PRIx " %" HWADDR_PRIx "\n", dma.dma_class, dma.dma_target, dma.address, dma.limit); + + dma.address &= 0x07FFFFFF; + // assert(dma.address + dma.limit < memory_region_size(d->vram)); *len = dma.limit; return d->vram_ptr + dma.address; @@ -4004,10 +4007,10 @@ static void pgraph_method(NV2AState *d, context_surfaces_2d->dest_pitch = parameter >> 16; break; case NV062_SET_OFFSET_SOURCE: - context_surfaces_2d->source_offset = parameter; + context_surfaces_2d->source_offset = parameter & 0x07FFFFFF; break; case NV062_SET_OFFSET_DESTIN: - context_surfaces_2d->dest_offset = parameter; + context_surfaces_2d->dest_offset = parameter & 0x07FFFFFF; break; case NV09F_SET_CONTEXT_SURFACES: