radeon/r300: don't flush cmdbuf if not necessary

This commit is contained in:
Maciej Cencora 2009-11-11 13:50:06 +01:00
parent 286bf89e5a
commit d3fa67c9b8
2 changed files with 19 additions and 3 deletions

View file

@ -270,7 +270,11 @@ static void r300DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj)
if (rmesa) {
int i;
radeon_firevertices(&rmesa->radeon);
struct radeon_bo *bo;
bo = !t->mt ? t->bo : t->mt->bo;
if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->radeon.cmdbuf.cs)) {
radeon_firevertices(&rmesa->radeon);
}
for(i = 0; i < R300_MAX_TEXTURE_UNITS; ++i)
if (rmesa->hw.textures[i] == t)

View file

@ -534,7 +534,13 @@ static void radeon_teximage(
GLuint texelBytes;
GLuint face = radeon_face_for_target(target);
radeon_firevertices(rmesa);
{
struct radeon_bo *bo;
bo = !image->mt ? image->bo : image->mt->bo;
if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {
radeon_firevertices(rmesa);
}
}
t->validated = GL_FALSE;
@ -731,7 +737,13 @@ static void radeon_texsubimage(GLcontext* ctx, int dims, GLenum target, int leve
radeonTexObj* t = radeon_tex_obj(texObj);
radeon_texture_image* image = get_radeon_texture_image(texImage);
radeon_firevertices(rmesa);
{
struct radeon_bo *bo;
bo = !image->mt ? image->bo : image->mt->bo;
if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {
radeon_firevertices(rmesa);
}
}
t->validated = GL_FALSE;
if (compressed) {