<div class="gmail_quote">On Thu, Dec 29, 2011 at 23:52, Eric Anholt <span dir="ltr"><<a href="mailto:eric@anholt.net">eric@anholt.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

These registers are automatically incremented by the hardware during<br>
transform feedback to track where the next streamed vertex output<br>
should go.  Unlike the previous generation, which had a packet for<br>
setting the corresponding registers to a defined value, gen7 only has<br>
MI_LOAD_REGISTER_IMM to do so.  That's a secure packet (since it loads<br>
an arbitrary register), so we need to do it from the kernel, and it<br>
needs to be settable atomically with the batchbuffer execution so that<br>
two clients doing transform feedback don't stomp on each others'<br>
state.<br>
<br>
Instead of building a more complicated interface involcing setting the<br>
registers to a specific value, just set them to 0 when asked and<br>
userland can tweak its pointers accordingly.<br>
<br>
Signed-off-by: Eric Anholt <<a href="mailto:eric@anholt.net">eric@anholt.net</a>><br></blockquote><div></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


---<br>
 drivers/gpu/drm/i915/i915_dma.c            |    3 ++<br>
 drivers/gpu/drm/i915/i915_gem_execbuffer.c |   31 ++++++++++++++++++++++++++++<br>
 drivers/gpu/drm/i915/i915_reg.h            |    6 +++++<br>
 include/drm/i915_drm.h                     |    4 +++<br>
 4 files changed, 44 insertions(+), 0 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c<br>
index a9ae374..1add685 100644<br>
--- a/drivers/gpu/drm/i915/i915_dma.c<br>
+++ b/drivers/gpu/drm/i915/i915_dma.c<br>
@@ -781,6 +781,9 @@ static int i915_getparam(struct drm_device *dev, void *data,<br>
        case I915_PARAM_HAS_RELAXED_DELTA:<br>
                value = 1;<br>
                break;<br>
+       case I915_PARAM_HAS_GEN7_SOL_RESET:<br>
+               value = 1;<br></blockquote><div><br>Wouldn't it be better to have:<br>                   value = IS_GEN7(dev);<br><br>as it is gen7+-specific item. This way, userspace could check for this support early, and avoid setting the flag on the batchbuffer in vain on pre-gen7 architectures.<br>

<br>Either way, it will work, so:<br clear="all"></div></div><br>
Reviewed-by: Eugeni Dodonov <<a href="mailto:eugeni.dodonov@intel.com">eugeni.dodonov@intel.com</a>><br><br>-- <br>Eugeni Dodonov<a href="http://eugeni.dodonov.net/" target="_blank"><br></a><br>