#include "libANGLE/renderer/vulkan/ProgramVk.h"
#include "common/debug.h"
#include "common/utilities.h"
#include "libANGLE/Context.h"
#include "libANGLE/ProgramLinkedResources.h"
#include "libANGLE/renderer/renderer_utils.h"
#include "libANGLE/renderer/vulkan/BufferVk.h"
#include "libANGLE/renderer/vulkan/TextureVk.h"
namespace rx
{
namespace
{
class VulkanDefaultBlockEncoder : public sh::Std140BlockEncoder
{ … };
class Std140BlockLayoutEncoderFactory : public gl::CustomBlockLayoutEncoderFactory
{ … };
class LinkTaskVk final : public vk::Context, public LinkTask
{ … };
angle::Result LinkTaskVk::linkImpl(const gl::ProgramLinkedResources &resources,
const gl::ProgramMergedVaryings &mergedVaryings,
std::vector<std::shared_ptr<LinkSubTask>> *postLinkSubTasksOut)
{ … }
void LinkTaskVk::linkResources(const gl::ProgramLinkedResources &resources)
{ … }
angle::Result LinkTaskVk::initDefaultUniformBlocks()
{ … }
void InitDefaultUniformBlock(const std::vector<sh::ShaderVariable> &uniforms,
sh::BlockLayoutMap *blockLayoutMapOut,
size_t *blockSizeOut)
{ … }
void LinkTaskVk::generateUniformLayoutMapping(gl::ShaderMap<sh::BlockLayoutMap> *layoutMapOut,
gl::ShaderMap<size_t> *requiredBufferSizeOut)
{ … }
void LinkTaskVk::initDefaultUniformLayoutMapping(gl::ShaderMap<sh::BlockLayoutMap> *layoutMapOut)
{ … }
}
ProgramVk::ProgramVk(const gl::ProgramState &state) : … { … }
ProgramVk::~ProgramVk() = default;
void ProgramVk::destroy(const gl::Context *context)
{ … }
angle::Result ProgramVk::load(const gl::Context *context,
gl::BinaryInputStream *stream,
std::shared_ptr<LinkTask> *loadTaskOut,
egl::CacheGetResult *resultOut)
{ … }
void ProgramVk::save(const gl::Context *context, gl::BinaryOutputStream *stream)
{ … }
void ProgramVk::setBinaryRetrievableHint(bool retrievable)
{ … }
void ProgramVk::setSeparable(bool separable)
{ … }
angle::Result ProgramVk::link(const gl::Context *context, std::shared_ptr<LinkTask> *linkTaskOut)
{ … }
GLboolean ProgramVk::validate(const gl::Caps &caps)
{ … }
}