OSDN Git Service

minigbm: pass in buffer creation flags of the right size
[android-x86/external-minigbm.git] / amdgpu.c
index ee05009..dfd4154 100644 (file)
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -135,7 +135,7 @@ static ADDR_E_RETURNCODE ADDR_API free_sys_mem(const ADDR_FREESYSMEM_INPUT *in)
 }
 
 static int amdgpu_addrlib_compute(void *addrlib, uint32_t width, uint32_t height, uint32_t format,
-                                 uint32_t usage, uint32_t *tiling_flags,
+                                 uint64_t usage, uint32_t *tiling_flags,
                                  ADDR_COMPUTE_SURFACE_INFO_OUTPUT *addr_out)
 {
        ADDR_COMPUTE_SURFACE_INFO_INPUT addr_surf_info_in = { 0 };
@@ -273,7 +273,7 @@ static int amdgpu_init(struct driver *drv)
        int ret;
        void *addrlib;
        struct format_metadata metadata;
-       uint32_t flags = BO_USE_RENDER_MASK;
+       uint64_t flags = BO_USE_RENDER_MASK;
 
        addrlib = amdgpu_addrlib_init(drv_get_fd(drv));
        if (!addrlib)
@@ -345,7 +345,7 @@ static void amdgpu_close(struct driver *drv)
 }
 
 static int amdgpu_bo_create(struct bo *bo, uint32_t width, uint32_t height, uint32_t format,
-                           uint32_t usage)
+                           uint64_t usage)
 {
        void *addrlib = bo->drv->priv;
        union drm_amdgpu_gem_create gem_create;
@@ -400,7 +400,7 @@ static int amdgpu_bo_create(struct bo *bo, uint32_t width, uint32_t height, uint
        return ret;
 }
 
-static void *amdgpu_bo_map(struct bo *bo, struct map_info *data, size_t plane)
+static void *amdgpu_bo_map(struct bo *bo, struct map_info *data, size_t plane, int prot)
 {
        int ret;
        union drm_amdgpu_gem_mmap gem_map;
@@ -415,11 +415,10 @@ static void *amdgpu_bo_map(struct bo *bo, struct map_info *data, size_t plane)
        }
        data->length = bo->total_size;
 
-       return mmap(0, bo->total_size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->drv->fd,
-                   gem_map.out.addr_ptr);
+       return mmap(0, bo->total_size, prot, MAP_SHARED, bo->drv->fd, gem_map.out.addr_ptr);
 }
 
-static uint32_t amdgpu_resolve_format(uint32_t format)
+static uint32_t amdgpu_resolve_format(uint32_t format, uint64_t usage)
 {
        switch (format) {
        case DRM_FORMAT_FLEX_YCbCr_420_888:
@@ -437,6 +436,7 @@ struct backend backend_amdgpu = {
        .bo_destroy = drv_gem_bo_destroy,
        .bo_import = drv_prime_bo_import,
        .bo_map = amdgpu_bo_map,
+       .bo_unmap = drv_bo_munmap,
        .resolve_format = amdgpu_resolve_format,
 };