This reverts commit e54d0f90. Reason for revert: causes compile failure on Linux CFI bot. Sample build: https://ci.chromium.org/p/chromium/builders/ci/Linux%20CFI/14810 Sample log: https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8903575125463586160/+/steps/compile/0/stdout?format=raw Original change's description: > Vulkan: Debug overlay > > A debug overlay system for the Vulkan backend designed with efficiency > and runtime configurability in mind. Overlay widgets are of two > fundamental types: > > - Text widgets: A single line of text with small, medium or large font. > - Graph widgets: A bar graph of data. > > Built on these, various overlay widget types are defined that gather > statistics. Five such types are defined with one widget per type as > example: > > - Count: A widget that counts something. VulkanValidationMessageCount > is an overlay widget of this type that shows the number of validation > messages received from the validation layers. > - Text: A generic text. VulkanLastValidationMessage is an overlay > widget of this type that shows the last validation message. > - PerSecond: A value that gets reset every second automatically. FPS is > an overlay widget of this type that simply gets incremented on every > swap(). > - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an > overlay of this type. On every vkQueueSubmit, the number of nodes in > the command graph is accumulated. On every present(), the value is > taken as the number of nodes for the whole duration of the frame. > - RunningHistogram: A histogram of last N values. Input values are in > the [0, 1] range and they are ranked to N buckets for histogram > calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay > widget of this type. On vkQueueSubmit, the memory waste from command > buffer pool allocations is recorded in the histogram. > > Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py > processes to create an array of bits, which is processed at runtime to > create the actual font image (an image with 3 layers). > > The overlay widget layout is defined in overlay_widgets.json which > gen_overlay_widgets.py processes to generate an array of widgetss, each > of its respective type, and sets their properties, such as color and > bounding box. The json file allows widgets to align against other > widgets as well as against the framebuffer edges. > > Two compute shaders are implemented to efficiently render the UI: > > - OverlayCull: This shader creates a bitset of Text and Graph widgets > whose bounding boxes intersect a corresponding subgroup processed by > OverlayDraw. This is done only when the enabled overlay widgets are > changed (a feature that is not yet implemented) or the surface is > resized. > - OverlayDraw: Using the bitsets generated by OverlayCull, values that > are uniform for each workgroup (set to be equal to hardware subgroup > size), this shader loops over enabled widgets that can possibly > intersect the pixel being processed and renders and blends in texts > and graphs. This is done once per frame on present(). > > Currently, to enable overlay widgets an environment variable is used. > For example: > > $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste > $ ./hello_triangle --use-angle=vulkan > > Possible future work: > > - On Android, add settings in developer options and enable widgets based > on those. > - Spawn a small server in ANGLE and write an application that sends > enable/disable commands remotely. > - Implement overlay for other backends. > > Bug: angleproject:3757 > Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,syoussefi@chromium.org,jmadill@chromium.org Bug: angleproject:3757 Change-Id: Ib08e2e7b1a9449ca097673acb11655df5d2bbf31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778862 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by:Corentin Wallez <cwallez@chromium.org>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| cgl | Loading commit data... | |
| egl | Loading commit data... | |
| glx | Loading commit data... | |
| wgl | Loading commit data... | |
| BlitGL.cpp | Loading commit data... | |
| BlitGL.h | Loading commit data... | |
| BufferGL.cpp | Loading commit data... | |
| BufferGL.h | Loading commit data... | |
| ClearMultiviewGL.cpp | Loading commit data... | |
| ClearMultiviewGL.h | Loading commit data... | |
| CompilerGL.cpp | Loading commit data... | |
| CompilerGL.h | Loading commit data... | |
| ContextGL.cpp | Loading commit data... | |
| ContextGL.h | Loading commit data... | |
| DispatchTableGL_autogen.cpp | Loading commit data... | |
| DispatchTableGL_autogen.h | Loading commit data... | |
| DisplayGL.cpp | Loading commit data... | |
| DisplayGL.h | Loading commit data... | |
| FeatureSupportGL.md | Loading commit data... | |
| FenceNVGL.cpp | Loading commit data... | |
| FenceNVGL.h | Loading commit data... | |
| FramebufferGL.cpp | Loading commit data... | |
| FramebufferGL.h | Loading commit data... | |
| FunctionsGL.cpp | Loading commit data... | |
| FunctionsGL.h | Loading commit data... | |
| ImageGL.cpp | Loading commit data... | |
| ImageGL.h | Loading commit data... | |
| MemoryObjectGL.cpp | Loading commit data... | |
| MemoryObjectGL.h | Loading commit data... | |
| PathGL.cpp | Loading commit data... | |
| PathGL.h | Loading commit data... | |
| ProgramGL.cpp | Loading commit data... | |
| ProgramGL.h | Loading commit data... | |
| ProgramPipelineGL.cpp | Loading commit data... | |
| ProgramPipelineGL.h | Loading commit data... | |
| QueryGL.cpp | Loading commit data... | |
| QueryGL.h | Loading commit data... | |
| RenderbufferGL.cpp | Loading commit data... | |
| RenderbufferGL.h | Loading commit data... | |
| RendererGL.cpp | Loading commit data... | |
| RendererGL.h | Loading commit data... | |
| SamplerGL.cpp | Loading commit data... | |
| SamplerGL.h | Loading commit data... | |
| SemaphoreGL.cpp | Loading commit data... | |
| SemaphoreGL.h | Loading commit data... | |
| ShaderGL.cpp | Loading commit data... | |
| ShaderGL.h | Loading commit data... | |
| StateManagerGL.cpp | Loading commit data... | |
| StateManagerGL.h | Loading commit data... | |
| SurfaceGL.cpp | Loading commit data... | |
| SurfaceGL.h | Loading commit data... | |
| SyncGL.cpp | Loading commit data... | |
| SyncGL.h | Loading commit data... | |
| TextureGL.cpp | Loading commit data... | |
| TextureGL.h | Loading commit data... | |
| TransformFeedbackGL.cpp | Loading commit data... | |
| TransformFeedbackGL.h | Loading commit data... | |
| VertexArrayGL.cpp | Loading commit data... | |
| VertexArrayGL.h | Loading commit data... | |
| formatutilsgl.cpp | Loading commit data... | |
| formatutilsgl.h | Loading commit data... | |
| functionsgl_enums.h | Loading commit data... | |
| functionsgl_typedefs.h | Loading commit data... | |
| generate_gl_dispatch_table.py | Loading commit data... | |
| gl_bindings_data.json | Loading commit data... | |
| null_functions.cpp | Loading commit data... | |
| null_functions.h | Loading commit data... | |
| renderergl_utils.cpp | Loading commit data... | |
| renderergl_utils.h | Loading commit data... |