1// 2// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 3// Use of this source code is governed by a BSD-style license that can be 4// found in the LICENSE file. 5// 6 7// ShaderExecutable.h: Defines a renderer-agnostic class to contain shader 8// executable implementation details. 9 10#ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_ 11#define LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_ 12 13#include "common/angleutils.h" 14#include "common/debug.h" 15 16namespace rx 17{ 18 19class ShaderExecutable 20{ 21 public: 22 ShaderExecutable(const void *function, size_t length) : mLength(length) 23 { 24 mFunction = new char[length]; 25 memcpy(mFunction, function, length); 26 } 27 28 virtual ~ShaderExecutable() 29 { 30 delete[] mFunction; 31 } 32 33 void *getFunction() const 34 { 35 return mFunction; 36 } 37 38 size_t getLength() const 39 { 40 return mLength; 41 } 42 43 private: 44 DISALLOW_COPY_AND_ASSIGN(ShaderExecutable); 45 46 void *mFunction; 47 const size_t mLength; 48}; 49 50class UniformStorage 51{ 52 public: 53 UniformStorage(size_t initialSize) 54 : mSize(initialSize) 55 { 56 } 57 58 virtual ~UniformStorage() {} 59 60 size_t size() const { return mSize; } 61 62 private: 63 size_t mSize; 64}; 65 66} 67 68#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_ 69