#include "libANGLE/renderer/vulkan/vk_cache_utils.h"
#include "common/aligned_memory.h"
#include "common/system_utils.h"
#include "libANGLE/BlobCache.h"
#include "libANGLE/VertexAttribute.h"
#include "libANGLE/renderer/vulkan/DisplayVk.h"
#include "libANGLE/renderer/vulkan/FramebufferVk.h"
#include "libANGLE/renderer/vulkan/ProgramVk.h"
#include "libANGLE/renderer/vulkan/TextureVk.h"
#include "libANGLE/renderer/vulkan/VertexArrayVk.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "libANGLE/renderer/vulkan/vk_helpers.h"
#include "libANGLE/renderer/vulkan/vk_renderer.h"
#include <type_traits>
namespace rx
{
#if defined(ANGLE_DUMP_PIPELINE_CACHE_GRAPH)
constexpr bool kDumpPipelineCacheGraph = true;
#else
constexpr bool kDumpPipelineCacheGraph = …;
#endif
namespace vk
{
namespace
{
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
constexpr uint16_t kMinSampleShadingScale = …;
VkAttachmentLoadOp ConvertRenderPassLoadOpToVkLoadOp(RenderPassLoadOp loadOp)
{ … }
VkAttachmentStoreOp ConvertRenderPassStoreOpToVkStoreOp(RenderPassStoreOp storeOp)
{ … }
constexpr size_t TransitionBits(size_t size)
{ … }
constexpr size_t kPipelineShadersDescOffset = …;
constexpr size_t kPipelineShadersDescSize = …;
constexpr size_t kPipelineFragmentOutputDescOffset = …;
constexpr size_t kPipelineFragmentOutputDescSize = …;
constexpr size_t kPipelineVertexInputDescOffset = …;
constexpr size_t kPipelineVertexInputDescSize = …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
constexpr GraphicsPipelineTransitionBits kPipelineShadersTransitionBitsMask = …;
constexpr GraphicsPipelineTransitionBits kPipelineFragmentOutputTransitionBitsMask = …;
constexpr GraphicsPipelineTransitionBits kPipelineVertexInputTransitionBitsMask = …;
bool GraphicsPipelineHasVertexInput(GraphicsPipelineSubset subset)
{ … }
bool GraphicsPipelineHasShaders(GraphicsPipelineSubset subset)
{ … }
bool GraphicsPipelineHasShadersOrFragmentOutput(GraphicsPipelineSubset subset)
{ … }
bool GraphicsPipelineHasFragmentOutput(GraphicsPipelineSubset subset)
{ … }
uint8_t PackGLBlendOp(gl::BlendEquationType blendOp)
{ … }
VkBlendOp UnpackBlendOp(uint8_t packedBlendOp)
{ … }
uint8_t PackGLBlendFactor(gl::BlendFactorType blendFactor)
{ … }
struct DynamicRenderingInfo : angle::NonCopyable
{ … };
void UnpackAttachmentInfo(VkImageLayout layout,
RenderPassLoadOp loadOp,
RenderPassStoreOp storeOp,
VkImageLayout resolveLayout,
VkResolveModeFlagBits resolveMode,
VkRenderingAttachmentInfo *infoOut)
{ … }
enum class DynamicRenderingInfoSubset
{ … };
void DeriveRenderingInfo(Renderer *renderer,
const RenderPassDesc &desc,
DynamicRenderingInfoSubset subset,
const gl::Rectangle &renderArea,
VkSubpassContents subpassContents,
const FramebufferAttachmentsVector<VkImageView> &attachmentViews,
const vk::AttachmentOpsArray &ops,
const PackedClearValuesArray &clearValues,
uint32_t layerCount,
DynamicRenderingInfo *infoOut)
{ … }
void AttachPipelineRenderingInfo(Context *context,
const RenderPassDesc &desc,
const DynamicRenderingInfo &renderingInfo,
GraphicsPipelineSubset subset,
VkPipelineRenderingCreateInfoKHR *pipelineRenderingInfoOut,
VkRenderingAttachmentLocationInfoKHR *attachmentLocationsOut,
VkRenderingInputAttachmentIndexInfoKHR *inputLocationsOut,
VkPipelineCreateFlags2CreateInfoKHR *createFlags2,
VkGraphicsPipelineCreateInfo *createInfoOut)
{ … }
void UnpackAttachmentDesc(Renderer *renderer,
VkAttachmentDescription2 *desc,
angle::FormatID formatID,
uint8_t samples,
const PackedAttachmentOpsDesc &ops)
{ … }
struct AttachmentInfo
{ … };
void UnpackColorResolveAttachmentDesc(Renderer *renderer,
VkAttachmentDescription2 *desc,
angle::FormatID formatID,
const AttachmentInfo &info,
ImageLayout finalLayout)
{ … }
void UnpackDepthStencilResolveAttachmentDesc(vk::Context *context,
VkAttachmentDescription2 *desc,
angle::FormatID formatID,
const AttachmentInfo &depthInfo,
const AttachmentInfo &stencilInfo)
{ … }
void UnpackFragmentShadingRateAttachmentDesc(VkAttachmentDescription2 *desc)
{ … }
void UnpackStencilState(const PackedStencilOpState &packedState,
VkStencilOpState *stateOut,
bool writeMaskWorkaround)
{ … }
void UnpackBlendAttachmentState(const PackedColorBlendAttachmentState &packedState,
VkPipelineColorBlendAttachmentState *stateOut)
{ … }
void SetPipelineShaderStageInfo(const VkStructureType type,
const VkShaderStageFlagBits stage,
const VkShaderModule module,
const VkSpecializationInfo &specializationInfo,
VkPipelineShaderStageCreateInfo *shaderStage)
{ … }
void InitializeUnresolveSubpass(
const RenderPassDesc &desc,
const gl::DrawBuffersVector<VkAttachmentReference2> &drawSubpassColorAttachmentRefs,
const gl::DrawBuffersVector<VkAttachmentReference2> &drawSubpassResolveAttachmentRefs,
const VkAttachmentReference2 &depthStencilAttachmentRef,
const VkAttachmentReference2 &depthStencilResolveAttachmentRef,
gl::DrawBuffersVector<VkAttachmentReference2> *unresolveColorAttachmentRefs,
VkAttachmentReference2 *unresolveDepthStencilAttachmentRef,
FramebufferAttachmentsVector<VkAttachmentReference2> *unresolveInputAttachmentRefs,
FramebufferAttachmentsVector<uint32_t> *unresolvePreserveAttachmentRefs,
VkSubpassDescription2 *subpassDesc)
{ … }
constexpr size_t kSubpassFastVectorSize = …;
SubpassVector;
void InitializeUnresolveSubpassDependencies(const SubpassVector<VkSubpassDescription2> &subpassDesc,
bool unresolveColor,
bool unresolveDepthStencil,
std::vector<VkSubpassDependency2> *subpassDependencies)
{ … }
void InitializeDefaultSubpassSelfDependencies(
Context *context,
const RenderPassDesc &desc,
uint32_t subpassIndex,
std::vector<VkSubpassDependency2> *subpassDependencies)
{ … }
void InitializeMSRTSS(Context *context,
uint8_t renderToTextureSamples,
VkSubpassDescription2 *subpass,
VkSubpassDescriptionDepthStencilResolve *msrtssResolve,
VkMultisampledRenderToSingleSampledInfoEXT *msrtss)
{ … }
void SetRenderPassViewMask(Context *context,
const uint32_t *viewMask,
VkRenderPassCreateInfo2 *createInfo,
SubpassVector<VkSubpassDescription2> *subpassDesc)
{ … }
void ToAttachmentDesciption1(const VkAttachmentDescription2 &desc,
VkAttachmentDescription *desc1Out)
{ … }
void ToAttachmentReference1(const VkAttachmentReference2 &ref, VkAttachmentReference *ref1Out)
{ … }
void ToSubpassDescription1(const VkSubpassDescription2 &desc,
const FramebufferAttachmentsVector<VkAttachmentReference> &inputRefs,
const gl::DrawBuffersVector<VkAttachmentReference> &colorRefs,
const gl::DrawBuffersVector<VkAttachmentReference> &resolveRefs,
const VkAttachmentReference &depthStencilRef,
VkSubpassDescription *desc1Out)
{ … }
void ToSubpassDependency1(const VkSubpassDependency2 &dep, VkSubpassDependency *dep1Out)
{ … }
void ToRenderPassMultiviewCreateInfo(const VkRenderPassCreateInfo2 &createInfo,
VkRenderPassCreateInfo *createInfo1,
SubpassVector<uint32_t> *viewMasks,
VkRenderPassMultiviewCreateInfo *multiviewInfo)
{ … }
angle::Result CreateRenderPass1(Context *context,
const VkRenderPassCreateInfo2 &createInfo,
uint8_t viewCount,
RenderPass *renderPass)
{ … }
void UpdateRenderPassColorPerfCounters(const VkRenderPassCreateInfo2 &createInfo,
FramebufferAttachmentMask depthStencilAttachmentIndices,
RenderPassPerfCounters *countersOut)
{ … }
void UpdateSubpassColorPerfCounters(const VkRenderPassCreateInfo2 &createInfo,
const VkSubpassDescription2 &subpass,
RenderPassPerfCounters *countersOut)
{ … }
void UpdateRenderPassDepthStencilPerfCounters(const VkRenderPassCreateInfo2 &createInfo,
size_t renderPassIndex,
RenderPassPerfCounters *countersOut)
{ … }
void UpdateRenderPassDepthStencilResolvePerfCounters(
const VkRenderPassCreateInfo2 &createInfo,
const VkSubpassDescriptionDepthStencilResolve &depthStencilResolve,
RenderPassPerfCounters *countersOut)
{ … }
void UpdateRenderPassPerfCounters(
const RenderPassDesc &desc,
const VkRenderPassCreateInfo2 &createInfo,
const VkSubpassDescriptionDepthStencilResolve &depthStencilResolve,
RenderPassPerfCounters *countersOut)
{ … }
void GetRenderPassAndUpdateCounters(ContextVk *contextVk,
bool updatePerfCounters,
RenderPassHelper *renderPassHelper,
const RenderPass **renderPassOut)
{ … }
void InitializeSpecializationInfo(
const SpecializationConstants &specConsts,
SpecializationConstantMap<VkSpecializationMapEntry> *specializationEntriesOut,
VkSpecializationInfo *specializationInfoOut)
{ … }
template <typename SrcT>
void Int4Array_Set(uint8_t *arrayBytes, uint32_t arrayIndex, SrcT value)
{ … }
template <typename DestT>
DestT Int4Array_Get(const uint8_t *arrayBytes, uint32_t arrayIndex)
{ … }
constexpr size_t kTransitionByteShift = …;
constexpr size_t kBitsPerByte = …;
constexpr size_t kTransitionBitShift = …;
#define ANGLE_GET_TRANSITION_BIT(Member) …
#define ANGLE_GET_INDEXED_TRANSITION_BIT(Member, Index, BitWidth) …
constexpr char kDescriptorTypeNameMap[][30] = …;
enum class PipelineState
{ … };
UnpackedPipelineState;
PipelineStateBitSet;
[[maybe_unused]] void UnpackPipelineState(const GraphicsPipelineDesc &state,
GraphicsPipelineSubset subset,
UnpackedPipelineState *valuesOut)
{ … }
[[maybe_unused]] PipelineStateBitSet GetCommonPipelineState(
const std::vector<UnpackedPipelineState> &pipelines)
{ … }
bool IsPipelineState(size_t stateIndex, PipelineState pipelineState, size_t range)
{ … }
size_t GetPipelineStateSubIndex(size_t stateIndex, PipelineState pipelineState)
{ … }
PipelineState GetPipelineState(size_t stateIndex, bool *isRangedOut, size_t *subIndexOut)
{ … }
[[maybe_unused]] void OutputPipelineState(std::ostream &out, size_t stateIndex, uint32_t state)
{ … }
[[maybe_unused]] void OutputAllPipelineState(Context *context,
std::ostream &out,
const UnpackedPipelineState &pipeline,
GraphicsPipelineSubset subset,
const PipelineStateBitSet &include,
bool isCommonState)
{ … }
template <typename Hash>
void DumpPipelineCacheGraph(
Context *context,
const std::unordered_map<GraphicsPipelineDesc,
PipelineHelper,
Hash,
typename GraphicsPipelineCacheTypeHelper<Hash>::KeyEqual> &cache)
{ … }
void ReleaseCachedObject(ContextVk *contextVk, const FramebufferDesc &desc)
{ … }
void ReleaseCachedObject(Renderer *renderer, const FramebufferDesc &desc)
{ … }
void ReleaseCachedObject(ContextVk *contextVk, const DescriptorSetDescAndPool &descAndPool)
{ … }
void ReleaseCachedObject(Renderer *renderer, const DescriptorSetDescAndPool &descAndPool)
{ … }
void DestroyCachedObject(Renderer *renderer, const FramebufferDesc &desc)
{ … }
void DestroyCachedObject(Renderer *renderer, const DescriptorSetDescAndPool &descAndPool)
{ … }
angle::Result InitializePipelineFromLibraries(Context *context,
PipelineCacheAccess *pipelineCache,
const vk::PipelineLayout &pipelineLayout,
const vk::PipelineHelper &vertexInputPipeline,
const vk::PipelineHelper &shadersPipeline,
const vk::PipelineHelper &fragmentOutputPipeline,
const vk::GraphicsPipelineDesc &desc,
Pipeline *pipelineOut,
CacheLookUpFeedback *feedbackOut)
{ … }
bool ShouldDumpPipelineCacheGraph(Context *context)
{ … }
}
GraphicsPipelineTransitionBits GetGraphicsPipelineTransitionBitsMask(GraphicsPipelineSubset subset)
{ … }
RenderPassDesc::RenderPassDesc()
{ … }
RenderPassDesc::~RenderPassDesc() = default;
RenderPassDesc::RenderPassDesc(const RenderPassDesc &other)
{ … }
void RenderPassDesc::packColorAttachment(size_t colorIndexGL, angle::FormatID formatID)
{ … }
void RenderPassDesc::packColorAttachmentGap(size_t colorIndexGL)
{ … }
void RenderPassDesc::packDepthStencilAttachment(angle::FormatID formatID)
{ … }
void RenderPassDesc::packColorResolveAttachment(size_t colorIndexGL)
{ … }
void RenderPassDesc::packYUVResolveAttachment(size_t colorIndexGL)
{ … }
void RenderPassDesc::removeColorResolveAttachment(size_t colorIndexGL)
{ … }
void RenderPassDesc::packColorUnresolveAttachment(size_t colorIndexGL)
{ … }
void RenderPassDesc::removeColorUnresolveAttachment(size_t colorIndexGL)
{ … }
void RenderPassDesc::packDepthResolveAttachment()
{ … }
void RenderPassDesc::packStencilResolveAttachment()
{ … }
void RenderPassDesc::packDepthUnresolveAttachment()
{ … }
void RenderPassDesc::packStencilUnresolveAttachment()
{ … }
void RenderPassDesc::removeDepthStencilUnresolveAttachment()
{ … }
PackedAttachmentIndex RenderPassDesc::getPackedColorAttachmentIndex(size_t colorIndexGL)
{ … }
RenderPassDesc &RenderPassDesc::operator=(const RenderPassDesc &other)
{ … }
void RenderPassDesc::setWriteControlMode(gl::SrgbWriteControlMode mode)
{ … }
size_t RenderPassDesc::hash() const
{ … }
bool RenderPassDesc::isColorAttachmentEnabled(size_t colorIndexGL) const
{ … }
bool RenderPassDesc::hasDepthStencilAttachment() const
{ … }
size_t RenderPassDesc::clearableAttachmentCount() const
{ … }
size_t RenderPassDesc::attachmentCount() const
{ … }
void RenderPassDesc::setLegacyDither(bool enabled)
{ … }
void RenderPassDesc::beginRenderPass(
Context *context,
PrimaryCommandBuffer *primary,
const RenderPass &renderPass,
VkFramebuffer framebuffer,
const gl::Rectangle &renderArea,
VkSubpassContents subpassContents,
PackedClearValuesArray &clearValues,
const VkRenderPassAttachmentBeginInfo *attachmentBeginInfo) const
{ … }
void RenderPassDesc::beginRendering(
Context *context,
PrimaryCommandBuffer *primary,
const gl::Rectangle &renderArea,
VkSubpassContents subpassContents,
const FramebufferAttachmentsVector<VkImageView> &attachmentViews,
const AttachmentOpsArray &ops,
PackedClearValuesArray &clearValues,
uint32_t layerCount) const
{ … }
void RenderPassDesc::populateRenderingInheritanceInfo(
Renderer *renderer,
VkCommandBufferInheritanceRenderingInfo *infoOut,
gl::DrawBuffersArray<VkFormat> *colorFormatStorageOut) const
{ … }
void RenderPassDesc::updatePerfCounters(
Context *context,
const FramebufferAttachmentsVector<VkImageView> &attachmentViews,
const AttachmentOpsArray &ops,
angle::VulkanPerfCounters *countersOut)
{ … }
bool operator==(const RenderPassDesc &lhs, const RenderPassDesc &rhs)
{ … }
void *GraphicsPipelineDesc::operator new(std::size_t size)
{ … }
void GraphicsPipelineDesc::operator delete(void *ptr)
{ … }
GraphicsPipelineDesc::GraphicsPipelineDesc()
{ … }
GraphicsPipelineDesc::~GraphicsPipelineDesc() = default;
GraphicsPipelineDesc::GraphicsPipelineDesc(const GraphicsPipelineDesc &other)
{ … }
GraphicsPipelineDesc &GraphicsPipelineDesc::operator=(const GraphicsPipelineDesc &other)
{ … }
const void *GraphicsPipelineDesc::getPipelineSubsetMemory(GraphicsPipelineSubset subset,
size_t *sizeOut) const
{ … }
size_t GraphicsPipelineDesc::hash(GraphicsPipelineSubset subset) const
{ … }
bool GraphicsPipelineDesc::keyEqual(const GraphicsPipelineDesc &other,
GraphicsPipelineSubset subset) const
{ … }
void GraphicsPipelineDesc::initDefaults(const Context *context,
GraphicsPipelineSubset subset,
PipelineRobustness pipelineRobustness,
PipelineProtectedAccess pipelineProtectedAccess)
{ … }
VkResult GraphicsPipelineDesc::initializePipeline(Context *context,
PipelineCacheAccess *pipelineCache,
GraphicsPipelineSubset subset,
const RenderPass &compatibleRenderPass,
const PipelineLayout &pipelineLayout,
const ShaderModuleMap &shaders,
const SpecializationConstants &specConsts,
Pipeline *pipelineOut,
CacheLookUpFeedback *feedbackOut) const
{ … }
angle::FormatID patchVertexAttribComponentType(angle::FormatID format,
gl::ComponentType vsInputType)
{ … }
VkFormat GraphicsPipelineDesc::getPipelineVertexInputStateFormat(
Context *context,
angle::FormatID formatID,
bool compressed,
const gl::ComponentType programAttribType,
uint32_t attribIndex)
{ … }
void GraphicsPipelineDesc::initializePipelineVertexInputState(
Context *context,
GraphicsPipelineVertexInputVulkanStructs *stateOut,
GraphicsPipelineDynamicStateList *dynamicStateListOut) const
{ … }
void GraphicsPipelineDesc::initializePipelineShadersState(
Context *context,
const ShaderModuleMap &shaders,
const SpecializationConstants &specConsts,
GraphicsPipelineShadersVulkanStructs *stateOut,
GraphicsPipelineDynamicStateList *dynamicStateListOut) const
{ … }
void GraphicsPipelineDesc::initializePipelineSharedNonVertexInputState(
Context *context,
GraphicsPipelineSharedNonVertexInputVulkanStructs *stateOut,
GraphicsPipelineDynamicStateList *dynamicStateListOut) const
{ … }
void GraphicsPipelineDesc::initializePipelineFragmentOutputState(
Context *context,
GraphicsPipelineFragmentOutputVulkanStructs *stateOut,
GraphicsPipelineDynamicStateList *dynamicStateListOut) const
{ … }
void GraphicsPipelineDesc::updateVertexInput(ContextVk *contextVk,
GraphicsPipelineTransitionBits *transition,
uint32_t attribIndex,
GLuint stride,
GLuint divisor,
angle::FormatID format,
bool compressed,
GLuint relativeOffset)
{ … }
void GraphicsPipelineDesc::setVertexShaderComponentTypes(gl::AttributesMask activeAttribLocations,
gl::ComponentTypeMask componentTypeMask)
{ … }
void GraphicsPipelineDesc::updateVertexShaderComponentTypes(
GraphicsPipelineTransitionBits *transition,
gl::AttributesMask activeAttribLocations,
gl::ComponentTypeMask componentTypeMask)
{ … }
void GraphicsPipelineDesc::setTopology(gl::PrimitiveMode drawMode)
{ … }
void GraphicsPipelineDesc::updateTopology(GraphicsPipelineTransitionBits *transition,
gl::PrimitiveMode drawMode)
{ … }
void GraphicsPipelineDesc::updateDepthClipControl(GraphicsPipelineTransitionBits *transition,
bool negativeOneToOne)
{ … }
void GraphicsPipelineDesc::updatePrimitiveRestartEnabled(GraphicsPipelineTransitionBits *transition,
bool primitiveRestartEnabled)
{ … }
void GraphicsPipelineDesc::updatePolygonMode(GraphicsPipelineTransitionBits *transition,
gl::PolygonMode polygonMode)
{ … }
void GraphicsPipelineDesc::updateCullMode(GraphicsPipelineTransitionBits *transition,
const gl::RasterizerState &rasterState)
{ … }
void GraphicsPipelineDesc::updateFrontFace(GraphicsPipelineTransitionBits *transition,
const gl::RasterizerState &rasterState,
bool invertFrontFace)
{ … }
void GraphicsPipelineDesc::updateRasterizerDiscardEnabled(
GraphicsPipelineTransitionBits *transition,
bool rasterizerDiscardEnabled)
{ … }
uint32_t GraphicsPipelineDesc::getRasterizationSamples() const
{ … }
void GraphicsPipelineDesc::setRasterizationSamples(uint32_t rasterizationSamples)
{ … }
void GraphicsPipelineDesc::updateRasterizationSamples(GraphicsPipelineTransitionBits *transition,
uint32_t rasterizationSamples)
{ … }
void GraphicsPipelineDesc::updateAlphaToCoverageEnable(GraphicsPipelineTransitionBits *transition,
bool enable)
{ … }
void GraphicsPipelineDesc::updateAlphaToOneEnable(GraphicsPipelineTransitionBits *transition,
bool enable)
{ … }
void GraphicsPipelineDesc::updateSampleMask(GraphicsPipelineTransitionBits *transition,
uint32_t maskNumber,
uint32_t mask)
{ … }
void GraphicsPipelineDesc::updateSampleShading(GraphicsPipelineTransitionBits *transition,
bool enable,
float value)
{ … }
void GraphicsPipelineDesc::setSingleBlend(uint32_t colorIndexGL,
bool enabled,
VkBlendOp op,
VkBlendFactor srcFactor,
VkBlendFactor dstFactor)
{ … }
void GraphicsPipelineDesc::updateBlendEnabled(GraphicsPipelineTransitionBits *transition,
gl::DrawBufferMask blendEnabledMask)
{ … }
void GraphicsPipelineDesc::updateBlendEquations(GraphicsPipelineTransitionBits *transition,
const gl::BlendStateExt &blendStateExt,
gl::DrawBufferMask attachmentMask)
{ … }
void GraphicsPipelineDesc::updateBlendFuncs(GraphicsPipelineTransitionBits *transition,
const gl::BlendStateExt &blendStateExt,
gl::DrawBufferMask attachmentMask)
{ … }
void GraphicsPipelineDesc::resetBlendFuncsAndEquations(GraphicsPipelineTransitionBits *transition,
const gl::BlendStateExt &blendStateExt,
gl::DrawBufferMask previousAttachmentsMask,
gl::DrawBufferMask newAttachmentsMask)
{ … }
void GraphicsPipelineDesc::setColorWriteMasks(gl::BlendStateExt::ColorMaskStorage::Type colorMasks,
const gl::DrawBufferMask &alphaMask,
const gl::DrawBufferMask &enabledDrawBuffers)
{ … }
void GraphicsPipelineDesc::setSingleColorWriteMask(uint32_t colorIndexGL,
VkColorComponentFlags colorComponentFlags)
{ … }
void GraphicsPipelineDesc::updateColorWriteMasks(
GraphicsPipelineTransitionBits *transition,
gl::BlendStateExt::ColorMaskStorage::Type colorMasks,
const gl::DrawBufferMask &alphaMask,
const gl::DrawBufferMask &enabledDrawBuffers)
{ … }
void GraphicsPipelineDesc::updateMissingOutputsMask(GraphicsPipelineTransitionBits *transition,
gl::DrawBufferMask missingOutputsMask)
{ … }
void GraphicsPipelineDesc::updateLogicOpEnabled(GraphicsPipelineTransitionBits *transition,
bool enable)
{ … }
void GraphicsPipelineDesc::updateLogicOp(GraphicsPipelineTransitionBits *transition,
VkLogicOp logicOp)
{ … }
void GraphicsPipelineDesc::setDepthTestEnabled(bool enabled)
{ … }
void GraphicsPipelineDesc::setDepthWriteEnabled(bool enabled)
{ … }
void GraphicsPipelineDesc::setDepthFunc(VkCompareOp op)
{ … }
void GraphicsPipelineDesc::setDepthClampEnabled(bool enabled)
{ … }
void GraphicsPipelineDesc::setStencilTestEnabled(bool enabled)
{ … }
void GraphicsPipelineDesc::setStencilFrontFuncs(VkCompareOp compareOp)
{ … }
void GraphicsPipelineDesc::setStencilBackFuncs(VkCompareOp compareOp)
{ … }
void GraphicsPipelineDesc::setStencilFrontOps(VkStencilOp failOp,
VkStencilOp passOp,
VkStencilOp depthFailOp)
{ … }
void GraphicsPipelineDesc::setStencilBackOps(VkStencilOp failOp,
VkStencilOp passOp,
VkStencilOp depthFailOp)
{ … }
void GraphicsPipelineDesc::updateDepthTestEnabled(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState,
const gl::Framebuffer *drawFramebuffer)
{ … }
void GraphicsPipelineDesc::updateDepthFunc(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState)
{ … }
void GraphicsPipelineDesc::updateDepthClampEnabled(GraphicsPipelineTransitionBits *transition,
bool enabled)
{ … }
void GraphicsPipelineDesc::updateSurfaceRotation(GraphicsPipelineTransitionBits *transition,
bool isRotatedAspectRatio)
{ … }
void GraphicsPipelineDesc::updateDepthWriteEnabled(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState,
const gl::Framebuffer *drawFramebuffer)
{ … }
void GraphicsPipelineDesc::updateStencilTestEnabled(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState,
const gl::Framebuffer *drawFramebuffer)
{ … }
void GraphicsPipelineDesc::updateStencilFrontFuncs(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState)
{ … }
void GraphicsPipelineDesc::updateStencilBackFuncs(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState)
{ … }
void GraphicsPipelineDesc::updateStencilFrontOps(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState)
{ … }
void GraphicsPipelineDesc::updateStencilBackOps(GraphicsPipelineTransitionBits *transition,
const gl::DepthStencilState &depthStencilState)
{ … }
void GraphicsPipelineDesc::updatePolygonOffsetEnabled(GraphicsPipelineTransitionBits *transition,
bool enabled)
{ … }
void GraphicsPipelineDesc::setRenderPassDesc(const RenderPassDesc &renderPassDesc)
{ … }
void GraphicsPipelineDesc::updateSubpass(GraphicsPipelineTransitionBits *transition,
uint32_t subpass)
{ … }
void GraphicsPipelineDesc::updatePatchVertices(GraphicsPipelineTransitionBits *transition,
GLuint value)
{ … }
void GraphicsPipelineDesc::resetSubpass(GraphicsPipelineTransitionBits *transition)
{ … }
void GraphicsPipelineDesc::nextSubpass(GraphicsPipelineTransitionBits *transition)
{ … }
void GraphicsPipelineDesc::setSubpass(uint32_t subpass)
{ … }
uint32_t GraphicsPipelineDesc::getSubpass() const
{ … }
void GraphicsPipelineDesc::updateEmulatedDitherControl(GraphicsPipelineTransitionBits *transition,
uint16_t value)
{ … }
void GraphicsPipelineDesc::updateNonZeroStencilWriteMaskWorkaround(
GraphicsPipelineTransitionBits *transition,
bool enabled)
{ … }
void GraphicsPipelineDesc::updateRenderPassDesc(GraphicsPipelineTransitionBits *transition,
const RenderPassDesc &renderPassDesc)
{ … }
void GraphicsPipelineDesc::setRenderPassSampleCount(GLint samples)
{ … }
void GraphicsPipelineDesc::setRenderPassFramebufferFetchMode(bool hasFramebufferFetch)
{ … }
void GraphicsPipelineDesc::setRenderPassColorAttachmentFormat(size_t colorIndexGL,
angle::FormatID formatID)
{ … }
void GraphicsPipelineDesc::setRenderPassFoveation(bool isFoveated)
{ … }
AttachmentOpsArray::AttachmentOpsArray()
{ … }
AttachmentOpsArray::~AttachmentOpsArray() = default;
AttachmentOpsArray::AttachmentOpsArray(const AttachmentOpsArray &other)
{ … }
AttachmentOpsArray &AttachmentOpsArray::operator=(const AttachmentOpsArray &other)
{ … }
const PackedAttachmentOpsDesc &AttachmentOpsArray::operator[](PackedAttachmentIndex index) const
{ … }
PackedAttachmentOpsDesc &AttachmentOpsArray::operator[](PackedAttachmentIndex index)
{ … }
void AttachmentOpsArray::initWithLoadStore(PackedAttachmentIndex index,
ImageLayout initialLayout,
ImageLayout finalLayout)
{ … }
void AttachmentOpsArray::setLayouts(PackedAttachmentIndex index,
ImageLayout initialLayout,
ImageLayout finalLayout)
{ … }
void AttachmentOpsArray::setOps(PackedAttachmentIndex index,
RenderPassLoadOp loadOp,
RenderPassStoreOp storeOp)
{ … }
void AttachmentOpsArray::setStencilOps(PackedAttachmentIndex index,
RenderPassLoadOp loadOp,
RenderPassStoreOp storeOp)
{ … }
void AttachmentOpsArray::setClearOp(PackedAttachmentIndex index)
{ … }
void AttachmentOpsArray::setClearStencilOp(PackedAttachmentIndex index)
{ … }
size_t AttachmentOpsArray::hash() const
{ … }
bool operator==(const AttachmentOpsArray &lhs, const AttachmentOpsArray &rhs)
{ … }
DescriptorSetLayoutDesc::DescriptorSetLayoutDesc()
: … { … }
DescriptorSetLayoutDesc::~DescriptorSetLayoutDesc() = default;
DescriptorSetLayoutDesc::DescriptorSetLayoutDesc(const DescriptorSetLayoutDesc &other) = default;
DescriptorSetLayoutDesc &DescriptorSetLayoutDesc::operator=(const DescriptorSetLayoutDesc &other) =
default;
size_t DescriptorSetLayoutDesc::hash() const
{ … }
bool DescriptorSetLayoutDesc::operator==(const DescriptorSetLayoutDesc &other) const
{ … }
void DescriptorSetLayoutDesc::addBinding(uint32_t bindingIndex,
VkDescriptorType descriptorType,
uint32_t count,
VkShaderStageFlags stages,
const Sampler *immutableSampler)
{ … }
void DescriptorSetLayoutDesc::unpackBindings(DescriptorSetLayoutBindingVector *bindings) const
{ … }
PipelineLayoutDesc::PipelineLayoutDesc()
: … { … }
PipelineLayoutDesc::~PipelineLayoutDesc() = default;
PipelineLayoutDesc::PipelineLayoutDesc(const PipelineLayoutDesc &other) = default;
PipelineLayoutDesc &PipelineLayoutDesc::operator=(const PipelineLayoutDesc &rhs)
{ … }
size_t PipelineLayoutDesc::hash() const
{ … }
bool PipelineLayoutDesc::operator==(const PipelineLayoutDesc &other) const
{ … }
void PipelineLayoutDesc::updateDescriptorSetLayout(DescriptorSetIndex setIndex,
const DescriptorSetLayoutDesc &desc)
{ … }
void PipelineLayoutDesc::updatePushConstantRange(VkShaderStageFlags stageMask,
uint32_t offset,
uint32_t size)
{ … }
CreateMonolithicPipelineTask::CreateMonolithicPipelineTask(
Renderer *renderer,
const PipelineCacheAccess &pipelineCache,
const PipelineLayout &pipelineLayout,
const ShaderModuleMap &shaders,
const SpecializationConstants &specConsts,
const GraphicsPipelineDesc &desc)
: … { … }
void CreateMonolithicPipelineTask::setCompatibleRenderPass(const RenderPass *compatibleRenderPass)
{ … }
void CreateMonolithicPipelineTask::operator()()
{ … }
void CreateMonolithicPipelineTask::handleError(VkResult result,
const char *file,
const char *function,
unsigned int line)
{ … }
WaitableMonolithicPipelineCreationTask::~WaitableMonolithicPipelineCreationTask()
{ … }
PipelineHelper::PipelineHelper() = default;
PipelineHelper::~PipelineHelper() = default;
void PipelineHelper::destroy(VkDevice device)
{ … }
void PipelineHelper::release(Context *context)
{ … }
void PipelineHelper::reset()
{ … }
angle::Result PipelineHelper::getPreferredPipeline(ContextVk *contextVk,
const Pipeline **pipelineOut)
{ … }
void PipelineHelper::addTransition(GraphicsPipelineTransitionBits bits,
const GraphicsPipelineDesc *desc,
PipelineHelper *pipeline)
{ … }
void PipelineHelper::setLinkedLibraryReferences(vk::PipelineHelper *shadersPipeline)
{ … }
void PipelineHelper::retainInRenderPass(RenderPassCommandBufferHelper *renderPassCommands)
{ … }
FramebufferHelper::FramebufferHelper() = default;
FramebufferHelper::~FramebufferHelper() = default;
FramebufferHelper::FramebufferHelper(FramebufferHelper &&other) : … { … }
FramebufferHelper &FramebufferHelper::operator=(FramebufferHelper &&other)
{ … }
angle::Result FramebufferHelper::init(Context *context, const VkFramebufferCreateInfo &createInfo)
{ … }
void FramebufferHelper::destroy(Renderer *renderer)
{ … }
void FramebufferHelper::release(ContextVk *contextVk)
{ … }
size_t DescriptorSetDesc::hash() const
{ … }
FramebufferDesc::FramebufferDesc()
{ … }
FramebufferDesc::~FramebufferDesc() = default;
FramebufferDesc::FramebufferDesc(const FramebufferDesc &other) = default;
FramebufferDesc &FramebufferDesc::operator=(const FramebufferDesc &other) = default;
void FramebufferDesc::update(uint32_t index, ImageOrBufferViewSubresourceSerial serial)
{ … }
void FramebufferDesc::updateColor(uint32_t index, ImageOrBufferViewSubresourceSerial serial)
{ … }
void FramebufferDesc::updateColorResolve(uint32_t index, ImageOrBufferViewSubresourceSerial serial)
{ … }
void FramebufferDesc::updateUnresolveMask(FramebufferNonResolveAttachmentMask unresolveMask)
{ … }
void FramebufferDesc::updateDepthStencil(ImageOrBufferViewSubresourceSerial serial)
{ … }
void FramebufferDesc::updateDepthStencilResolve(ImageOrBufferViewSubresourceSerial serial)
{ … }
void FramebufferDesc::updateFragmentShadingRate(ImageOrBufferViewSubresourceSerial serial)
{ … }
bool FramebufferDesc::hasFragmentShadingRateAttachment() const
{ … }
size_t FramebufferDesc::hash() const
{ … }
void FramebufferDesc::reset()
{ … }
bool FramebufferDesc::operator==(const FramebufferDesc &other) const
{ … }
uint32_t FramebufferDesc::attachmentCount() const
{ … }
FramebufferNonResolveAttachmentMask FramebufferDesc::getUnresolveAttachmentMask() const
{ … }
void FramebufferDesc::updateLayerCount(uint32_t layerCount)
{ … }
void FramebufferDesc::setFramebufferFetchMode(bool hasFramebufferFetch)
{ … }
void FramebufferDesc::updateRenderToTexture(bool isRenderToTexture)
{ … }
YcbcrConversionDesc::YcbcrConversionDesc()
{ … }
YcbcrConversionDesc::~YcbcrConversionDesc() = default;
YcbcrConversionDesc::YcbcrConversionDesc(const YcbcrConversionDesc &other) = default;
YcbcrConversionDesc &YcbcrConversionDesc::operator=(const YcbcrConversionDesc &rhs) = default;
size_t YcbcrConversionDesc::hash() const
{ … }
bool YcbcrConversionDesc::operator==(const YcbcrConversionDesc &other) const
{ … }
void YcbcrConversionDesc::reset()
{ … }
void YcbcrConversionDesc::update(Renderer *renderer,
uint64_t externalFormat,
VkSamplerYcbcrModelConversion conversionModel,
VkSamplerYcbcrRange colorRange,
VkChromaLocation xChromaOffset,
VkChromaLocation yChromaOffset,
VkFilter chromaFilter,
VkComponentMapping components,
angle::FormatID intendedFormatID,
YcbcrLinearFilterSupport linearFilterSupported)
{ … }
bool YcbcrConversionDesc::updateChromaFilter(Renderer *renderer, VkFilter filter)
{ … }
void YcbcrConversionDesc::updateConversionModel(VkSamplerYcbcrModelConversion conversionModel)
{ … }
angle::Result YcbcrConversionDesc::init(Context *context,
SamplerYcbcrConversion *conversionOut) const
{ … }
SamplerDesc::SamplerDesc()
{ … }
SamplerDesc::~SamplerDesc() = default;
SamplerDesc::SamplerDesc(const SamplerDesc &other) = default;
SamplerDesc &SamplerDesc::operator=(const SamplerDesc &rhs) = default;
SamplerDesc::SamplerDesc(ContextVk *contextVk,
const gl::SamplerState &samplerState,
bool stencilMode,
const YcbcrConversionDesc *ycbcrConversionDesc,
angle::FormatID intendedFormatID)
{ … }
void SamplerDesc::reset()
{ … }
void SamplerDesc::update(ContextVk *contextVk,
const gl::SamplerState &samplerState,
bool stencilMode,
const YcbcrConversionDesc *ycbcrConversionDesc,
angle::FormatID intendedFormatID)
{ … }
angle::Result SamplerDesc::init(ContextVk *contextVk, Sampler *sampler) const
{ … }
size_t SamplerDesc::hash() const
{ … }
bool SamplerDesc::operator==(const SamplerDesc &other) const
{ … }
SamplerHelper::SamplerHelper(ContextVk *contextVk)
: … { … }
SamplerHelper::~SamplerHelper() { … }
SamplerHelper::SamplerHelper(SamplerHelper &&samplerHelper)
{ … }
SamplerHelper &SamplerHelper::operator=(SamplerHelper &&rhs)
{ … }
RenderPassHelper::RenderPassHelper() : … { … }
RenderPassHelper::~RenderPassHelper() = default;
RenderPassHelper::RenderPassHelper(RenderPassHelper &&other)
{ … }
RenderPassHelper &RenderPassHelper::operator=(RenderPassHelper &&other)
{ … }
void RenderPassHelper::destroy(VkDevice device)
{ … }
void RenderPassHelper::release(ContextVk *contextVk)
{ … }
const RenderPass &RenderPassHelper::getRenderPass() const
{ … }
RenderPass &RenderPassHelper::getRenderPass()
{ … }
const RenderPassPerfCounters &RenderPassHelper::getPerfCounters() const
{ … }
RenderPassPerfCounters &RenderPassHelper::getPerfCounters()
{ … }
void WriteDescriptorDescs::updateWriteDesc(uint32_t bindingIndex,
VkDescriptorType descriptorType,
uint32_t descriptorCount)
{ … }
void WriteDescriptorDescs::updateShaderBuffers(
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const std::vector<gl::InterfaceBlock> &blocks,
VkDescriptorType descriptorType)
{ … }
void WriteDescriptorDescs::updateAtomicCounters(
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const std::vector<gl::AtomicCounterBuffer> &atomicCounterBuffers)
{ … }
void WriteDescriptorDescs::updateImages(const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap)
{ … }
void WriteDescriptorDescs::updateInputAttachments(
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
FramebufferVk *framebufferVk)
{ … }
void WriteDescriptorDescs::updateExecutableActiveTextures(
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::ProgramExecutable &executable)
{ … }
void WriteDescriptorDescs::updateDefaultUniform(
gl::ShaderBitSet shaderTypes,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::ProgramExecutable &executable)
{ … }
void WriteDescriptorDescs::updateTransformFeedbackWrite(
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::ProgramExecutable &executable)
{ … }
void WriteDescriptorDescs::updateDynamicDescriptorsCount()
{ … }
void WriteDescriptorDescs::streamOut(std::ostream &ostr) const
{ … }
void DescriptorSetDesc::updateDescriptorSet(Renderer *renderer,
const WriteDescriptorDescs &writeDescriptorDescs,
UpdateDescriptorSetsBuilder *updateBuilder,
const DescriptorDescHandles *handles,
VkDescriptorSet descriptorSet) const
{ … }
void DescriptorSetDesc::streamOut(std::ostream &ostr) const
{ … }
DescriptorSetDescBuilder::DescriptorSetDescBuilder() = default;
DescriptorSetDescBuilder::DescriptorSetDescBuilder(size_t descriptorCount)
{ … }
DescriptorSetDescBuilder::~DescriptorSetDescBuilder() { … }
DescriptorSetDescBuilder::DescriptorSetDescBuilder(const DescriptorSetDescBuilder &other)
: … { … }
DescriptorSetDescBuilder &DescriptorSetDescBuilder::operator=(const DescriptorSetDescBuilder &other)
{ … }
void DescriptorSetDescBuilder::updateUniformBuffer(uint32_t bindingIndex,
const WriteDescriptorDescs &writeDescriptorDescs,
const BufferHelper &bufferHelper,
VkDeviceSize bufferRange)
{ … }
void DescriptorSetDescBuilder::updateTransformFeedbackBuffer(
const Context *context,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const WriteDescriptorDescs &writeDescriptorDescs,
uint32_t xfbBufferIndex,
const BufferHelper &bufferHelper,
VkDeviceSize bufferOffset,
VkDeviceSize bufferRange)
{ … }
void DescriptorSetDescBuilder::updateUniformsAndXfb(
Context *context,
const gl::ProgramExecutable &executable,
const WriteDescriptorDescs &writeDescriptorDescs,
const BufferHelper *currentUniformBuffer,
const BufferHelper &emptyBuffer,
bool activeUnpaused,
TransformFeedbackVk *transformFeedbackVk)
{ … }
void UpdatePreCacheActiveTextures(const gl::ProgramExecutable &executable,
const std::vector<gl::SamplerBinding> &samplerBindings,
const gl::ActiveTextureMask &activeTextures,
const gl::ActiveTextureArray<TextureVk *> &textures,
const gl::SamplerBindingVector &samplers,
DescriptorSetDesc *desc)
{ … }
angle::Result DescriptorSetDescBuilder::updateFullActiveTextures(
Context *context,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const WriteDescriptorDescs &writeDescriptorDescs,
const gl::ProgramExecutable &executable,
const gl::ActiveTextureArray<TextureVk *> &textures,
const gl::SamplerBindingVector &samplers,
PipelineType pipelineType,
const SharedDescriptorSetCacheKey &sharedCacheKey)
{ … }
void DescriptorSetDescBuilder::setEmptyBuffer(uint32_t infoDescIndex,
VkDescriptorType descriptorType,
const BufferHelper &emptyBuffer)
{ … }
template <typename CommandBufferT>
void DescriptorSetDescBuilder::updateOneShaderBuffer(
CommandBufferT *commandBufferHelper,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const gl::InterfaceBlock &block,
uint32_t bufferIndex,
VkDescriptorType descriptorType,
VkDeviceSize maxBoundBufferRange,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs,
const GLbitfield memoryBarrierBits)
{ … }
template <typename CommandBufferT>
void DescriptorSetDescBuilder::updateShaderBuffers(
CommandBufferT *commandBufferHelper,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const std::vector<gl::InterfaceBlock> &blocks,
VkDescriptorType descriptorType,
VkDeviceSize maxBoundBufferRange,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs,
const GLbitfield memoryBarrierBits)
{ … }
template <typename CommandBufferT>
void DescriptorSetDescBuilder::updateAtomicCounters(
CommandBufferT *commandBufferHelper,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const std::vector<gl::AtomicCounterBuffer> &atomicCounterBuffers,
const VkDeviceSize requiredOffsetAlignment,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs)
{ … }
template void DescriptorSetDescBuilder::updateOneShaderBuffer<vk::RenderPassCommandBufferHelper>(
RenderPassCommandBufferHelper *commandBufferHelper,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const gl::InterfaceBlock &block,
uint32_t bufferIndex,
VkDescriptorType descriptorType,
VkDeviceSize maxBoundBufferRange,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs,
const GLbitfield memoryBarrierBits);
template void DescriptorSetDescBuilder::updateOneShaderBuffer<OutsideRenderPassCommandBufferHelper>(
OutsideRenderPassCommandBufferHelper *commandBufferHelper,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const gl::InterfaceBlock &block,
uint32_t bufferIndex,
VkDescriptorType descriptorType,
VkDeviceSize maxBoundBufferRange,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs,
const GLbitfield memoryBarrierBits);
template void DescriptorSetDescBuilder::updateShaderBuffers<OutsideRenderPassCommandBufferHelper>(
OutsideRenderPassCommandBufferHelper *commandBufferHelper,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const std::vector<gl::InterfaceBlock> &blocks,
VkDescriptorType descriptorType,
VkDeviceSize maxBoundBufferRange,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs,
const GLbitfield memoryBarrierBits);
template void DescriptorSetDescBuilder::updateShaderBuffers<RenderPassCommandBufferHelper>(
RenderPassCommandBufferHelper *commandBufferHelper,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const std::vector<gl::InterfaceBlock> &blocks,
VkDescriptorType descriptorType,
VkDeviceSize maxBoundBufferRange,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs,
const GLbitfield memoryBarrierBits);
template void DescriptorSetDescBuilder::updateAtomicCounters<OutsideRenderPassCommandBufferHelper>(
OutsideRenderPassCommandBufferHelper *commandBufferHelper,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const std::vector<gl::AtomicCounterBuffer> &atomicCounterBuffers,
const VkDeviceSize requiredOffsetAlignment,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs);
template void DescriptorSetDescBuilder::updateAtomicCounters<RenderPassCommandBufferHelper>(
RenderPassCommandBufferHelper *commandBufferHelper,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::BufferVector &buffers,
const std::vector<gl::AtomicCounterBuffer> &atomicCounterBuffers,
const VkDeviceSize requiredOffsetAlignment,
const BufferHelper &emptyBuffer,
const WriteDescriptorDescs &writeDescriptorDescs);
angle::Result DescriptorSetDescBuilder::updateImages(
Context *context,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
const gl::ActiveTextureArray<TextureVk *> &activeImages,
const std::vector<gl::ImageUnit> &imageUnits,
const WriteDescriptorDescs &writeDescriptorDescs)
{ … }
angle::Result DescriptorSetDescBuilder::updateInputAttachments(
vk::Context *context,
const gl::ProgramExecutable &executable,
const ShaderInterfaceVariableInfoMap &variableInfoMap,
FramebufferVk *framebufferVk,
const WriteDescriptorDescs &writeDescriptorDescs)
{ … }
void DescriptorSetDescBuilder::updateDescriptorSet(Renderer *renderer,
const WriteDescriptorDescs &writeDescriptorDescs,
UpdateDescriptorSetsBuilder *updateBuilder,
VkDescriptorSet descriptorSet) const
{ … }
template <class SharedCacheKeyT>
void SharedCacheKeyManager<SharedCacheKeyT>::addKey(const SharedCacheKeyT &key)
{ … }
template <class SharedCacheKeyT>
void SharedCacheKeyManager<SharedCacheKeyT>::releaseKeys(ContextVk *contextVk)
{ … }
template <class SharedCacheKeyT>
void SharedCacheKeyManager<SharedCacheKeyT>::releaseKeys(Renderer *renderer)
{ … }
template <class SharedCacheKeyT>
void SharedCacheKeyManager<SharedCacheKeyT>::destroyKeys(Renderer *renderer)
{ … }
template <class SharedCacheKeyT>
void SharedCacheKeyManager<SharedCacheKeyT>::clear()
{ … }
template <class SharedCacheKeyT>
bool SharedCacheKeyManager<SharedCacheKeyT>::containsKey(const SharedCacheKeyT &key) const
{ … }
template <class SharedCacheKeyT>
void SharedCacheKeyManager<SharedCacheKeyT>::assertAllEntriesDestroyed()
{ … }
template class SharedCacheKeyManager<SharedFramebufferCacheKey>;
template class SharedCacheKeyManager<SharedDescriptorSetCacheKey>;
std::unique_lock<angle::SimpleMutex> PipelineCacheAccess::getLock()
{ … }
VkResult PipelineCacheAccess::createGraphicsPipeline(vk::Context *context,
const VkGraphicsPipelineCreateInfo &createInfo,
vk::Pipeline *pipelineOut)
{ … }
VkResult PipelineCacheAccess::createComputePipeline(vk::Context *context,
const VkComputePipelineCreateInfo &createInfo,
vk::Pipeline *pipelineOut)
{ … }
void PipelineCacheAccess::merge(Renderer *renderer, const vk::PipelineCache &pipelineCache)
{ … }
}
UpdateDescriptorSetsBuilder::UpdateDescriptorSetsBuilder()
{ … }
UpdateDescriptorSetsBuilder::~UpdateDescriptorSetsBuilder() = default;
template <typename T, const T *VkWriteDescriptorSet::*pInfo>
void UpdateDescriptorSetsBuilder::growDescriptorCapacity(std::vector<T> *descriptorVector,
size_t newSize)
{ … }
template <typename T, const T *VkWriteDescriptorSet::*pInfo>
T *UpdateDescriptorSetsBuilder::allocDescriptorInfos(std::vector<T> *descriptorVector, size_t count)
{ … }
VkDescriptorBufferInfo *UpdateDescriptorSetsBuilder::allocDescriptorBufferInfos(size_t count)
{ … }
VkDescriptorImageInfo *UpdateDescriptorSetsBuilder::allocDescriptorImageInfos(size_t count)
{ … }
VkWriteDescriptorSet *UpdateDescriptorSetsBuilder::allocWriteDescriptorSets(size_t count)
{ … }
VkBufferView *UpdateDescriptorSetsBuilder::allocBufferViews(size_t count)
{ … }
uint32_t UpdateDescriptorSetsBuilder::flushDescriptorSetUpdates(VkDevice device)
{ … }
void FramebufferCache::destroy(vk::Renderer *renderer)
{ … }
bool FramebufferCache::get(ContextVk *contextVk,
const vk::FramebufferDesc &desc,
vk::Framebuffer &framebuffer)
{ … }
void FramebufferCache::insert(ContextVk *contextVk,
const vk::FramebufferDesc &desc,
vk::FramebufferHelper &&framebufferHelper)
{ … }
void FramebufferCache::erase(ContextVk *contextVk, const vk::FramebufferDesc &desc)
{ … }
RenderPassCache::RenderPassCache() = default;
RenderPassCache::~RenderPassCache()
{ … }
void RenderPassCache::destroy(ContextVk *contextVk)
{ … }
void RenderPassCache::clear(ContextVk *contextVk)
{ … }
void RenderPassCache::InitializeOpsForCompatibleRenderPass(const vk::RenderPassDesc &desc,
vk::AttachmentOpsArray *opsOut)
{ … }
angle::Result RenderPassCache::addCompatibleRenderPass(ContextVk *contextVk,
const vk::RenderPassDesc &desc,
const vk::RenderPass **renderPassOut)
{ … }
angle::Result RenderPassCache::getRenderPassWithOps(ContextVk *contextVk,
const vk::RenderPassDesc &desc,
const vk::AttachmentOpsArray &attachmentOps,
const vk::RenderPass **renderPassOut)
{ … }
angle::Result RenderPassCache::getRenderPassWithOpsImpl(ContextVk *contextVk,
const vk::RenderPassDesc &desc,
const vk::AttachmentOpsArray &attachmentOps,
bool updatePerfCounters,
const vk::RenderPass **renderPassOut)
{ … }
angle::Result RenderPassCache::MakeRenderPass(vk::Context *context,
const vk::RenderPassDesc &desc,
const vk::AttachmentOpsArray &ops,
vk::RenderPass *renderPass,
vk::RenderPassPerfCounters *renderPassCounters)
{ … }
template <typename Hash>
void GraphicsPipelineCache<Hash>::destroy(vk::Context *context)
{ … }
template <typename Hash>
void GraphicsPipelineCache<Hash>::release(vk::Context *context)
{ … }
template <typename Hash>
angle::Result GraphicsPipelineCache<Hash>::createPipeline(
vk::Context *context,
vk::PipelineCacheAccess *pipelineCache,
const vk::RenderPass &compatibleRenderPass,
const vk::PipelineLayout &pipelineLayout,
const vk::ShaderModuleMap &shaders,
const vk::SpecializationConstants &specConsts,
PipelineSource source,
const vk::GraphicsPipelineDesc &desc,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut)
{ … }
template <typename Hash>
angle::Result GraphicsPipelineCache<Hash>::linkLibraries(
vk::Context *context,
vk::PipelineCacheAccess *pipelineCache,
const vk::GraphicsPipelineDesc &desc,
const vk::PipelineLayout &pipelineLayout,
vk::PipelineHelper *vertexInputPipeline,
vk::PipelineHelper *shadersPipeline,
vk::PipelineHelper *fragmentOutputPipeline,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut)
{ … }
template <typename Hash>
void GraphicsPipelineCache<Hash>::addToCache(PipelineSource source,
const vk::GraphicsPipelineDesc &desc,
vk::Pipeline &&pipeline,
vk::CacheLookUpFeedback feedback,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut)
{ … }
template <typename Hash>
void GraphicsPipelineCache<Hash>::populate(const vk::GraphicsPipelineDesc &desc,
vk::Pipeline &&pipeline,
vk::PipelineHelper **pipelineHelperOut)
{ … }
template void GraphicsPipelineCache<GraphicsPipelineDescCompleteHash>::destroy(
vk::Context *context);
template void GraphicsPipelineCache<GraphicsPipelineDescCompleteHash>::release(
vk::Context *context);
template angle::Result GraphicsPipelineCache<GraphicsPipelineDescCompleteHash>::createPipeline(
vk::Context *context,
vk::PipelineCacheAccess *pipelineCache,
const vk::RenderPass &compatibleRenderPass,
const vk::PipelineLayout &pipelineLayout,
const vk::ShaderModuleMap &shaders,
const vk::SpecializationConstants &specConsts,
PipelineSource source,
const vk::GraphicsPipelineDesc &desc,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut);
template angle::Result GraphicsPipelineCache<GraphicsPipelineDescCompleteHash>::linkLibraries(
vk::Context *context,
vk::PipelineCacheAccess *pipelineCache,
const vk::GraphicsPipelineDesc &desc,
const vk::PipelineLayout &pipelineLayout,
vk::PipelineHelper *vertexInputPipeline,
vk::PipelineHelper *shadersPipeline,
vk::PipelineHelper *fragmentOutputPipeline,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut);
template void GraphicsPipelineCache<GraphicsPipelineDescCompleteHash>::populate(
const vk::GraphicsPipelineDesc &desc,
vk::Pipeline &&pipeline,
vk::PipelineHelper **pipelineHelperOut);
template void GraphicsPipelineCache<GraphicsPipelineDescVertexInputHash>::destroy(
vk::Context *context);
template void GraphicsPipelineCache<GraphicsPipelineDescVertexInputHash>::release(
vk::Context *context);
template angle::Result GraphicsPipelineCache<GraphicsPipelineDescVertexInputHash>::createPipeline(
vk::Context *context,
vk::PipelineCacheAccess *pipelineCache,
const vk::RenderPass &compatibleRenderPass,
const vk::PipelineLayout &pipelineLayout,
const vk::ShaderModuleMap &shaders,
const vk::SpecializationConstants &specConsts,
PipelineSource source,
const vk::GraphicsPipelineDesc &desc,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut);
template void GraphicsPipelineCache<GraphicsPipelineDescVertexInputHash>::populate(
const vk::GraphicsPipelineDesc &desc,
vk::Pipeline &&pipeline,
vk::PipelineHelper **pipelineHelperOut);
template void GraphicsPipelineCache<GraphicsPipelineDescShadersHash>::destroy(vk::Context *context);
template void GraphicsPipelineCache<GraphicsPipelineDescShadersHash>::release(vk::Context *context);
template angle::Result GraphicsPipelineCache<GraphicsPipelineDescShadersHash>::createPipeline(
vk::Context *context,
vk::PipelineCacheAccess *pipelineCache,
const vk::RenderPass &compatibleRenderPass,
const vk::PipelineLayout &pipelineLayout,
const vk::ShaderModuleMap &shaders,
const vk::SpecializationConstants &specConsts,
PipelineSource source,
const vk::GraphicsPipelineDesc &desc,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut);
template void GraphicsPipelineCache<GraphicsPipelineDescShadersHash>::populate(
const vk::GraphicsPipelineDesc &desc,
vk::Pipeline &&pipeline,
vk::PipelineHelper **pipelineHelperOut);
template void GraphicsPipelineCache<GraphicsPipelineDescFragmentOutputHash>::destroy(
vk::Context *context);
template void GraphicsPipelineCache<GraphicsPipelineDescFragmentOutputHash>::release(
vk::Context *context);
template angle::Result
GraphicsPipelineCache<GraphicsPipelineDescFragmentOutputHash>::createPipeline(
vk::Context *context,
vk::PipelineCacheAccess *pipelineCache,
const vk::RenderPass &compatibleRenderPass,
const vk::PipelineLayout &pipelineLayout,
const vk::ShaderModuleMap &shaders,
const vk::SpecializationConstants &specConsts,
PipelineSource source,
const vk::GraphicsPipelineDesc &desc,
const vk::GraphicsPipelineDesc **descPtrOut,
vk::PipelineHelper **pipelineOut);
template void GraphicsPipelineCache<GraphicsPipelineDescFragmentOutputHash>::populate(
const vk::GraphicsPipelineDesc &desc,
vk::Pipeline &&pipeline,
vk::PipelineHelper **pipelineHelperOut);
DescriptorSetLayoutCache::DescriptorSetLayoutCache() = default;
DescriptorSetLayoutCache::~DescriptorSetLayoutCache()
{ … }
void DescriptorSetLayoutCache::destroy(vk::Renderer *renderer)
{ … }
angle::Result DescriptorSetLayoutCache::getDescriptorSetLayout(
vk::Context *context,
const vk::DescriptorSetLayoutDesc &desc,
vk::AtomicBindingPointer<vk::DescriptorSetLayout> *descriptorSetLayoutOut)
{ … }
PipelineLayoutCache::PipelineLayoutCache() = default;
PipelineLayoutCache::~PipelineLayoutCache()
{ … }
void PipelineLayoutCache::destroy(vk::Renderer *renderer)
{ … }
angle::Result PipelineLayoutCache::getPipelineLayout(
vk::Context *context,
const vk::PipelineLayoutDesc &desc,
const vk::DescriptorSetLayoutPointerArray &descriptorSetLayouts,
vk::AtomicBindingPointer<vk::PipelineLayout> *pipelineLayoutOut)
{ … }
SamplerYcbcrConversionCache::SamplerYcbcrConversionCache() = default;
SamplerYcbcrConversionCache::~SamplerYcbcrConversionCache()
{ … }
void SamplerYcbcrConversionCache::destroy(vk::Renderer *renderer)
{ … }
angle::Result SamplerYcbcrConversionCache::getSamplerYcbcrConversion(
vk::Context *context,
const vk::YcbcrConversionDesc &ycbcrConversionDesc,
VkSamplerYcbcrConversion *vkSamplerYcbcrConversionOut)
{ … }
SamplerCache::SamplerCache() = default;
SamplerCache::~SamplerCache()
{ … }
void SamplerCache::destroy(vk::Renderer *renderer)
{ … }
angle::Result SamplerCache::getSampler(ContextVk *contextVk,
const vk::SamplerDesc &desc,
vk::SamplerBinding *samplerOut)
{ … }
}