Skip to content
  • Danylo Piliaiev's avatar
    anv: Implement VK_EXT_conditional_rendering for gen 7.5+ · 1952fd8d
    Danylo Piliaiev authored and Faith Ekstrand's avatar Faith Ekstrand committed
    
    
    Conditional rendering affects next functions:
    - vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect
    - vkCmdDrawIndirectCountKHR, vkCmdDrawIndexedIndirectCountKHR
    - vkCmdDispatch, vkCmdDispatchIndirect, vkCmdDispatchBase
    - vkCmdClearAttachments
    
    Value from conditional buffer is cached into designated register,
    MI_PREDICATE is emitted every time conditional rendering is enabled
    and command requires it.
    
    v2: by Jason Ekstrand
      - Use vk_find_struct_const instead of manually looping
      - Move draw count loading to prepare function
      - Zero the top 32-bits of MI_ALU_REG15
    
    v3: Apply pipeline flush before accessing conditional buffer
     (The issue was found by Samuel Iglesias)
    
    v4: - Remove support of Haswell due to possible hardware bug
        - Made TMP_REG_PREDICATE and TMP_REG_DRAW_COUNT defines to
           define registers in one place.
    
    v5: thanks to Jason Ekstrand and Lionel Landwerlin
        - Workaround the fact that MI_PREDICATE_RESULT is not
          accessible on Haswell by manually calculating
          MI_PREDICATE_RESULT and re-emitting MI_PREDICATE
          when necessary.
    
    v6: suggested by Lionel Landwerlin
        - Instead of calculating the result of predicate once - re-emit
          MI_PREDICATE to make it easier to investigate error states.
    
    v7: suggested by Jason
        - Make anv_pipe_invalidate_bits_for_access_flag add CS_STALL
          if VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT is set.
    
    v8: suggested by Lionel
        - Precompute conditional predicate's result to
          support secondary command buffers.
        - Make prepare_for_draw_count_predicate more readable.
    
    Signed-off-by: default avatarDanylo Piliaiev <danylo.piliaiev@globallogic.com>
    Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
    1952fd8d