No good reason why we must always use a static ringsize, so let userspace select one during construction.
Showing the changes to include/uapi (1 of 6 files). Show all
Unified · Split
| @@ -1619,6 +1619,27 @@ struct drm_i915_gem_context_param { · 1618 unmodified lines | ||
| 1619 | 1619 | * By default, new contexts allow persistence. |
| 1620 | 1620 | */ |
| 1621 | 1621 | #define I915_CONTEXT_PARAM_PERSISTENCE 0xb |
| 1622 | + | |
| 1623 | +/* | |
| 1624 | + * I915_CONTEXT_PARAM_RINGSIZE: | |
| 1625 | + * | |
| 1626 | + * Sets the size of the CS ringbuffer to use for logical ring contexts. This | |
| 1627 | + * applies a limit of how many batches can be queued to HW before the caller | |
| 1628 | + * is blocked due to lack of space for more commands. | |
| 1629 | + * | |
| 1630 | + * Only reliably possible to be set prior to first use, i.e. during | |
| 1631 | + * construction. At any later point, the current execution must be flushed as | |
| 1632 | + * the ring can only be changed while the context is idle. Note, the ringsize | |
| 1633 | + * can be specified as a constructor property, see | |
| 1634 | + * I915_CONTEXT_CREATE_EXT_SETPARAM, but can also be set later if required. | |
| 1635 | + * | |
| 1636 | + * Only applies to the current set of engine and lost when those engines | |
| 1637 | + * are replaced by a new mapping (see I915_CONTEXT_PARAM_ENGINES). | |
| 1638 | + * | |
| 1639 | + * Must be between 4 - 512 KiB, in intervals of page size [4 KiB]. | |
| 1640 | + * Default is 16 KiB. | |
| 1641 | + */ | |
| 1642 | +#define I915_CONTEXT_PARAM_RINGSIZE 0xc | |
| 1622 | 1643 | /* Must be kept compact -- no holes and well documented */ |
| 1623 | 1644 | |
| 1624 | 1645 | __u64 value; |