iris: Enable PIPE_CAP_SURFACE_REINTERPRET_BLOCKS
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 1 May 2019 21:34:00 +0000 (14:34 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 6 May 2019 16:50:32 +0000 (09:50 -0700)
commita032a9665f275085c825b54b62128ae90adba1c6
tree066e3347769101f8bb663fd88d241f3fa88fe00c
parent8139efbbbd2f07cd4d88488ca5c34c2c19ef10d4
iris: Enable PIPE_CAP_SURFACE_REINTERPRET_BLOCKS

This makes CompressedTexSubImage from a PBO source do proper GPU
rendering to upload instead of stalling to map the PBO source on
the CPU (then copying it on the CPU).

Thanks Bas Nieuwenhuizen for pointing out that Vulkan includes this
functionality, and to Jason Ekstrand for writing the code I adapted.
Vulkan only supports a single layer, however, and this code tries to
support multiple layers as long as it's miplevel 0.

Improves performance in Sid Meier's Civilization VI:

   Average frame time (ms):         -3.67423% +/- 1.46201% (n=5)
   99th percentile frame time (ms): -5.09910% +/- 3.87874% (n=5)
src/gallium/drivers/iris/iris_screen.c
src/gallium/drivers/iris/iris_state.c