• Eric Anholt's avatar
    drm/i915: Add support for resetting the SO write pointers on gen7. · ae662d31
    Eric Anholt authored
    These registers are automatically incremented by the hardware during
    transform feedback to track where the next streamed vertex output
    should go.  Unlike the previous generation, which had a packet for
    setting the corresponding registers to a defined value, gen7 only has
    MI_LOAD_REGISTER_IMM to do so.  That's a secure packet (since it loads
    an arbitrary register), so we need to do it from the kernel, and it
    needs to be settable atomically with the batchbuffer execution so that
    two clients doing transform feedback don't stomp on each others'
    state.
    
    Instead of building a more complicated interface involcing setting the
    registers to a specific value, just set them to 0 when asked and
    userland can tweak its pointers accordingly.
    Signed-off-by: default avatarEric Anholt <eric@anholt.net>
    Reviewed-by: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
    Reviewed-by: default avatarKenneth Graunke <kenneth@whitecape.org>
    Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
    ae662d31
i915_dma.c 58.2 KB