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 | 267 | case NOUVEAU_GETPARAM_VRAM_BAR_SIZE: |
| 268 | 268 | getparam->value = nvkm_device->func->resource_size(nvkm_device, 1); |
| 269 | 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 | 275 | default: |
| 271 | 276 | NV_PRINTK(dbg, cli, "unknown parameter %lld\n", getparam->param); |
| 272 | 277 | return -EINVAL; |
| @@ -61,6 +61,13 @@ extern "C" { · 60 unmodified lines | ||
| 61 | 61 | */ |
| 62 | 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 | 71 | struct drm_nouveau_getparam { |
| 65 | 72 | __u64 param; |
| 66 | 73 | __u64 value; |