---
 src/mesa/drivers/dri/i915/intel_context.c | 31 +++++++++++++++++++---------
 src/mesa/drivers/dri/i965/intel_context.c | 34 +++++++++++++++++++++----------
 2 files changed, 44 insertions(+), 21 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/intel_context.c 
b/src/mesa/drivers/dri/i915/intel_context.c
index f27e3d0..25a2832 100644
--- a/src/mesa/drivers/dri/i915/intel_context.c
+++ b/src/mesa/drivers/dri/i915/intel_context.c
@@ -804,24 +804,35 @@ intel_process_dri2_buffer(struct intel_context *intel,
     */
    if (rb->mt &&
        rb->mt->region &&
-       rb->mt->region->name == buffer->name)
+       rb->mt->region->name == buffer->name &&
+       rb->mt->region->name != 0)
       return;
 
    if (unlikely(INTEL_DEBUG & DEBUG_DRI)) {
       fprintf(stderr,
-             "attaching buffer %d, at %d, cpp %d, pitch %d\n",
+             "attaching buffer %d, at %d, cpp %d, pitch %d, fd %d\n",
              buffer->name, buffer->attachment,
-             buffer->cpp, buffer->pitch);
+             buffer->cpp, buffer->pitch, buffer->fd);
    }
 
    intel_miptree_release(&rb->mt);
-   region = intel_region_alloc_for_handle(intel->intelScreen,
-                                          buffer->cpp,
-                                          drawable->w,
-                                          drawable->h,
-                                          buffer->pitch,
-                                          buffer->name,
-                                          buffer_name);
+   if (buffer->name != 0) {
+      region = intel_region_alloc_for_handle(intel->intelScreen,
+                                             buffer->cpp,
+                                             drawable->w,
+                                             drawable->h,
+                                             buffer->pitch,
+                                             buffer->name,
+                                             buffer_name);
+   } else {
+      region = intel_region_alloc_for_fd(intel->intelScreen,
+                                         buffer->cpp,
+                                         drawable->w,
+                                         drawable->h,
+                                         buffer->pitch,
+                                         buffer->fd,
+                                         buffer_name);
+   }
    if (!region)
       return;
 
diff --git a/src/mesa/drivers/dri/i965/intel_context.c 
b/src/mesa/drivers/dri/i965/intel_context.c
index 742bcc3..e82cb7e 100644
--- a/src/mesa/drivers/dri/i965/intel_context.c
+++ b/src/mesa/drivers/dri/i965/intel_context.c
@@ -857,31 +857,43 @@ intel_process_dri2_buffer(struct brw_context *brw,
    if (num_samples == 0) {
        if (rb->mt &&
            rb->mt->region &&
-           rb->mt->region->name == buffer->name)
+           rb->mt->region->name == buffer->name &&
+           rb->mt->region->name != 0)
           return;
    } else {
        if (rb->mt &&
            rb->mt->singlesample_mt &&
            rb->mt->singlesample_mt->region &&
-           rb->mt->singlesample_mt->region->name == buffer->name)
+           rb->mt->singlesample_mt->region->name == buffer->name &&
+           rb->mt->singlesample_mt->region->name != 0)
           return;
    }
 
    if (unlikely(INTEL_DEBUG & DEBUG_DRI)) {
       fprintf(stderr,
-             "attaching buffer %d, at %d, cpp %d, pitch %d\n",
+             "attaching buffer %d, at %d, cpp %d, pitch %d, fd %d\n",
              buffer->name, buffer->attachment,
-             buffer->cpp, buffer->pitch);
+             buffer->cpp, buffer->pitch, buffer->fd);
    }
 
    intel_miptree_release(&rb->mt);
-   region = intel_region_alloc_for_handle(brw->intelScreen,
-                                          buffer->cpp,
-                                          drawable->w,
-                                          drawable->h,
-                                          buffer->pitch,
-                                          buffer->name,
-                                          buffer_name);
+   if (buffer->name != 0) {
+      region = intel_region_alloc_for_handle(brw->intelScreen,
+                                             buffer->cpp,
+                                             drawable->w,
+                                             drawable->h,
+                                             buffer->pitch,
+                                             buffer->name,
+                                             buffer_name);
+   } else {
+      region = intel_region_alloc_for_fd(brw->intelScreen,
+                                         buffer->cpp,
+                                         drawable->w,
+                                         drawable->h,
+                                         buffer->pitch,
+                                         buffer->fd,
+                                         buffer_name);
+   }
    if (!region)
       return;
 
-- 
1.8.3.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to