On 06/14/2012 01:32 PM, Zhao Halley wrote:
---
  src/gbm/backends/dri/gbm_dri.c |    6 +++++-
  src/gbm/main/gbm.c             |   14 ++++++++++++++
  src/gbm/main/gbm.h             |    3 +++
  src/gbm/main/gbmint.h          |    1 +
  4 files changed, 23 insertions(+), 1 deletions(-)
  mode change 100644 =>  100755 src/gbm/main/gbm.c
  mode change 100644 =>  100755 src/gbm/main/gbmint.h

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 9e2bd83..a71815f 100755
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -392,6 +392,8 @@ gbm_dri_bo_create_from_egl_image(struct gbm_device *gbm,
                            (int *)&bo->base.base.pitch);
     dri->image->queryImage(bo->image, __DRI_IMAGE_ATTRIB_FORMAT,
                        &dri_format);
+   dri->image->queryImage(bo->image, __DRI_IMAGE_ATTRIB_NAME,
+                          (uint32_t *)&bo->base.base.handle2.u32);

This will cause a name to be allocated for the region even if the user does not need it. Maybe this should be delayed until the user calls gbm_bo_get_handle2().

     bo->base.base.format = gbm_dri_to_gbm_format(dri_format);

@@ -460,7 +462,9 @@ gbm_dri_bo_create(struct gbm_device *gbm,
                            &bo->base.base.handle.s32);
     dri->image->queryImage(bo->image, __DRI_IMAGE_ATTRIB_STRIDE,
                            (int *)&bo->base.base.pitch);
-
+   dri->image->queryImage(bo->image, __DRI_IMAGE_ATTRIB_NAME,
+                          (uint32_t *)&bo->base.base.handle2.u32);

Same here.

+               

This line has whitespace errors.

     return&bo->base.base;
  }

diff --git a/src/gbm/main/gbm.c b/src/gbm/main/gbm.c
old mode 100644
new mode 100755
index 3994f86..f445bb1
--- a/src/gbm/main/gbm.c
+++ b/src/gbm/main/gbm.c
@@ -231,6 +231,20 @@ gbm_bo_get_handle(struct gbm_bo *bo)
     return bo->handle;
  }

+/** Get handle2 (buffer region name) of the buffer object
+ *
+ * This is stored in the platform generic union gbm_bo_handle type. However
+ * the format of this handle is platform specific.
+ *
+ * \param bo The buffer object
+ * \return Returns the handle of the allocated buffer object
+ */
+GBM_EXPORT union gbm_bo_handle
+gbm_bo_get_handle2(struct gbm_bo *bo)

I think gbm_bo_get_shared_handle() is a better name for this. And the function documentation should explain what is the difference between this and the handle returned by gbm_bo_get_handle().

BR,
Ander

+{
+   return bo->handle2;
+}
+
  /** Write data into the buffer object
   *
   * If the buffer object was created with the GBM_BO_USE_WRITE flag,
diff --git a/src/gbm/main/gbm.h b/src/gbm/main/gbm.h
index b2a0aa3..25c9d37 100755
--- a/src/gbm/main/gbm.h
+++ b/src/gbm/main/gbm.h
@@ -257,6 +257,9 @@ gbm_bo_get_device(struct gbm_bo *bo);
  union gbm_bo_handle
  gbm_bo_get_handle(struct gbm_bo *bo);

+union gbm_bo_handle
+gbm_bo_get_handle2(struct gbm_bo *bo);
+
  int
  gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count);

diff --git a/src/gbm/main/gbmint.h b/src/gbm/main/gbmint.h
old mode 100644
new mode 100755
index 8eb8671..5e48e89
--- a/src/gbm/main/gbmint.h
+++ b/src/gbm/main/gbmint.h
@@ -95,6 +95,7 @@ struct gbm_bo {
     uint32_t pitch;
     uint32_t format;
     union gbm_bo_handle  handle;
+   union gbm_bo_handle  handle2;
     void *user_data;
     void (*destroy_user_data)(struct gbm_bo *, void *);
  };

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to