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 e92a52802ff00c2d868d7647ed1077a70f43ae19..0000000000000000000000000000000000000000 |
--- a/src/gpu/vk/GrVkProgram.h |
+++ /dev/null |
@@ -1,161 +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(const 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], |
- GrVkDescriptorPool* descriptorPool, |
- VkDescriptorSet descriptorSets[2], |
- const BuiltinUniformHandles& builtinUniformHandles, |
- const UniformInfoArray& uniforms, |
- uint32_t vertexUniformSize, |
- uint32_t fragmentUniformSize, |
- uint32_t numSamplers, |
- GrGLSLPrimitiveProcessor* geometryProcessor, |
- GrGLSLXferProcessor* xferProcessor, |
- const GrGLSLFragProcs& fragmentProcessors); |
- |
- void writeUniformBuffers(const GrVkGpu* gpu); |
- |
- void writeSamplers(const 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&); |
- |
-// GrVkGpu* fGpu; |
- |
- // GrVkResources |
- GrVkDescriptorPool* fDescriptorPool; |
- 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 first set (index 0) will be used for samplers and the second set (index 1) will be |
- // used for uniform buffers. |
- // The DSLayouts only are needed for allocating the descriptor sets and must survive until after |
- // descriptor sets have been updated. Thus the lifetime of the layouts will just be the life of |
- //the GrVkProgram. |
- VkDescriptorSetLayout fDSLayout[2]; |
- // 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. |
- VkDescriptorSet fDescriptorSets[2]; |
- |
- 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; |
- |
-#ifdef SK_DEBUG |
- int fNumSamplers; |
-#endif |
- |
- friend class GrVkProgramBuilder; |
-}; |
- |
-#endif |