[Mesa-dev] [PATCH] gbm: Add gbm_bo_write entry point

Kristian Høgsberg krh at bitplanet.net
Thu May 3 07:56:29 PDT 2012


On Thu, May 3, 2012 at 7:05 AM, Ander Conselvan de Oliveira
<conselvan2 at gmail.com> wrote:
> I did a simple test here and the patch worked. I have just a couple of
> comments.

Good points, patch updated.

Kristian

> On 05/02/2012 10:32 PM, Kristian Høgsberg wrote:
>>
>> This new gbm entry point allows writing data into a gbm bo.  The bo has
>> to be created with the GBM_BO_USE_WRITE flag, and it's only required to
>> work for GBM_BO_USE_CURSOR_64X64 bos.
>>
>> The gbm API is designed to be the glue layer between EGL and KMS, but
>> there
>> was never a mechanism initialize a buffer suitable for use with KMS
>> hw cursors.  The hw cursor bo is typically not compatible with anything
>> EGL
>> can render to, and thus there's no way to get data into such a bo.
>>
>> gbm_bo_write() fills that gap while staying out of the efficient
>> cpu->gpu pixel transfer business.
>> ---
>>  include/GL/internal/dri_interface.h       |   10 +++++++++-
>>  src/gbm/backends/dri/gbm_dri.c            |   18 ++++++++++++++++++
>>  src/gbm/main/gbm.c                        |   19 +++++++++++++++++++
>>  src/gbm/main/gbm.h                        |    9 +++++++++
>>  src/gbm/main/gbmint.h                     |    1 +
>>  src/mesa/drivers/dri/intel/intel_screen.c |   24 ++++++++++++++++++++++--
>>  6 files changed, 78 insertions(+), 3 deletions(-)
>>
>
> [...]
>
>
>> diff --git a/src/mesa/drivers/dri/intel/intel_screen.c
>> b/src/mesa/drivers/dri/intel/intel_screen.c
>> index 9db5606..e945d14 100644
>> --- a/src/mesa/drivers/dri/intel/intel_screen.c
>> +++ b/src/mesa/drivers/dri/intel/intel_screen.c
>> @@ -305,6 +305,11 @@ intel_create_image(__DRIscreen *screen,
>>        tiling = I915_TILING_NONE;
>>     }
>>
>> +   /* We only support write for cursor drm images */
>> +   if ((use&  __DRI_IMAGE_USE_WRITE)&&
>> +       use != (__DRI_IMAGE_USE_WRITE | __DRI_IMAGE_USE_CURSOR))
>> +      return NULL;
>> +
>
>
> Shouldn't we have a similar check in intel_validate_usage()?
>
>
>>     image = CALLOC(sizeof *image);
>>     if (image == NULL)
>>        return NULL;
>> @@ -411,15 +416,30 @@ intel_validate_usage(__DRIimage *image, unsigned int
>> use)
>>     return GL_TRUE;
>>  }
>>
>> +static int
>> +intel_image_write(__DRIimage *image, const void *buf, size_t count)
>> +{
>> +   if (image->region->map_refcount)
>> +      return -1;
>> +   /* if use != WRITE || region->map_refcount; return -1; */
>
>
> Did you intend to check for write usage here?
>
> Other than this,
> Reviewed-by: Ander Conselvan de Oliveira <conselvan2 at gmail.com>


More information about the mesa-dev mailing list