1 //
2 // Copyright (c) 2012-2015 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 class to contain D3D shader executable
8 // implementation details.
9 
10 #ifndef LIBANGLE_RENDERER_D3D_SHADEREXECUTABLED3D_H_
11 #define LIBANGLE_RENDERER_D3D_SHADEREXECUTABLED3D_H_
12 
13 #include "common/MemoryBuffer.h"
14 #include "common/debug.h"
15 
16 #include <vector>
17 #include <cstdint>
18 
19 namespace rx
20 {
21 
22 class ShaderExecutableD3D : angle::NonCopyable
23 {
24   public:
25     ShaderExecutableD3D(const void *function, size_t length);
26     virtual ~ShaderExecutableD3D();
27 
28     const uint8_t *getFunction() const;
29 
30     size_t getLength() const;
31 
32     const std::string &getDebugInfo() const;
33 
34     void appendDebugInfo(const std::string &info);
35 
36   private:
37     std::vector<uint8_t> mFunctionBuffer;
38     std::string mDebugInfo;
39 };
40 
41 class UniformStorageD3D : angle::NonCopyable
42 {
43   public:
44     UniformStorageD3D(size_t initialSize);
45     virtual ~UniformStorageD3D();
46 
47     size_t size() const;
48 
49     uint8_t *getDataPointer(unsigned int registerIndex, unsigned int registerElement);
50 
51   private:
52     angle::MemoryBuffer mUniformData;
53 };
54 
55 }  // namespace rx
56 
57 #endif // LIBANGLE_RENDERER_D3D_SHADEREXECUTABLED3D_H_
58