drm/i915: move bsd dispatch index somewhere better
Adding stuff at the bottom is really no how this should be done, since
that's the place for ums/dri dungeons.
This was added in
commit a8ebba75b3
Author: Zhao Yakui <yakui.zhao@intel.com>
Date: Thu Apr 17 10:37:40 2014 +0800
drm/i915: Use the coarse ping-pong mechanism based on drm fd to dispatch the BSD command on BDW GT3
Also add a note to prevent this from happening again - people really
should be less lazy and take more time to look for a good home of
their new driver-global state.
Cc: Imre Deak <imre.deak@intel.com>
Cc: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
4a3436e85c
commit
bdf1e7e3db
|
@ -1571,7 +1571,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
|
||||||
spin_lock_init(&dev_priv->backlight_lock);
|
spin_lock_init(&dev_priv->backlight_lock);
|
||||||
spin_lock_init(&dev_priv->uncore.lock);
|
spin_lock_init(&dev_priv->uncore.lock);
|
||||||
spin_lock_init(&dev_priv->mm.object_stat_lock);
|
spin_lock_init(&dev_priv->mm.object_stat_lock);
|
||||||
dev_priv->ring_index = 0;
|
|
||||||
mutex_init(&dev_priv->dpio_lock);
|
mutex_init(&dev_priv->dpio_lock);
|
||||||
mutex_init(&dev_priv->modeset_restore_lock);
|
mutex_init(&dev_priv->modeset_restore_lock);
|
||||||
|
|
||||||
|
|
|
@ -1098,6 +1098,9 @@ struct i915_gem_mm {
|
||||||
*/
|
*/
|
||||||
bool busy;
|
bool busy;
|
||||||
|
|
||||||
|
/* the indicator for dispatch video commands on two BSD rings */
|
||||||
|
int bsd_ring_dispatch_index;
|
||||||
|
|
||||||
/** Bit 6 swizzling required for X tiling */
|
/** Bit 6 swizzling required for X tiling */
|
||||||
uint32_t bit_6_swizzle_x;
|
uint32_t bit_6_swizzle_x;
|
||||||
/** Bit 6 swizzling required for Y tiling */
|
/** Bit 6 swizzling required for Y tiling */
|
||||||
|
@ -1553,8 +1556,11 @@ struct drm_i915_private {
|
||||||
struct i915_dri1_state dri1;
|
struct i915_dri1_state dri1;
|
||||||
/* Old ums support infrastructure, same warning applies. */
|
/* Old ums support infrastructure, same warning applies. */
|
||||||
struct i915_ums_state ums;
|
struct i915_ums_state ums;
|
||||||
/* the indicator for dispatch video commands on two BSD rings */
|
|
||||||
int ring_index;
|
/*
|
||||||
|
* NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
|
||||||
|
* will be rejected. Instead look for a better place.
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct drm_i915_private *to_i915(const struct drm_device *dev)
|
static inline struct drm_i915_private *to_i915(const struct drm_device *dev)
|
||||||
|
|
|
@ -1027,12 +1027,12 @@ static int gen8_dispatch_bsd_ring(struct drm_device *dev,
|
||||||
int ring_id;
|
int ring_id;
|
||||||
|
|
||||||
mutex_lock(&dev->struct_mutex);
|
mutex_lock(&dev->struct_mutex);
|
||||||
if (dev_priv->ring_index == 0) {
|
if (dev_priv->mm.bsd_ring_dispatch_index == 0) {
|
||||||
ring_id = VCS;
|
ring_id = VCS;
|
||||||
dev_priv->ring_index = 1;
|
dev_priv->mm.bsd_ring_dispatch_index = 1;
|
||||||
} else {
|
} else {
|
||||||
ring_id = VCS2;
|
ring_id = VCS2;
|
||||||
dev_priv->ring_index = 0;
|
dev_priv->mm.bsd_ring_dispatch_index = 0;
|
||||||
}
|
}
|
||||||
file_priv->bsd_ring = &dev_priv->ring[ring_id];
|
file_priv->bsd_ring = &dev_priv->ring[ring_id];
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
|
|
Loading…
Reference in New Issue