intel: Export CONSTANT_BUFFER addressing mode
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>main
parent
760c01a6af
commit
0184bb1c6d
|
@ -279,6 +279,8 @@ typedef struct drm_i915_irq_wait {
|
||||||
#define I915_PARAM_HAS_BSD 10
|
#define I915_PARAM_HAS_BSD 10
|
||||||
#define I915_PARAM_HAS_BLT 11
|
#define I915_PARAM_HAS_BLT 11
|
||||||
#define I915_PARAM_HAS_RELAXED_FENCING 12
|
#define I915_PARAM_HAS_RELAXED_FENCING 12
|
||||||
|
#define I915_PARAM_HAS_COHERENT_RINGS 13
|
||||||
|
#define I915_PARAM_HAS_EXEC_CONSTANTS 14
|
||||||
|
|
||||||
typedef struct drm_i915_getparam {
|
typedef struct drm_i915_getparam {
|
||||||
int param;
|
int param;
|
||||||
|
@ -625,6 +627,17 @@ struct drm_i915_gem_execbuffer2 {
|
||||||
#define I915_EXEC_RENDER (1<<0)
|
#define I915_EXEC_RENDER (1<<0)
|
||||||
#define I915_EXEC_BSD (2<<0)
|
#define I915_EXEC_BSD (2<<0)
|
||||||
#define I915_EXEC_BLT (3<<0)
|
#define I915_EXEC_BLT (3<<0)
|
||||||
|
|
||||||
|
/* Used for switching the constants addressing mode on gen4+ RENDER ring.
|
||||||
|
* Gen6+ only supports relative addressing to dynamic state (default) and
|
||||||
|
* absolute addressing.
|
||||||
|
*
|
||||||
|
* These flags are ignored for the BSD and BLT rings.
|
||||||
|
*/
|
||||||
|
#define I915_EXEC_CONSTANTS_MASK (3<<6)
|
||||||
|
#define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6) /* default */
|
||||||
|
#define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6)
|
||||||
|
#define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6) /* gen4/5 only */
|
||||||
__u64 flags;
|
__u64 flags;
|
||||||
__u64 rsvd1;
|
__u64 rsvd1;
|
||||||
__u64 rsvd2;
|
__u64 rsvd2;
|
||||||
|
|
|
@ -136,12 +136,12 @@ drm_intel_bo_exec(drm_intel_bo *bo, int used,
|
||||||
int
|
int
|
||||||
drm_intel_bo_mrb_exec(drm_intel_bo *bo, int used,
|
drm_intel_bo_mrb_exec(drm_intel_bo *bo, int used,
|
||||||
drm_clip_rect_t *cliprects, int num_cliprects, int DR4,
|
drm_clip_rect_t *cliprects, int num_cliprects, int DR4,
|
||||||
int ring_flag)
|
unsigned int rings)
|
||||||
{
|
{
|
||||||
if (bo->bufmgr->bo_mrb_exec)
|
if (bo->bufmgr->bo_mrb_exec)
|
||||||
return bo->bufmgr->bo_mrb_exec(bo, used,
|
return bo->bufmgr->bo_mrb_exec(bo, used,
|
||||||
cliprects, num_cliprects, DR4,
|
cliprects, num_cliprects, DR4,
|
||||||
ring_flag);
|
rings);
|
||||||
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ int drm_intel_bo_exec(drm_intel_bo *bo, int used,
|
||||||
struct drm_clip_rect *cliprects, int num_cliprects, int DR4);
|
struct drm_clip_rect *cliprects, int num_cliprects, int DR4);
|
||||||
int drm_intel_bo_mrb_exec(drm_intel_bo *bo, int used,
|
int drm_intel_bo_mrb_exec(drm_intel_bo *bo, int used,
|
||||||
struct drm_clip_rect *cliprects, int num_cliprects, int DR4,
|
struct drm_clip_rect *cliprects, int num_cliprects, int DR4,
|
||||||
int ring_flag);
|
unsigned int flags);
|
||||||
int drm_intel_bufmgr_check_aperture_space(drm_intel_bo ** bo_array, int count);
|
int drm_intel_bufmgr_check_aperture_space(drm_intel_bo ** bo_array, int count);
|
||||||
|
|
||||||
int drm_intel_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
|
int drm_intel_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
|
||||||
|
|
|
@ -1555,13 +1555,13 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used,
|
||||||
static int
|
static int
|
||||||
drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used,
|
drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used,
|
||||||
drm_clip_rect_t *cliprects, int num_cliprects, int DR4,
|
drm_clip_rect_t *cliprects, int num_cliprects, int DR4,
|
||||||
int ring_flag)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bo->bufmgr;
|
drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bo->bufmgr;
|
||||||
struct drm_i915_gem_execbuffer2 execbuf;
|
struct drm_i915_gem_execbuffer2 execbuf;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
switch (ring_flag) {
|
switch (flags & 0x7) {
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
case I915_EXEC_BLT:
|
case I915_EXEC_BLT:
|
||||||
|
@ -1594,7 +1594,7 @@ drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used,
|
||||||
execbuf.num_cliprects = num_cliprects;
|
execbuf.num_cliprects = num_cliprects;
|
||||||
execbuf.DR1 = 0;
|
execbuf.DR1 = 0;
|
||||||
execbuf.DR4 = DR4;
|
execbuf.DR4 = DR4;
|
||||||
execbuf.flags = ring_flag;
|
execbuf.flags = flags;
|
||||||
execbuf.rsvd1 = 0;
|
execbuf.rsvd1 = 0;
|
||||||
execbuf.rsvd2 = 0;
|
execbuf.rsvd2 = 0;
|
||||||
|
|
||||||
|
|
|
@ -177,8 +177,8 @@ struct _drm_intel_bufmgr {
|
||||||
* ring buffer
|
* ring buffer
|
||||||
*/
|
*/
|
||||||
int (*bo_mrb_exec) (drm_intel_bo *bo, int used,
|
int (*bo_mrb_exec) (drm_intel_bo *bo, int used,
|
||||||
drm_clip_rect_t *cliprects, int num_cliprects,
|
drm_clip_rect_t *cliprects, int num_cliprects,
|
||||||
int DR4, int ring_flag);
|
int DR4, unsigned flags);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pin a buffer to the aperture and fix the offset until unpinned
|
* Pin a buffer to the aperture and fix the offset until unpinned
|
||||||
|
|
Loading…
Reference in New Issue