i965: Use intel_set_texture_image_mt() in intelSetTexBuffer2()

Create the mt for the drawable bo directly and call our new
intel_miptree_create_for_bo() helper instead.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chad Versace <chad.versace@intel.com>
This commit is contained in:
Kristian Høgsberg Kristensen 2016-05-09 17:02:45 -07:00
parent 40e9be4a5c
commit 8ceb7c7d9b
1 changed files with 15 additions and 12 deletions

View File

@ -225,8 +225,8 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
struct intel_renderbuffer *rb;
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
int level = 0, internalFormat = 0;
mesa_format texFormat = MESA_FORMAT_NONE;
struct intel_mipmap_tree *mt;
texObj = _mesa_get_current_tex_object(ctx, target);
@ -246,27 +246,30 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
if (rb->mt->cpp == 4) {
if (texture_format == __DRI_TEXTURE_FORMAT_RGB) {
internalFormat = GL_RGB;
texFormat = MESA_FORMAT_B8G8R8X8_UNORM;
}
else {
internalFormat = GL_RGBA;
texFormat = MESA_FORMAT_B8G8R8A8_UNORM;
}
} else if (rb->mt->cpp == 2) {
internalFormat = GL_RGB;
texFormat = MESA_FORMAT_B5G6R5_UNORM;
}
_mesa_lock_texture(&brw->ctx, texObj);
texImage = _mesa_get_tex_image(ctx, texObj, target, level);
intel_miptree_make_shareable(brw, rb->mt);
intel_set_texture_image_bo(ctx, texImage, rb->mt->bo, target,
internalFormat, texFormat, 0,
rb->Base.Base.Width,
rb->Base.Base.Height,
rb->mt->pitch,
0, 0, 0);
mt = intel_miptree_create_for_bo(brw, rb->mt->bo, texFormat, 0,
rb->Base.Base.Width,
rb->Base.Base.Height,
1, rb->mt->pitch, 0);
if (mt == NULL)
return;
mt->target = target;
mt->total_width = rb->Base.Base.Width;
mt->total_height = rb->Base.Base.Height;
_mesa_lock_texture(&brw->ctx, texObj);
texImage = _mesa_get_tex_image(ctx, texObj, target, 0);
intel_set_texture_image_mt(brw, texImage, mt);
intel_miptree_release(&mt);
_mesa_unlock_texture(&brw->ctx, texObj);
}