mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 19:00:13 +01:00
r300g: set the correct offset in a colorbuffer surface
Suggested by Joakim Sindholt. Also, put flushing of colorbuffers _before_ the framebuffer state setup, suggested by docs. Signed-off-by: Corbin Simpson <MostAwesomeDude@gmail.com>
This commit is contained in:
parent
ad96c0d851
commit
07190888bd
1 changed files with 9 additions and 8 deletions
|
|
@ -309,13 +309,20 @@ void r300_emit_fb_state(struct r300_context* r300,
|
|||
CS_LOCALS(r300);
|
||||
|
||||
BEGIN_CS((10 * fb->nr_cbufs) + (fb->zsbuf ? 10 : 0) + 4);
|
||||
OUT_CS_REG(R300_RB3D_DSTCACHE_CTLSTAT,
|
||||
R300_RB3D_DSTCACHE_CTLSTAT_DC_FREE_FREE_3D_TAGS |
|
||||
R300_RB3D_DSTCACHE_CTLSTAT_DC_FLUSH_FLUSH_DIRTY_3D);
|
||||
OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
|
||||
R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
|
||||
R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
|
||||
|
||||
for (i = 0; i < fb->nr_cbufs; i++) {
|
||||
surf = fb->cbufs[i];
|
||||
tex = (struct r300_texture*)surf->texture;
|
||||
assert(tex && tex->buffer && "cbuf is marked, but NULL!");
|
||||
|
||||
OUT_CS_REG_SEQ(R300_RB3D_COLOROFFSET0 + (4 * i), 1);
|
||||
OUT_CS_RELOC(tex->buffer, 0, 0, RADEON_GEM_DOMAIN_VRAM, 0);
|
||||
OUT_CS_RELOC(tex->buffer, surf->offset, 0, RADEON_GEM_DOMAIN_VRAM, 0);
|
||||
|
||||
OUT_CS_REG_SEQ(R300_RB3D_COLORPITCH0 + (4 * i), 1);
|
||||
OUT_CS_RELOC(tex->buffer, tex->pitch[surf->level] |
|
||||
|
|
@ -332,7 +339,7 @@ void r300_emit_fb_state(struct r300_context* r300,
|
|||
assert(tex && tex->buffer && "zsbuf is marked, but NULL!");
|
||||
|
||||
OUT_CS_REG_SEQ(R300_ZB_DEPTHOFFSET, 1);
|
||||
OUT_CS_RELOC(tex->buffer, 0, 0, RADEON_GEM_DOMAIN_VRAM, 0);
|
||||
OUT_CS_RELOC(tex->buffer, surf->offset, 0, RADEON_GEM_DOMAIN_VRAM, 0);
|
||||
|
||||
OUT_CS_REG(R300_ZB_FORMAT, r300_translate_zsformat(tex->tex.format));
|
||||
|
||||
|
|
@ -341,12 +348,6 @@ void r300_emit_fb_state(struct r300_context* r300,
|
|||
RADEON_GEM_DOMAIN_VRAM, 0);
|
||||
}
|
||||
|
||||
OUT_CS_REG(R300_RB3D_DSTCACHE_CTLSTAT,
|
||||
R300_RB3D_DSTCACHE_CTLSTAT_DC_FREE_FREE_3D_TAGS |
|
||||
R300_RB3D_DSTCACHE_CTLSTAT_DC_FLUSH_FLUSH_DIRTY_3D);
|
||||
OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
|
||||
R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
|
||||
R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
|
||||
END_CS;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue