// // Copyright 2018 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // UtilsVk.h: // Defines the UtilsVk class, a helper for various internal draw/dispatch utilities such as // buffer clear and copy, image clear and copy, texture mip map generation, etc. // // - Convert index buffer: // * Used by VertexArrayVk::convertIndexBufferGPU() to convert a ubyte element array to ushort // - Convert vertex buffer: // * Used by VertexArrayVk::convertVertexBufferGPU() to convert vertex attributes from // unsupported formats to their fallbacks. // - Image clear: Used by FramebufferVk::clearWithDraw(). // - Image copy: Used by TextureVk::copySubImageImplWithDraw(). // - Image copy bits: Used by ImageHelper::CopyImageSubData() to perform bitwise copies between // RGB formats where at least one of src and dst use RGBA as fallback. // - Color blit/resolve: Used by FramebufferVk::blit() to implement blit or multisample resolve // on color images. // - Depth/Stencil blit/resolve: Used by FramebufferVk::blit() to implement blit or multisample // resolve on depth/stencil images. // - Generate mipmap: Used by TextureVk::generateMipmapsWithCompute(). // - Overlay Draw: Used by OverlayVk to draw a UI for debugging. // - Mipmap generation: Used by TextureVk to generate mipmaps more efficiently in compute. // #ifndef LIBANGLE_RENDERER_VULKAN_UTILSVK_H_ #define LIBANGLE_RENDERER_VULKAN_UTILSVK_H_ #include "libANGLE/renderer/vulkan/BufferVk.h" #include "libANGLE/renderer/vulkan/vk_cache_utils.h" #include "libANGLE/renderer/vulkan/vk_helpers.h" #include "libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h" namespace rx { class UtilsVk : angle::NonCopyable { … }; // This class' responsibility is to create index buffers needed to support line loops in Vulkan. // In the setup phase of drawing, the createIndexBuffer method should be called with the // current draw call parameters. If an element array buffer is bound for an indexed draw, use // createIndexBufferFromElementArrayBuffer. // // If the user wants to draw a loop between [v1, v2, v3], we will create an indexed buffer with // these indexes: [0, 1, 2, 3, 0] to emulate the loop. class LineLoopHelper final : angle::NonCopyable { … }; } // namespace rx #endif // LIBANGLE_RENDERER_VULKAN_UTILSVK_H_