This reports the currently used vram allocations. userspace using this has been proposed for nvk, but it's a rather trivial uapi addition.
Unified · Split
| @@ -267,6 +267,11 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS) · 266 unmodified lines | |||
| 267 | case NOUVEAU_GETPARAM_VRAM_BAR_SIZE: | 267 | case NOUVEAU_GETPARAM_VRAM_BAR_SIZE: |
| 268 | getparam->value = nvkm_device->func->resource_size(nvkm_device, 1); | 268 | getparam->value = nvkm_device->func->resource_size(nvkm_device, 1); |
| 269 | break; | 269 | break; |
| 270 | case NOUVEAU_GETPARAM_VRAM_USED: { | ||
| 271 | struct ttm_resource_manager *vram_mgr = ttm_manager_type(&drm->ttm.bdev, TTM_PL_VRAM); | ||
| 272 | getparam->value = (u64)ttm_resource_manager_usage(vram_mgr) << PAGE_SHIFT; | ||
| 273 | break; | ||
| 274 | } | ||
| 270 | default: | 275 | default: |
| 271 | NV_PRINTK(dbg, cli, "unknown parameter %lld\n", getparam->param); | 276 | NV_PRINTK(dbg, cli, "unknown parameter %lld\n", getparam->param); |
| 272 | return -EINVAL; | 277 | return -EINVAL; |
| @@ -61,6 +61,13 @@ extern "C" { · 60 unmodified lines | |||
| 61 | */ | 61 | */ |
| 62 | #define NOUVEAU_GETPARAM_VRAM_BAR_SIZE 18 | 62 | #define NOUVEAU_GETPARAM_VRAM_BAR_SIZE 18 |
| 63 | 63 | ||
| 64 | /* | ||
| 65 | * NOUVEAU_GETPARAM_VRAM_USED | ||
| 66 | * | ||
| 67 | * Get remaining VRAM size. | ||
| 68 | */ | ||
| 69 | #define NOUVEAU_GETPARAM_VRAM_USED 19 | ||
| 70 | |||
| 64 | struct drm_nouveau_getparam { | 71 | struct drm_nouveau_getparam { |
| 65 | __u64 param; | 72 | __u64 param; |
| 66 | __u64 value; | 73 | __u64 value; |