1 // 2 // Copyright 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 // 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 gl 17 { 18 class Context; 19 } // namespace gl 20 21 namespace rx 22 { 23 class Renderer11; 24 class UniformStorage11; 25 26 class ShaderExecutable11 : public ShaderExecutableD3D 27 { 28 public: 29 ShaderExecutable11(const void *function, size_t length, d3d11::PixelShader &&executable); 30 ShaderExecutable11(const void *function, 31 size_t length, 32 d3d11::VertexShader &&executable, 33 d3d11::GeometryShader &&streamOut); 34 ShaderExecutable11(const void *function, size_t length, d3d11::GeometryShader &&executable); 35 ShaderExecutable11(const void *function, size_t length, d3d11::ComputeShader &&executable); 36 37 ~ShaderExecutable11() override; 38 39 const d3d11::PixelShader &getPixelShader() const; 40 const d3d11::VertexShader &getVertexShader() const; 41 const d3d11::GeometryShader &getGeometryShader() const; 42 const d3d11::GeometryShader &getStreamOutShader() const; 43 const d3d11::ComputeShader &getComputeShader() const; 44 45 private: 46 d3d11::PixelShader mPixelExecutable; 47 d3d11::VertexShader mVertexExecutable; 48 d3d11::GeometryShader mGeometryExecutable; 49 d3d11::GeometryShader mStreamOutExecutable; 50 d3d11::ComputeShader mComputeExecutable; 51 }; 52 53 class UniformStorage11 : public UniformStorageD3D 54 { 55 public: 56 UniformStorage11(size_t initialSize); 57 ~UniformStorage11() override; 58 59 angle::Result getConstantBuffer(const gl::Context *context, 60 Renderer11 *renderer, 61 const d3d11::Buffer **bufferOut); 62 63 private: 64 d3d11::Buffer mConstantBuffer; 65 }; 66 67 } // namespace rx 68 69 #endif // LIBANGLE_RENDERER_D3D_D3D11_SHADEREXECUTABLE11_H_ 70