Hash :
c47a678a
Author :
Date :
2014-02-04T16:04:03
Move the storage for uniform blocks to its own class. With dynamic shaders we may have multiple shader executables per program binary. We must store the uniforms outside the executable, in the program binary, to be consistent between variations. Change-Id: I1bec83dfb83ee9bb422448b157338a46e8e7ba56 Reviewed-on: https://chromium-review.googlesource.com/183585 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
//
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// ShaderExecutable.h: Defines a renderer-agnostic class to contain shader
// executable implementation details.
#ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_
#define LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_
#include "common/angleutils.h"
#include "common/debug.h"
namespace rx
{
class ShaderExecutable
{
public:
ShaderExecutable(const void *function, size_t length) : mLength(length)
{
mFunction = new char[length];
memcpy(mFunction, function, length);
}
virtual ~ShaderExecutable()
{
delete[] mFunction;
}
void *getFunction() const
{
return mFunction;
}
size_t getLength() const
{
return mLength;
}
private:
DISALLOW_COPY_AND_ASSIGN(ShaderExecutable);
void *mFunction;
const size_t mLength;
};
class UniformStorage
{
public:
UniformStorage(size_t initialSize)
: mSize(initialSize)
{
}
virtual ~UniformStorage() {}
size_t size() const { return mSize; }
private:
size_t mSize;
};
}
#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_