]> git.karo-electronics.de Git - karo-tx-linux.git/commit
drm/i915: Use the coarse ping-pong mechanism based on drm fd to dispatch the BSD...
authorZhao Yakui <yakui.zhao@intel.com>
Thu, 17 Apr 2014 02:37:40 +0000 (10:37 +0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 24 Apr 2014 15:22:21 +0000 (17:22 +0200)
commitb46671e210b33ffa302a2e015d613eac8057ee5a
tree8be9abb021c839ead697fe3c0ef41d2243ee5604
parent2bbd28ae41eabbb659ce62d2395a332e2cf8985d
drm/i915: Use the coarse ping-pong mechanism based on drm fd to dispatch the BSD command on BDW GT3

The BDW GT3 has two independent BSD rings, which can be used to process the
video commands. To be simpler, it is transparent to user-space driver/middle.
Instead the kernel driver will decide which ring is to dispatch the BSD video
command.

As every BSD ring is powerful, it is enough to dispatch the BSD video command
based on the drm fd. In such case it can play back video stream while encoding
another video stream. The coarse ping-pong mechanism is used to determine
which BSD ring is used to dispatch the BSD video command.

V1->V2: Follow Daniel's comment and use the simple ping-pong mechanism.
This is only to add the support of dual BSD rings on BDW GT3 machine.
The further optimization will be considered in another patch set.

V2->V3: Follow Daniel's comment to use the struct_mutext instead of
atomic_t during determining which ring can be used to dispatch Video command.

Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_execbuffer.c