/* * Copyright 2018 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrMtlPipelineStateDataManager_DEFINED #define GrMtlPipelineStateDataManager_DEFINED #include "src/base/SkAutoMalloc.h" #include "src/gpu/ganesh/GrUniformDataManager.h" #include "src/gpu/ganesh/mtl/GrMtlUniformHandler.h" #import class GrMtlBuffer; class GrMtlGpu; class GrMtlRenderCommandEncoder; class GrMtlPipelineStateDataManager : public GrUniformDataManager { public: typedef GrMtlUniformHandler::UniformInfoArray UniformInfoArray; GrMtlPipelineStateDataManager(const UniformInfoArray&, uint32_t uniformSize); void set1iv(UniformHandle, int arrayCount, const int32_t v[]) const override; void set1fv(UniformHandle, int arrayCount, const float v[]) const override; void set2iv(UniformHandle, int arrayCount, const int32_t v[]) const override; void set2fv(UniformHandle, int arrayCount, const float v[]) const override; // matrices are column-major, the first one uploads a single matrix, the latter uploads // arrayCount matrices into a uniform array. void setMatrix2f(UniformHandle, const float matrix[]) const override; void setMatrix2fv(UniformHandle, int arrayCount, const float matrices[]) const override; void uploadAndBindUniformBuffers(GrMtlGpu* gpu, GrMtlRenderCommandEncoder* renderCmdEncoder) const; void resetDirtyBits(); private: typedef GrUniformDataManager INHERITED; }; #endif