[PATCH libdrm] omap: add omapdrm support

Luca Tettamanti kronos.it at gmail.com
Wed Mar 28 07:39:49 PDT 2012


Hi Rob,
I've a couple of (minor) comments:

On Wed, Mar 21, 2012 at 01:00:36PM -0500, Rob Clark wrote:
> --- /dev/null
> +++ b/omap/omap_drm.c
[...]
> +/* allocate a new (un-tiled) buffer object */
> +struct omap_bo * omap_bo_new(struct omap_device *dev,
> +		uint32_t size, uint32_t flags)
> +{
> +	if (flags & OMAP_BO_TILED) {
> +		return NULL;
> +	}
> +	return omap_bo_new_impl(dev, (union omap_gem_size){
> +		.bytes = size,
> +	}, flags);

Hum, the indentation of the anonymous union looks weird (but maybe it's just
me...)

> +}
> +
> +/* allocate a new buffer object */
> +struct omap_bo * omap_bo_new_tiled(struct omap_device *dev,
> +		uint32_t width, uint32_t height, uint32_t flags)
> +{
> +	if (!(flags & OMAP_BO_TILED)) {
> +		return NULL;
> +	}
> +	return omap_bo_new_impl(dev, (union omap_gem_size){
> +		.tiled = {
> +				.width = width,
> +				.height = height,
> +		},
> +	}, flags);
> +}

Here too :-) What about this:

return omap_bo_new_impl(dev, (union omap_gem_size)
	{
		.stuff = blah,
	});

Or just use a temp var?

> +
> +/* get buffer info */
> +static int get_buffer_info(struct omap_bo *bo)
> +{
> +	struct drm_omap_gem_info req = {
> +			.handle = bo->handle,
> +	};
> +	int ret = drmCommandWriteRead(bo->dev->fd, DRM_OMAP_GEM_INFO,
> +			&req, sizeof(req));
> +	if (ret) {
> +		return ret;
> +	}
> +
> +	/* really all we need for now is mmap offset */
> +	bo->offset = req.offset;
> +	bo->size = req.size;
> +
> +	return 0;
> +}
> +
> +/* import a buffer object from DRI2 name */
> +struct omap_bo * omap_bo_from_name(struct omap_device *dev, uint32_t name)
> +{
> +	struct omap_bo *bo = calloc(sizeof(*bo), 1);
> +	struct drm_gem_open req = {
> +			.name = name,
> +	};
> +
> +	if (drmIoctl(dev->fd, DRM_IOCTL_GEM_OPEN, &req)) {
> +		goto fail;
> +	}

bo may be NULL here:

> +
> +	bo->dev = dev;
> +	bo->name = name;
> +	bo->handle = req.handle;

I also woundn't use the calloc in the initialization block, I prefer to
keep the allocation and the check together:

bo = alloc_stuff();
if (!bo)
	oh_crap();

I find it more easy to check visually.

Luca


More information about the dri-devel mailing list