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 16#include <vector> 17#include <cstdint> 18 19namespace rx 20{ 21 22class ShaderExecutable 23{ 24 public: 25 ShaderExecutable(const void *function, size_t length) 26 : mFunctionBuffer(length) 27 { 28 memcpy(mFunctionBuffer.data(), function, length); 29 } 30 31 virtual ~ShaderExecutable() {} 32 33 const uint8_t *getFunction() const 34 { 35 return mFunctionBuffer.data(); 36 } 37 38 size_t getLength() const 39 { 40 return mFunctionBuffer.size(); 41 } 42 43 private: 44 DISALLOW_COPY_AND_ASSIGN(ShaderExecutable); 45 46 std::vector<uint8_t> mFunctionBuffer; 47}; 48 49class UniformStorage 50{ 51 public: 52 UniformStorage(size_t initialSize) 53 : mSize(initialSize) 54 { 55 } 56 57 virtual ~UniformStorage() {} 58 59 size_t size() const { return mSize; } 60 61 private: 62 size_t mSize; 63}; 64 65} 66 67#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_ 68