1// 2// Copyright (c) 2012-2014 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// ShaderExecutable11.h: Defines a D3D11-specific class to contain shader 8// executable implementation details. 9 10#ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_ 11#define LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_ 12 13#include "libGLESv2/renderer/ShaderExecutable.h" 14 15namespace rx 16{ 17class Renderer11; 18class UniformStorage11; 19 20class ShaderExecutable11 : public ShaderExecutable 21{ 22 public: 23 ShaderExecutable11(const void *function, size_t length, ID3D11PixelShader *executable); 24 ShaderExecutable11(const void *function, size_t length, ID3D11VertexShader *executable, ID3D11GeometryShader *streamOut); 25 ShaderExecutable11(const void *function, size_t length, ID3D11GeometryShader *executable); 26 27 virtual ~ShaderExecutable11(); 28 29 static ShaderExecutable11 *makeShaderExecutable11(ShaderExecutable *executable); 30 31 ID3D11PixelShader *getPixelShader() const; 32 ID3D11VertexShader *getVertexShader() const; 33 ID3D11GeometryShader *getGeometryShader() const; 34 ID3D11GeometryShader *getStreamOutShader() const; 35 36 private: 37 DISALLOW_COPY_AND_ASSIGN(ShaderExecutable11); 38 39 ID3D11PixelShader *mPixelExecutable; 40 ID3D11VertexShader *mVertexExecutable; 41 ID3D11GeometryShader *mGeometryExecutable; 42 ID3D11GeometryShader *mStreamOutExecutable; 43}; 44 45class UniformStorage11 : public UniformStorage 46{ 47 public: 48 UniformStorage11(Renderer11 *renderer, size_t initialSize); 49 virtual ~UniformStorage11(); 50 51 static const UniformStorage11 *makeUniformStorage11(const UniformStorage *uniformStorage); 52 53 ID3D11Buffer *getConstantBuffer() const { return mConstantBuffer; } 54 55 private: 56 ID3D11Buffer *mConstantBuffer; 57}; 58 59} 60 61#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_ 62