}
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 };
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)
}
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;
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;
}
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:
.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,
};