diff options
Diffstat (limited to 'src/mesa/drivers/dri/intel')
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_context.c | 8 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_fbo.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_regions.c | 16 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_regions.h | 10 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_screen.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_screen.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_tex_image.c | 8 |
8 files changed, 35 insertions, 23 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 7065bb35ee..2ca5732606 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -233,6 +233,9 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable) &count, drawable->loaderPrivate); + if (buffers == NULL) + return; + drawable->x = 0; drawable->y = 0; drawable->backX = 0; @@ -298,8 +301,9 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable) } else region = intel_region_alloc_for_handle(intel, buffers[i].cpp, - buffers[i].pitch / buffers[i].cpp, + drawable->w, drawable->h, + buffers[i].pitch / buffers[i].cpp, buffers[i].name, region_name); @@ -818,8 +822,6 @@ intelDestroyContext(__DRIcontextPrivate * driContextPriv) /* free the Mesa context */ _mesa_free_context_data(&intel->ctx); - - dri_bufmgr_destroy(intel->bufmgr); } } diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 5bd2ebfdcf..6570f6e69b 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -296,7 +296,7 @@ intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb, DBG("Allocating %d x %d Intel RBO (pitch %d)\n", width, height, pitch); - irb->region = intel_region_alloc(intel, cpp, pitch, height); + irb->region = intel_region_alloc(intel, cpp, width, height, pitch); if (!irb->region) return GL_FALSE; /* out of memory? */ diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c index 9be7e02eff..f28fac8394 100644 --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c @@ -117,7 +117,10 @@ intel_miptree_create(struct intel_context *intel, return NULL; mt->region = intel_region_alloc(intel, - mt->cpp, mt->pitch, mt->total_height); + mt->cpp, + mt->pitch, + mt->total_height, + mt->pitch); if (!mt->region) { free(mt); @@ -141,7 +144,7 @@ intel_miptree_create_for_region(struct intel_context *intel, mt = intel_miptree_create_internal(intel, target, internal_format, first_level, last_level, - region->pitch, region->height, depth0, + region->width, region->height, 1, region->cpp, compress_byte); if (!mt) return mt; diff --git a/src/mesa/drivers/dri/intel/intel_regions.c b/src/mesa/drivers/dri/intel/intel_regions.c index 1cfc8ddd64..cb0f4ba083 100644 --- a/src/mesa/drivers/dri/intel/intel_regions.c +++ b/src/mesa/drivers/dri/intel/intel_regions.c @@ -105,7 +105,8 @@ intel_set_region_tiling_gem(struct intel_context *intel, static struct intel_region * intel_region_alloc_internal(struct intel_context *intel, - GLuint cpp, GLuint pitch, GLuint height, + GLuint cpp, + GLuint width, GLuint height, GLuint pitch, dri_bo *buffer) { struct intel_region *region; @@ -117,8 +118,9 @@ intel_region_alloc_internal(struct intel_context *intel, region = calloc(sizeof(*region), 1); region->cpp = cpp; + region->width = width; + region->height = height; region->pitch = pitch; - region->height = height; /* needed? */ region->refcount = 1; region->buffer = buffer; @@ -131,19 +133,20 @@ intel_region_alloc_internal(struct intel_context *intel, struct intel_region * intel_region_alloc(struct intel_context *intel, - GLuint cpp, GLuint pitch, GLuint height) + GLuint cpp, GLuint width, GLuint height, GLuint pitch) { dri_bo *buffer; buffer = dri_bo_alloc(intel->bufmgr, "region", pitch * cpp * height, 64); - return intel_region_alloc_internal(intel, cpp, pitch, height, buffer); + return intel_region_alloc_internal(intel, cpp, width, height, pitch, buffer); } struct intel_region * intel_region_alloc_for_handle(struct intel_context *intel, - GLuint cpp, GLuint pitch, GLuint height, + GLuint cpp, + GLuint width, GLuint height, GLuint pitch, GLuint handle, const char *name) { struct intel_region *region; @@ -151,7 +154,8 @@ intel_region_alloc_for_handle(struct intel_context *intel, buffer = intel_bo_gem_create_from_name(intel->bufmgr, name, handle); - region = intel_region_alloc_internal(intel, cpp, pitch, height, buffer); + region = intel_region_alloc_internal(intel, cpp, + width, height, pitch, buffer); if (region == NULL) return region; diff --git a/src/mesa/drivers/dri/intel/intel_regions.h b/src/mesa/drivers/dri/intel/intel_regions.h index a561de485e..62eb049fba 100644 --- a/src/mesa/drivers/dri/intel/intel_regions.h +++ b/src/mesa/drivers/dri/intel/intel_regions.h @@ -55,8 +55,9 @@ struct intel_region dri_bo *buffer; /**< buffer manager's buffer */ GLuint refcount; /**< Reference count for region */ GLuint cpp; /**< bytes per pixel */ - GLuint pitch; /**< in pixels */ + GLuint width; /**< in pixels */ GLuint height; /**< in pixels */ + GLuint pitch; /**< in pixels */ GLubyte *map; /**< only non-NULL when region is actually mapped */ GLuint map_refcount; /**< Reference count for mapping */ @@ -72,12 +73,13 @@ struct intel_region * copied by calling intel_reference_region(). */ struct intel_region *intel_region_alloc(struct intel_context *intel, - GLuint cpp, - GLuint pitch, GLuint height); + GLuint cpp, GLuint width, + GLuint height, GLuint pitch); struct intel_region * intel_region_alloc_for_handle(struct intel_context *intel, - GLuint cpp, GLuint pitch, GLuint height, + GLuint cpp, + GLuint width, GLuint height, GLuint pitch, unsigned int handle, const char *name); void intel_region_reference(struct intel_region **dst, diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 1de1ac49ea..373e0e155e 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -298,11 +298,6 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv) &intelScreen->irq_active)) return GL_FALSE; - /* Determine if batchbuffers are allowed */ - if (!intel_get_param(sPriv, I915_PARAM_ALLOW_BATCHBUFFER, - &intelScreen->allow_batchbuffer)) - return GL_FALSE; - sPriv->extensions = intelScreenExtensions; return GL_TRUE; @@ -314,6 +309,7 @@ intelDestroyScreen(__DRIscreenPrivate * sPriv) { intelScreenPrivate *intelScreen = (intelScreenPrivate *) sPriv->private; + dri_bufmgr_destroy(intelScreen->bufmgr); intelUnmapScreenRegions(intelScreen); FREE(intelScreen); diff --git a/src/mesa/drivers/dri/intel/intel_screen.h b/src/mesa/drivers/dri/intel/intel_screen.h index daf2ab4c58..fc913da5bf 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.h +++ b/src/mesa/drivers/dri/intel/intel_screen.h @@ -74,7 +74,6 @@ typedef struct int drmMinor; int irq_active; - int allow_batchbuffer; GLboolean no_hw; diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index d1f540b0f1..1820d3dc05 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -733,6 +733,12 @@ intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv) intel_update_renderbuffers(pDRICtx, dPriv); rb = intel_fb->color_rb[0]; + /* If the region isn't set, then intel_update_renderbuffers was unable + * to get the buffers for the drawable. + */ + if (rb->region == NULL) + return; + type = GL_BGRA; format = GL_UNSIGNED_BYTE; internalFormat = (rb->region->cpp == 3 ? 3 : 4); @@ -751,7 +757,7 @@ intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv) intelObj->mt = mt; texImage = _mesa_get_tex_image(&intel->ctx, texObj, target, level); _mesa_init_teximage_fields(&intel->ctx, target, texImage, - rb->region->pitch, rb->region->height, 1, + rb->region->width, rb->region->height, 1, 0, internalFormat); intelImage = intel_texture_image(texImage); |