[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) {
bo->map_count++;
*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;
bo->map_count++;
*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