| Index: src/gpu/vk/GrVkProgram.h
 | 
| diff --git a/src/gpu/vk/GrVkProgram.h b/src/gpu/vk/GrVkProgram.h
 | 
| deleted file mode 100644
 | 
| index 23a9713a6aaab0a2c5b18c9c5cfa33505ba12f23..0000000000000000000000000000000000000000
 | 
| --- a/src/gpu/vk/GrVkProgram.h
 | 
| +++ /dev/null
 | 
| @@ -1,190 +0,0 @@
 | 
| -/*
 | 
| - * Copyright 2015 Google Inc.
 | 
| - *
 | 
| - * Use of this source code is governed by a BSD-style license that can be
 | 
| - * found in the LICENSE file.
 | 
| - */
 | 
| -
 | 
| -
 | 
| -#ifndef GrVkProgram_DEFINED
 | 
| -#define GrVkProgram_DEFINED
 | 
| -
 | 
| -#include "GrVkImage.h"
 | 
| -#include "GrVkProgramDesc.h"
 | 
| -#include "GrVkProgramDataManager.h"
 | 
| -#include "glsl/GrGLSLProgramBuilder.h"
 | 
| -
 | 
| -#include "vulkan/vulkan.h"
 | 
| -
 | 
| -class GrPipeline;
 | 
| -class GrVkCommandBuffer;
 | 
| -class GrVkDescriptorPool;
 | 
| -class GrVkGpu;
 | 
| -class GrVkImageView;
 | 
| -class GrVkPipeline;
 | 
| -class GrVkSampler;
 | 
| -class GrVkUniformBuffer;
 | 
| -
 | 
| -class GrVkProgram : public SkRefCnt {
 | 
| -public:
 | 
| -    typedef GrGLSLProgramBuilder::BuiltinUniformHandles BuiltinUniformHandles;
 | 
| -
 | 
| -    ~GrVkProgram();
 | 
| -
 | 
| -    GrVkPipeline* vkPipeline() const { return fPipeline; }
 | 
| -
 | 
| -    void setData(GrVkGpu*, const GrPrimitiveProcessor&, const GrPipeline&);
 | 
| -
 | 
| -    void bind(const GrVkGpu* gpu, GrVkCommandBuffer* commandBuffer);
 | 
| -
 | 
| -    void addUniformResources(GrVkCommandBuffer&);
 | 
| -
 | 
| -    void freeGPUResources(const GrVkGpu* gpu);
 | 
| -
 | 
| -    // This releases resources the only a given instance of a GrVkProgram needs to hold onto and do
 | 
| -    // don't need to survive across new uses of the program.
 | 
| -    void freeTempResources(const GrVkGpu* gpu);
 | 
| -
 | 
| -    void abandonGPUResources();
 | 
| -
 | 
| -private:
 | 
| -    typedef GrVkProgramDataManager::UniformInfoArray UniformInfoArray;
 | 
| -    typedef GrGLSLProgramDataManager::UniformHandle UniformHandle;
 | 
| -
 | 
| -    GrVkProgram(GrVkGpu* gpu,
 | 
| -                GrVkPipeline* pipeline,
 | 
| -                VkPipelineLayout layout,
 | 
| -                VkDescriptorSetLayout dsLayout[2],
 | 
| -                const BuiltinUniformHandles& builtinUniformHandles,
 | 
| -                const UniformInfoArray& uniforms,
 | 
| -                uint32_t vertexUniformSize,
 | 
| -                uint32_t fragmentUniformSize,
 | 
| -                uint32_t numSamplers,
 | 
| -                GrGLSLPrimitiveProcessor* geometryProcessor,
 | 
| -                GrGLSLXferProcessor* xferProcessor,
 | 
| -                const GrGLSLFragProcs& fragmentProcessors);
 | 
| -
 | 
| -    // Each pool will manage one type of descriptor. Thus each descriptor set we use will all be of
 | 
| -    // one VkDescriptorType.
 | 
| -    struct DescriptorPoolManager {
 | 
| -        DescriptorPoolManager(VkDescriptorSetLayout layout, VkDescriptorType type,
 | 
| -                              uint32_t descCount, GrVkGpu* gpu)
 | 
| -            : fDescLayout(layout)
 | 
| -            , fDescType(type)
 | 
| -            , fCurrentDescriptorSet(0)
 | 
| -            , fPool(nullptr) {
 | 
| -            SkASSERT(descCount < (SK_MaxU32 >> 2));
 | 
| -            fMaxDescriptorSets = descCount << 2;
 | 
| -            this->getNewPool(gpu);
 | 
| -        }
 | 
| -
 | 
| -        ~DescriptorPoolManager() {
 | 
| -            SkASSERT(!fDescLayout);
 | 
| -            SkASSERT(!fPool);
 | 
| -        }
 | 
| -
 | 
| -        void getNewDescriptorSet(GrVkGpu* gpu, VkDescriptorSet* ds);
 | 
| -
 | 
| -        void freeGPUResources(const GrVkGpu* gpu);
 | 
| -        void abandonGPUResources();
 | 
| -
 | 
| -        VkDescriptorSetLayout  fDescLayout;
 | 
| -        VkDescriptorType       fDescType;
 | 
| -        uint32_t               fMaxDescriptorSets;
 | 
| -        uint32_t               fCurrentDescriptorSet;
 | 
| -        GrVkDescriptorPool*    fPool;
 | 
| -
 | 
| -    private:
 | 
| -        void getNewPool(GrVkGpu* gpu);
 | 
| -    };
 | 
| -
 | 
| -    void writeUniformBuffers(const GrVkGpu* gpu);
 | 
| -
 | 
| -    void writeSamplers(GrVkGpu* gpu, const SkTArray<const GrTextureAccess*>& textureBindings);
 | 
| -
 | 
| -
 | 
| -    /**
 | 
| -    * We use the RT's size and origin to adjust from Skia device space to OpenGL normalized device
 | 
| -    * space and to make device space positions have the correct origin for processors that require
 | 
| -    * them.
 | 
| -    */
 | 
| -    struct RenderTargetState {
 | 
| -        SkISize         fRenderTargetSize;
 | 
| -        GrSurfaceOrigin fRenderTargetOrigin;
 | 
| -
 | 
| -        RenderTargetState() { this->invalidate(); }
 | 
| -        void invalidate() {
 | 
| -            fRenderTargetSize.fWidth = -1;
 | 
| -            fRenderTargetSize.fHeight = -1;
 | 
| -            fRenderTargetOrigin = (GrSurfaceOrigin)-1;
 | 
| -        }
 | 
| -
 | 
| -        /**
 | 
| -        * Gets a vec4 that adjusts the position from Skia device coords to GL's normalized device
 | 
| -        * coords. Assuming the transformed position, pos, is a homogeneous vec3, the vec, v, is
 | 
| -        * applied as such:
 | 
| -        * pos.x = dot(v.xy, pos.xz)
 | 
| -        * pos.y = dot(v.zw, pos.yz)
 | 
| -        */
 | 
| -        void getRTAdjustmentVec(float* destVec) {
 | 
| -            destVec[0] = 2.f / fRenderTargetSize.fWidth;
 | 
| -            destVec[1] = -1.f;
 | 
| -            if (kBottomLeft_GrSurfaceOrigin == fRenderTargetOrigin) {
 | 
| -                destVec[2] = -2.f / fRenderTargetSize.fHeight;
 | 
| -                destVec[3] = 1.f;
 | 
| -            } else {
 | 
| -                destVec[2] = 2.f / fRenderTargetSize.fHeight;
 | 
| -                destVec[3] = -1.f;
 | 
| -            }
 | 
| -        }
 | 
| -    };
 | 
| -
 | 
| -    // Helper for setData() that sets the view matrix and loads the render target height uniform
 | 
| -    void setRenderTargetState(const GrPipeline&);
 | 
| -
 | 
| -    // GrVkResources
 | 
| -    GrVkPipeline*       fPipeline;
 | 
| -
 | 
| -    // Used for binding DescriptorSets to the command buffer but does not need to survive during
 | 
| -    // command buffer execution. Thus this is not need to be a GrVkResource.
 | 
| -    VkPipelineLayout fPipelineLayout;
 | 
| -
 | 
| -    // The DescriptorSets need to survive until the gpu has finished all draws that use them.
 | 
| -    // However, they will only be freed by the descriptor pool. Thus by simply keeping the
 | 
| -    // descriptor pool alive through the draw, the descritor sets will also stay alive. Thus we do
 | 
| -    // not need a GrVkResource versions of VkDescriptorSet. We hold on to these in the program since
 | 
| -    // we update the descriptor sets and bind them at separate times;
 | 
| -    VkDescriptorSet       fDescriptorSets[2];
 | 
| -
 | 
| -    // Meta data so we know which descriptor sets we are using and need to bind.
 | 
| -    int                   fStartDS;
 | 
| -    int                   fDSCount;
 | 
| -
 | 
| -    SkAutoTDelete<GrVkUniformBuffer>    fVertexUniformBuffer;
 | 
| -    SkAutoTDelete<GrVkUniformBuffer>    fFragmentUniformBuffer;
 | 
| -
 | 
| -    // GrVkResources used for sampling textures
 | 
| -    SkTDArray<GrVkSampler*>                fSamplers;
 | 
| -    SkTDArray<const GrVkImageView*>        fTextureViews;
 | 
| -    SkTDArray<const GrVkImage::Resource*>  fTextures;
 | 
| -
 | 
| -    // Tracks the current render target uniforms stored in the vertex buffer.
 | 
| -    RenderTargetState fRenderTargetState;
 | 
| -    BuiltinUniformHandles fBuiltinUniformHandles;
 | 
| -
 | 
| -    // Processors in the program
 | 
| -    SkAutoTDelete<GrGLSLPrimitiveProcessor> fGeometryProcessor;
 | 
| -    SkAutoTDelete<GrGLSLXferProcessor> fXferProcessor;
 | 
| -    GrGLSLFragProcs fFragmentProcessors;
 | 
| -
 | 
| -    GrVkProgramDataManager fProgramDataManager;
 | 
| -
 | 
| -    DescriptorPoolManager  fSamplerPoolManager;
 | 
| -    DescriptorPoolManager  fUniformPoolManager;
 | 
| -
 | 
| -    int fNumSamplers;
 | 
| -
 | 
| -    friend class GrVkProgramBuilder;
 | 
| -};
 | 
| -
 | 
| -#endif
 | 
| 
 |