blob: dd9e5398d13ede1daad2dfe92c8fb719811cb933 [file] [log] [blame]
/*
* Copyright 2020 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SKSL_MEMORYPOOL
#define SKSL_MEMORYPOOL
#include <memory>
#include "include/core/SkTypes.h"
#if SK_SUPPORT_GPU
#include "src/gpu/ganesh/GrMemoryPool.h"
namespace SkSL {
using MemoryPool = ::GrMemoryPool;
}
#else
// When Ganesh is disabled, GrMemoryPool is not linked in. We include a minimal class which mimics
// the GrMemoryPool interface but simply redirects to the system allocator.
namespace SkSL {
class MemoryPool {
public:
static std::unique_ptr<MemoryPool> Make(size_t, size_t) {
return std::make_unique<MemoryPool>();
}
void resetScratchSpace() {}
void reportLeaks() const {}
bool isEmpty() const { return true; }
void* allocate(size_t size) { return ::operator new(size); }
void release(void* p) { ::operator delete(p); }
};
} // namespace SkSL
#endif // SK_SUPPORT_GPU
#endif // SKSL_MEMORYPOOL