52 lines
1.8 KiB
Diff
52 lines
1.8 KiB
Diff
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
|
|
index 3601eca..3a56595 100644
|
|
--- a/src/mesa/drivers/dri/intel/intel_context.c
|
|
+++ b/src/mesa/drivers/dri/intel/intel_context.c
|
|
@@ -674,6 +674,31 @@ intelDestroyContext(__DRIcontextPrivate * driContextPriv)
|
|
fprintf(stderr, "do something to free texture heaps\n");
|
|
}
|
|
|
|
+ if (!driContextPriv->driScreenPriv->dri2.enabled && intel->driDrawable) {
|
|
+ struct intel_framebuffer *intel_fb =
|
|
+ (struct intel_framebuffer *) intel->driDrawable->driverPrivate;
|
|
+ struct intel_renderbuffer *irbDepth =
|
|
+ intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH);
|
|
+ struct intel_renderbuffer *irbStencil =
|
|
+ intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL);
|
|
+
|
|
+ if (intel_fb->color_rb[0]) {
|
|
+ intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL);
|
|
+ }
|
|
+
|
|
+ if (intel_fb->color_rb[1]) {
|
|
+ intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL);
|
|
+ }
|
|
+
|
|
+ if (irbDepth) {
|
|
+ intel_renderbuffer_set_region(irbDepth, NULL);
|
|
+ }
|
|
+
|
|
+ if (irbStencil) {
|
|
+ intel_renderbuffer_set_region(irbStencil, NULL);
|
|
+ }
|
|
+ }
|
|
+
|
|
intel_region_release(&intel->front_region);
|
|
intel_region_release(&intel->back_region);
|
|
intel_region_release(&intel->third_region);
|
|
diff --git a/src/mesa/drivers/dri/intel/intel_regions.c b/src/mesa/drivers/dri/intel/intel_regions.c
|
|
index bbbaf3e..2eb393a 100644
|
|
--- a/src/mesa/drivers/dri/intel/intel_regions.c
|
|
+++ b/src/mesa/drivers/dri/intel/intel_regions.c
|
|
@@ -166,8 +166,9 @@ intel_region_reference(struct intel_region **dst, struct intel_region *src)
|
|
assert(*dst == NULL);
|
|
if (src) {
|
|
src->refcount++;
|
|
- *dst = src;
|
|
}
|
|
+
|
|
+ *dst = src;
|
|
}
|
|
|
|
void
|