Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / src / libGLESv2 / renderer / d3d / d3d11 / formatutils11.h
1 //
2 // Copyright (c) 2013-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 // formatutils11.h: Queries for GL image formats and their translations to D3D11
8 // formats.
9
10 #ifndef LIBGLESV2_RENDERER_FORMATUTILS11_H_
11 #define LIBGLESV2_RENDERER_FORMATUTILS11_H_
12
13 #include "libGLESv2/formatutils.h"
14
15 #include <map>
16
17 namespace rx
18 {
19
20 namespace d3d11
21 {
22
23 typedef std::map<std::pair<GLenum, GLenum>, ColorCopyFunction> FastCopyFunctionMap;
24
25 struct DXGIFormat
26 {
27     DXGIFormat();
28
29     GLuint pixelBytes;
30     GLuint blockWidth;
31     GLuint blockHeight;
32
33     GLuint depthBits;
34     GLuint depthOffset;
35     GLuint stencilBits;
36     GLuint stencilOffset;
37
38     GLenum internalFormat;
39     GLenum componentType;
40
41     MipGenerationFunction mipGenerationFunction;
42     ColorReadFunction colorReadFunction;
43
44     FastCopyFunctionMap fastCopyFunctions;
45     ColorCopyFunction getFastCopyFunction(GLenum format, GLenum type) const;
46 };
47 const DXGIFormat &GetDXGIFormatInfo(DXGI_FORMAT format);
48
49 struct TextureFormat
50 {
51     TextureFormat();
52
53     DXGI_FORMAT texFormat;
54     DXGI_FORMAT srvFormat;
55     DXGI_FORMAT rtvFormat;
56     DXGI_FORMAT dsvFormat;
57     DXGI_FORMAT renderFormat;
58
59     DXGI_FORMAT swizzleTexFormat;
60     DXGI_FORMAT swizzleSRVFormat;
61     DXGI_FORMAT swizzleRTVFormat;
62
63     InitializeTextureDataFunction dataInitializerFunction;
64
65     typedef std::map<GLenum, LoadImageFunction> LoadFunctionMap;
66     LoadFunctionMap loadFunctions;
67 };
68 const TextureFormat &GetTextureFormatInfo(GLenum internalFormat);
69
70 struct VertexFormat
71 {
72     VertexFormat();
73
74     VertexConversionType conversionType;
75     DXGI_FORMAT nativeFormat;
76     VertexCopyFunction copyFunction;
77 };
78 const VertexFormat &GetVertexFormatInfo(const gl::VertexFormat &vertexFormat);
79
80 }
81
82 }
83
84 #endif // LIBGLESV2_RENDERER_FORMATUTILS11_H_