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 LIBANGLE_RENDERER_D3D_D3D11_SHADEREXECUTABLE11_H_ 11 #define LIBANGLE_RENDERER_D3D_D3D11_SHADEREXECUTABLE11_H_ 12 13 #include "libANGLE/renderer/d3d/ShaderExecutableD3D.h" 14 #include "libANGLE/renderer/d3d/d3d11/ResourceManager11.h" 15 16 namespace rx 17 { 18 class Renderer11; 19 class UniformStorage11; 20 21 class ShaderExecutable11 : public ShaderExecutableD3D 22 { 23 public: 24 ShaderExecutable11(const void *function, size_t length, d3d11::PixelShader &&executable); 25 ShaderExecutable11(const void *function, 26 size_t length, 27 d3d11::VertexShader &&executable, 28 d3d11::GeometryShader &&streamOut); 29 ShaderExecutable11(const void *function, size_t length, d3d11::GeometryShader &&executable); 30 ShaderExecutable11(const void *function, size_t length, d3d11::ComputeShader &&executable); 31 32 ~ShaderExecutable11() override; 33 34 const d3d11::PixelShader &getPixelShader() const; 35 const d3d11::VertexShader &getVertexShader() const; 36 const d3d11::GeometryShader &getGeometryShader() const; 37 const d3d11::GeometryShader &getStreamOutShader() const; 38 const d3d11::ComputeShader &getComputeShader() const; 39 40 private: 41 d3d11::PixelShader mPixelExecutable; 42 d3d11::VertexShader mVertexExecutable; 43 d3d11::GeometryShader mGeometryExecutable; 44 d3d11::GeometryShader mStreamOutExecutable; 45 d3d11::ComputeShader mComputeExecutable; 46 }; 47 48 class UniformStorage11 : public UniformStorageD3D 49 { 50 public: 51 UniformStorage11(size_t initialSize); 52 ~UniformStorage11() override; 53 54 gl::Error getConstantBuffer(Renderer11 *renderer, const d3d11::Buffer **bufferOut); 55 56 private: 57 d3d11::Buffer mConstantBuffer; 58 }; 59 60 } // namespace rx 61 62 #endif // LIBANGLE_RENDERER_D3D_D3D11_SHADEREXECUTABLE11_H_ 63