mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
drm: add gem import interface to support drm-hwc [1/1]
PD#SWPL-11320 Problem: current gem driver have not implementted the import interface. For drm-hwc in android, gralloc allocate the dumb buffer, it should use the import interface to import the allocated buffer to the drm driver. Solution: implement the gem import interface Verify: g12a-u200 Change-Id: I32f7705fd67853a1000875b2af69fcaf700330e1 Signed-off-by: Ao Xu <ao.xu@amlogic.com>
This commit is contained in:
@@ -176,7 +176,7 @@ static struct drm_driver meson_driver = {
|
||||
* If gem_prime_import_sg_table is NULL,only buffer created
|
||||
* by meson driver can be imported ok.
|
||||
*/
|
||||
/*.gem_prime_import_sg_table = am_meson_gem_prime_import_sg_table,*/
|
||||
.gem_prime_import_sg_table = am_meson_gem_prime_import_sg_table,
|
||||
|
||||
.gem_prime_vmap = am_meson_gem_prime_vmap,
|
||||
.gem_prime_vunmap = am_meson_gem_prime_vunmap,
|
||||
|
||||
@@ -133,7 +133,7 @@ void am_meson_gem_object_free(struct drm_gem_object *obj)
|
||||
if (obj->import_attach == false)
|
||||
am_meson_gem_free_ion_buf(obj->dev, meson_gem_obj);
|
||||
else
|
||||
DRM_ERROR("Not support import buffer from other driver.\n");
|
||||
drm_prime_gem_destroy(obj, meson_gem_obj->sg);
|
||||
|
||||
drm_gem_free_mmap_offset(obj);
|
||||
|
||||
@@ -219,9 +219,8 @@ int am_meson_gem_object_get_phyaddr(
|
||||
int addr;
|
||||
size_t len;
|
||||
|
||||
if (!meson_gem->handle) {
|
||||
DRM_INFO("%s handle null\n", __func__);
|
||||
return -1;
|
||||
if (meson_gem->sg) {
|
||||
return meson_gem->addr;
|
||||
}
|
||||
|
||||
ion_phys(drm->gem_client, meson_gem->handle,
|
||||
@@ -439,7 +438,8 @@ struct drm_gem_object *am_meson_gem_prime_import_sg_table(
|
||||
}
|
||||
|
||||
DRM_DEBUG("%s: %p, sg_table %p\n", __func__, meson_gem_obj, sgt);
|
||||
/*meson_gem_obj->sgt = sgt;*/
|
||||
meson_gem_obj->sg = sgt;
|
||||
meson_gem_obj->addr = sg_dma_address(sgt->sgl);
|
||||
return &meson_gem_obj->base;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,10 @@ struct am_meson_gem_object {
|
||||
/*for buffer create from ion heap */
|
||||
struct ion_handle *handle;
|
||||
bool bscatter;
|
||||
|
||||
/* for buffer import form other driver */
|
||||
phys_addr_t addr;
|
||||
struct sg_table *sg;
|
||||
};
|
||||
|
||||
/* GEM MANAGER CREATE*/
|
||||
|
||||
Reference in New Issue
Block a user