CopyStream: Change way the cmdBuffer is recorded

Before, keep submiting a lots of command buffer to emulate the
glBufferSubData in glbench, which adds lots of CPU overhead and not
ideal for vulkan benchmark.

Instead, We try to record multiple copy command in one single command
buffer and submit it. Also adds specific fences and remove unneeded
calls, e.g. draw calls.

- Move Setup/Destroy function out of the time measurement.
- Add RunFunc function
- copy.BufferStream now records commandbuffer that tries to copy the
  buffer into another buffer segment by segment.

glinux: amd:6981
-> glbench.copy_streaming_subdata_override ->  57.97 mbytes_sec
-> glbench.copy_streaming_subdata -> 57.41 mbytes_sec
-> vkbench.BufferStreaming -> 129.73 mbytes_sec

zork: amd:15d8
-> glbench.copy_streaming_subdata_override ->  5.89 mbytes_sec
-> glbench.copy_streaming_subdata -> 35.89 mbytes_sec
-> vkbench.BufferStreaming -> 58.68 mbytes_sec

brya:omnigul intel:46a8 i5-1235U
-> glbench.copy_streaming_subdata_override ->  4.58 mbytes_sec
-> glbench.copy_streaming_subdata -> 124.93 mbytes_sec
-> vkbench.BufferStreaming -> 15.68 mbytes_sec

brya:primus intel:46a3 i3-1215U
-> glbench.copy_streaming_subdata_override ->  3.62 mbytes_sec
-> glbench.copy_streaming_subdata -> 123.09 mbytes_sec
-> vkbench.BufferStreaming -> 13.89 mbytes_sec

BUG=b:291637728
TEST=see above

Change-Id: If22b108dedc3b44f9b46136a47ac39005b3031c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vkbench/+/5404238
Tested-by: Po-Hsien Wang <pwang@chromium.org>
Commit-Queue: Po-Hsien Wang <pwang@chromium.org>
Reviewed-by: Prahlad Kilambi <prahladk@google.com>
Auto-Submit: Po-Hsien Wang <pwang@chromium.org>
6 files changed