Quellcode durchsuchen

radeon/r200/r300/r600: fix blit BO buffer validation

there is no need for these to be persistent since we flush the CS
at the end of the blit, and we don't reuse these buffers at all.

on my r600 the Wine DX9 test suite doesn't crash at least anymore.

Signed-off-by: Dave Airlie <airlied@redhat.com>
tags/7.8-rc1
Dave Airlie vor 15 Jahren
Ursprung
Commit
daf85c4608

+ 8
- 4
src/mesa/drivers/dri/r200/r200_blit.c Datei anzeigen

@@ -211,11 +211,15 @@ static GLboolean validate_buffers(struct r200_context *r200,
struct radeon_bo *dst_bo)
{
int ret;
radeon_cs_space_add_persistent_bo(r200->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);
ret = radeon_cs_space_check_with_bo(r200->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);
if (ret)
return GL_FALSE;

radeon_cs_space_add_persistent_bo(r200->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
ret = radeon_cs_space_check_with_bo(r200->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
if (ret)
return GL_FALSE;

ret = radeon_cs_space_check_with_bo(r200->radeon.cmdbuf.cs,
first_elem(&r200->radeon.dma.reserved)->bo,

+ 8
- 4
src/mesa/drivers/dri/r300/r300_blit.c Datei anzeigen

@@ -373,11 +373,15 @@ static GLboolean validate_buffers(struct r300_context *r300,
struct radeon_bo *dst_bo)
{
int ret;
radeon_cs_space_add_persistent_bo(r300->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);
ret = radeon_cs_space_check_with_bo(r300->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);
if (ret)
return GL_FALSE;

radeon_cs_space_add_persistent_bo(r300->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
ret = radeon_cs_space_check_with_bo(r300->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
if (ret)
return GL_FALSE;

ret = radeon_cs_space_check_with_bo(r300->radeon.cmdbuf.cs,
first_elem(&r300->radeon.dma.reserved)->bo,

+ 8
- 6
src/mesa/drivers/dri/r600/r600_blit.c Datei anzeigen

@@ -1532,14 +1532,16 @@ static GLboolean validate_buffers(context_t *rmesa,
struct radeon_bo *dst_bo)
{
int ret;
radeon_cs_space_add_persistent_bo(rmesa->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);

radeon_cs_space_add_persistent_bo(rmesa->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
ret = radeon_cs_space_check_with_bo(rmesa->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);
if (ret)
return GL_FALSE;

radeon_cs_space_add_persistent_bo(rmesa->radeon.cmdbuf.cs,
rmesa->blit_bo, RADEON_GEM_DOMAIN_GTT, 0);
ret = radeon_cs_space_check_with_bo(rmesa->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
if (ret)
return GL_FALSE;

ret = radeon_cs_space_check_with_bo(rmesa->radeon.cmdbuf.cs,
rmesa->blit_bo,

+ 8
- 4
src/mesa/drivers/dri/radeon/radeon_blit.c Datei anzeigen

@@ -204,11 +204,15 @@ static GLboolean validate_buffers(struct r100_context *r100,
struct radeon_bo *dst_bo)
{
int ret;
radeon_cs_space_add_persistent_bo(r100->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);
ret = radeon_cs_space_check_with_bo(r100->radeon.cmdbuf.cs,
src_bo, RADEON_GEM_DOMAIN_VRAM, 0);
if (ret)
return GL_FALSE;

radeon_cs_space_add_persistent_bo(r100->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
ret = radeon_cs_space_check_with_bo(r100->radeon.cmdbuf.cs,
dst_bo, 0, RADEON_GEM_DOMAIN_VRAM);
if (ret)
return GL_FALSE;

ret = radeon_cs_space_check_with_bo(r100->radeon.cmdbuf.cs,
first_elem(&r100->radeon.dma.reserved)->bo,

Laden…
Abbrechen
Speichern