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