mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-21 15:10:21 +01:00
i965: Make intel_set_texture_region just take a BO and pitch.
I want to do this to get the region removed from DRI images. However, it does mean that we won't share the intel_region between the rb and the texture for texture_from_pixmap. I think that's fine. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
parent
c0bf5a7eff
commit
8435b60a35
1 changed files with 27 additions and 29 deletions
|
|
@ -201,22 +201,21 @@ intelTexImage(struct gl_context * ctx,
|
|||
|
||||
|
||||
/**
|
||||
* Binds a region to a texture image, like it was uploaded by glTexImage2D().
|
||||
* Binds a BO to a texture image, as if it was uploaded by glTexImage2D().
|
||||
*
|
||||
* Used for GLX_EXT_texture_from_pixmap and EGL image extensions,
|
||||
*/
|
||||
static void
|
||||
intel_set_texture_image_region(struct gl_context *ctx,
|
||||
struct gl_texture_image *image,
|
||||
struct intel_region *region,
|
||||
GLenum target,
|
||||
GLenum internalFormat,
|
||||
mesa_format format,
|
||||
uint32_t offset,
|
||||
GLuint width,
|
||||
GLuint height,
|
||||
GLuint tile_x,
|
||||
GLuint tile_y)
|
||||
intel_set_texture_image_bo(struct gl_context *ctx,
|
||||
struct gl_texture_image *image,
|
||||
drm_intel_bo *bo,
|
||||
GLenum target,
|
||||
GLenum internalFormat,
|
||||
mesa_format format,
|
||||
uint32_t offset,
|
||||
GLuint width, GLuint height,
|
||||
GLuint pitch,
|
||||
GLuint tile_x, GLuint tile_y)
|
||||
{
|
||||
struct brw_context *brw = brw_context(ctx);
|
||||
struct intel_texture_image *intel_image = intel_texture_image(image);
|
||||
|
|
@ -230,13 +229,10 @@ intel_set_texture_image_region(struct gl_context *ctx,
|
|||
|
||||
ctx->Driver.FreeTextureImageBuffer(ctx, image);
|
||||
|
||||
intel_image->mt = intel_miptree_create_layout(brw, target, image->TexFormat,
|
||||
0, 0,
|
||||
width, height, 1,
|
||||
true, 0 /* num_samples */);
|
||||
intel_image->mt = intel_miptree_create_for_bo(brw, bo, image->TexFormat,
|
||||
0, width, height, pitch);
|
||||
if (intel_image->mt == NULL)
|
||||
return;
|
||||
intel_region_reference(&intel_image->mt->region, region);
|
||||
intel_image->mt->total_width = width;
|
||||
intel_image->mt->total_height = height;
|
||||
intel_image->mt->level[0].slice[0].x_offset = tile_x;
|
||||
|
|
@ -258,8 +254,8 @@ intel_set_texture_image_region(struct gl_context *ctx,
|
|||
intel_texobj->needs_validate = true;
|
||||
|
||||
intel_image->mt->offset = offset;
|
||||
assert(region->pitch % region->cpp == 0);
|
||||
intel_image->base.RowStride = region->pitch / region->cpp;
|
||||
assert(pitch % intel_image->mt->region->cpp == 0);
|
||||
intel_image->base.RowStride = pitch / intel_image->mt->region->cpp;
|
||||
|
||||
/* Immediately validate the image to the object. */
|
||||
intel_miptree_reference(&intel_texobj->mt, intel_image->mt);
|
||||
|
|
@ -312,11 +308,12 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
|
|||
_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_region(ctx, texImage, rb->mt->region, target,
|
||||
internalFormat, texFormat, 0,
|
||||
rb->mt->region->width,
|
||||
rb->mt->region->height,
|
||||
0, 0);
|
||||
intel_set_texture_image_bo(ctx, texImage, rb->mt->region->bo, target,
|
||||
internalFormat, texFormat, 0,
|
||||
rb->mt->region->width,
|
||||
rb->mt->region->height,
|
||||
rb->mt->region->pitch,
|
||||
0, 0);
|
||||
_mesa_unlock_texture(&brw->ctx, texObj);
|
||||
}
|
||||
|
||||
|
|
@ -406,11 +403,12 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target,
|
|||
return;
|
||||
}
|
||||
|
||||
intel_set_texture_image_region(ctx, texImage, image->region,
|
||||
target, image->internal_format,
|
||||
image->format, image->offset,
|
||||
image->width, image->height,
|
||||
image->tile_x, image->tile_y);
|
||||
intel_set_texture_image_bo(ctx, texImage, image->region->bo,
|
||||
target, image->internal_format,
|
||||
image->format, image->offset,
|
||||
image->width, image->height,
|
||||
image->region->pitch,
|
||||
image->tile_x, image->tile_y);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue