Skip to content

gallium/threaded_context: add another rule for buffer mapping

Mike Blumenkrantz requested to merge zmike/mesa:tc-rules into master

a synchronous driver can use PIPE_MAP_ONCE to infer that a buffer is guaranteed to not be mapped multiple times, as this is only used when doing map -> memcpy -> unmap directly

a threaded driver performs maps/unmaps asynchronously, so this flag can only be used by the driver to confirm that the mapped region is accessed exactly once, not that it will not need to remain mapped for other transfer_map uses after it is unmapped

in short, consider this scenario:\

  transfer_map(A) -> memcpy(map, data) -> transfer_unmap(map_A) ->
  transfer_map(A) -> memcpy(map, data) -> transfer_unmap(map_A)

when a synchronous driver executes this, the call chain is unmodified

when a tc driver executes this, the call chain may become:\

  transfer_map(A) -> memcpy(map, data) ->
  transfer_map(A) -> memcpy(map, data) ->
  transfer_unmap(map_A) -> transfer_unmap(map_A)
Edited by Mike Blumenkrantz

Merge request reports

Loading