[Mesa-dev] Fwd: Re: [directfb-dev] First results of Mesa/DRM based DirectFB on i915 (GLES2.0 acceleration)

Denis Oliver Kropp dok at directfb.org
Sat Mar 12 23:15:11 PST 2011

On 13/03/11 08:09, Dave Airlie wrote:
> On Sun, Mar 13, 2011 at 5:02 PM, Denis Oliver Kropp <dok at directfb.org> wrote:
>> Hi,
>> thanks to all of you who contributed to Mesa/DRM/KMS.
>> Following are some benchmark results of the new DirectFB on Mesa port.
>> The code is checked into git.directfb.org now.
>> I also think I know how to map the buffers now (see my previous mails),
>> using intel specific ioctl (as in libkms bo_map) with the handle returned by
>> eglExportDRMImageMESA.
> I don't know the right answer, but that isn't it. You really don't
> want to be using libkms at all
> for that use case I don't think. libkms buffers aren't meant to be
> used in acceleration situations.

Right, I'm not going to use libkms.

I'll stay with the Mesa based allocation, but thought I can map the bo
similar to how it is done in libkms' bo_map implementation for intel:

static int
intel_bo_map(struct kms_bo *_bo, void **out)
	struct intel_bo *bo = (struct intel_bo *)_bo;
	struct drm_i915_gem_mmap_gtt arg;
	void *map = NULL;
	int ret;

	if (bo->base.ptr) {
		*out = bo->base.ptr;
		return 0;

	memset(&arg, 0, sizeof(arg));
	arg.handle = bo->base.handle;     <=== use the handle from eglExportDRMImageMESA here! <================

	ret = drmCommandWriteRead(bo->base.kms->fd, DRM_I915_GEM_MMAP_GTT, &arg, sizeof(arg));
	if (ret)
		return ret;

	map = mmap(0, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, arg.offset);
	if (map == MAP_FAILED)
		return -errno;

	bo->base.ptr = map;
	*out = bo->base.ptr;

	return 0;

Best regards,
  Denis Oliver Kropp

| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/                 |

More information about the mesa-dev mailing list