[Piglit] [v5 02/12] framework: hardware independent interface for dma buffers
Chad Versace
chad.versace at linux.intel.com
Tue May 7 14:43:01 PDT 2013
On 05/07/2013 02:13 PM, Chad Versace wrote:
> On 05/03/2013 04:26 AM, Topi Pohjolainen wrote:
>> In order to test the EXT_image_dma_buf_import, one needs a way for
>> creating dma buffers that can be imported to EGL and filling them
>> with data for the GL-stack to sample.
>> While dma buffer themselves are only defined for linux, the actual
>> writing of the buffers using CPU differs from hardware to another,
>> and possibly from window system to another. The intention here is
>> to push these details into the framework leaving the actual tests
>> environment independent.
>>
>> v2 (Chad):
>> - replace 'void*' buffer type by 'struct piglit_dma_buf *'
>>
>> Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
>> ---
>> tests/util/piglit-framework-gl.c | 24 ++++++++++++++++++++++
>> tests/util/piglit-framework-gl.h | 21 +++++++++++++++++++
>> .../util/piglit-framework-gl/piglit_gl_framework.h | 9 ++++++++
>> 3 files changed, 54 insertions(+)
>>
>> diff --git a/tests/util/piglit-framework-gl.c b/tests/util/piglit-framework-gl.c
>> index 441e271..6ccc38d 100644
>> --- a/tests/util/piglit-framework-gl.c
>> +++ b/tests/util/piglit-framework-gl.c
>> @@ -162,3 +162,27 @@ piglit_set_reshape_func(void (*func)(int w, int h))
>> if (!gl_fw->set_reshape_func)
>> gl_fw->set_reshape_func(gl_fw, func);
>> }
>> +
>> +enum piglit_result
>> +piglit_create_dma_buf(unsigned w, unsigned h, unsigned cpp,
>> + const void *src_data, unsigned src_stride,
>> + struct piglit_dma_buf **buf, int *fd,
>> + unsigned *stride, unsigned *offset)
>> +{
>> + *fd = 0;
>> + *stride = 0;
>> + *offset = 0;
>> +
>> + if (!gl_fw->create_dma_buf)
>> + return PIGLIT_SKIP;
>> +
>> + return gl_fw->create_dma_buf(w, h, cpp, src_data, src_stride, buf, fd,
>> + stride, offset);
>> +}
>> +
>> +void
>> +piglit_destroy_dma_buf(struct piglit_dma_buf *buf)
>> +{
>> + if (gl_fw->destroy_dma_buf)
>> + gl_fw->destroy_dma_buf(buf);
>> +}
>> diff --git a/tests/util/piglit-framework-gl.h b/tests/util/piglit-framework-gl.h
>> index 4406c1b..26be68c 100644
>> --- a/tests/util/piglit-framework-gl.h
>> +++ b/tests/util/piglit-framework-gl.h
>> @@ -241,4 +241,25 @@ void piglit_post_redisplay(void);
>> void piglit_set_keyboard_func(void (*func)(unsigned char key, int x, int y));
>> void piglit_set_reshape_func(void (*func)(int w, int h));
>>
>> +struct piglit_dma_buf;
>> +
>> +/**
>> + * Create buffer suitable for dma_buf importing and set its contents to the
>> + * given data (src_data). Different hardware may have different alignment
>> + * constraints and hence one can specify one stride for the source and get
>> + * another for the final buffer to be given further to EGL.
>> + * An opaque handle, file descriptor, stride and offset for the buffer are only
>> + * returned upon success indicated by the return value PIGLIT_PASS, otherwise
>> + * no buffer is created. In case the framework simply does not support dma
>> + * buffers, the return value is PIGLIT_SKIP instead of PIGLIT_FAIL.
>> + */
>> +enum piglit_result
>> +piglit_create_dma_buf(unsigned w, unsigned h, unsigned cpp,
>> + const void *src_data, unsigned src_stride,
>> + struct piglit_dma_buf **buf, int *fd,
>> + unsigned *stride, unsigned *offset);
>
>> +void
>> +piglit_destroy_dma_buf(struct piglit_dma_buf *buf);
>
> Is it safe to pass NULL to this function, like free()? Please document that.
>
> With that documentation, this patch is
> Reviewed-by: Chad Versace <chad.versace at linux.intel.com>
By the way, if in response to other review you need to make minor changes to this patch
(for example, changing the function signatures a little in response to Anholt's request),
then the custom among Mesa devs is to add a versioned Reviewed-by tag. This
patch is v2, so like this:
Reviewed-by: Chad Versace <chad.versace at linux.intel.com> (v2)
More information about the Piglit
mailing list