[Intel-gfx] [RFC PATCH 00/11] i915 HW context support
Ben Widawsky
ben at bwidawsk.net
Tue Feb 14 22:09:07 CET 2012
These patches are a heavily revised version of the patches I wrote over
a year ago. These patches have passed basic tests on SNB, and IVB, and
older versions worked on ILK. In theory, context support should work
all the way back to Gen4, but I haven't tested it. Also since I suspect
ILK may be unstable, so the code has it disabled for now.
HW contexts provide a way for the GPU to save an restore certain state
in between batchbuffer boundaries. Typically, GPU clients must re-emit
the entire state every time they run because the client does not know
what has been destroyed since the last time. With these patches the
driver will emit special instructions to do this on behalf of the client
if it has registered a context, and included that with the batchbuffer.
[... From Ken Graunke ]
This is needed to properly implement Transform Feedback in the presence
of Geometry Shaders, since software wouldn't be able to track the SVBI0
register to restore it to its previous state.
The IOCTLs defined here may also be used with ppgtt (real ppgtt) but the
interface may be insufficient for that. The contexts do provide a
I've tested this with an experiemental mesa from Ken Graunke, as well as
some basic i-g-t tests.
i-g-t:
git://people.freedesktop.org/~bwidawsk/intel-gpu-tools context_support
libdrm:
git://people.freedesktop.org/~bwidawsk/drm context_support
kernel:
git://people.freedesktop.org/~bwidawsk/drm-intel context_support
I'm getting really tired of looking at these, please help me polish them
up and make them more ready for consumption. I did consider moving the
power context allocation to this set of APIs, but it didn't seem worth
it to me. I can go either way.
Ben Widawsky (11):
drm/i915: MI_ARB_ON_OFF
drm/i915: track tlb invalidate GFX_MODE state
drm/i915: PIPE_CONTROL_TLB_INVALIDATE
drm/i915/context: CXT_SIZE register offsets added
drm/i915/context: Preliminary context support
drm/i915/context: ringbuffer context switch code
drm/i915/context: implementation details
drm/i915/context: extend contexts to execbuffer2
drm/i915/context: add params
drm/i915/context: track contexts per device
drm/i915: show contexts in debugfs
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/i915_context.c | 562 ++++++++++++++++++++++++++++
drivers/gpu/drm/i915/i915_debugfs.c | 6 +
drivers/gpu/drm/i915/i915_dma.c | 10 +
drivers/gpu/drm/i915/i915_drv.h | 47 +++
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 26 ++-
drivers/gpu/drm/i915/i915_reg.h | 17 +
drivers/gpu/drm/i915/intel_ringbuffer.c | 122 ++++++
drivers/gpu/drm/i915/intel_ringbuffer.h | 11 +-
include/drm/i915_drm.h | 18 +
10 files changed, 815 insertions(+), 5 deletions(-)
create mode 100644 drivers/gpu/drm/i915/i915_context.c
--
1.7.9
More information about the Intel-gfx
mailing list