From: Chad Versace Date: Mon, 23 May 2011 20:48:10 +0000 (-0700) Subject: intel: Refactor the wrapping of textures with renderbuffers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6ed829fe5063f61f1ab2fcb39a441e17d89e622c;p=mesa.git intel: Refactor the wrapping of textures with renderbuffers Before this commit, the renderbuffer's region was updated in intel_renderbuffer_texture(). This commit moves the update into intel_update_wrapper(), which is a more logical location for updates. This is in preparation for the next commit, which allocates and updates the texture's hiz region in intel_update_wrapper(). Having the two region updates located in the same function makes good form. Reviewed-by: Eric Anholt Signed-off-by: Chad Versace --- diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 05de2c8c6f1..61aba7d580f 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -420,6 +420,8 @@ static GLboolean intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb, struct gl_texture_image *texImage) { + struct intel_texture_image *intel_image = intel_texture_image(texImage); + if (!intel_span_supports_format(texImage->TexFormat)) { DBG("Render to texture BAD FORMAT %s\n", _mesa_get_format_name(texImage->TexFormat)); @@ -438,6 +440,12 @@ intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb, irb->Base.Delete = intel_delete_renderbuffer; irb->Base.AllocStorage = intel_nop_alloc_storage; + /* Point the renderbuffer's region to the texture's region. */ + if (irb->region != intel_image->mt->region) { + intel_region_release(&irb->region); + intel_region_reference(&irb->region, intel_image->mt->region); + } + return GL_TRUE; } @@ -543,13 +551,6 @@ intel_render_texture(struct gl_context * ctx, att->Texture->Name, newImage->Width, newImage->Height, irb->Base.RefCount); - /* point the renderbufer's region to the texture image region */ - if (irb->region != intel_image->mt->region) { - if (irb->region) - intel_region_release(&irb->region); - intel_region_reference(&irb->region, intel_image->mt->region); - } - intel_set_draw_offset_for_image(intel_image, att->Zoffset); intel_image->used_as_render_target = GL_TRUE;