OSDN Git Service

Fixed D3DQUERYTYPE_TIMESTAMP behaviour.
[android-x86/external-swiftshader.git] / src / Renderer / Stream.hpp
1 // Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //    http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #ifndef sw_Stream_hpp
16 #define sw_Stream_hpp
17
18 #include "Common/Types.hpp"
19
20 namespace sw
21 {
22         class Resource;
23
24         enum StreamType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
25         {
26                 STREAMTYPE_COLOR,     // 4 normalized unsigned bytes, ZYXW order
27                 STREAMTYPE_UDEC3,     // 3 unsigned 10-bit fields
28                 STREAMTYPE_DEC3N,     // 3 normalized signed 10-bit fields
29                 STREAMTYPE_INDICES,   // 4 unsigned bytes, stored unconverted into X component
30                 STREAMTYPE_FLOAT,     // Normalization ignored
31                 STREAMTYPE_BYTE,
32                 STREAMTYPE_SBYTE,
33                 STREAMTYPE_SHORT,
34                 STREAMTYPE_USHORT,
35                 STREAMTYPE_INT,
36                 STREAMTYPE_UINT,
37                 STREAMTYPE_FIXED,     // Normalization ignored (16.16 format)
38                 STREAMTYPE_HALF,      // Normalization ignored
39                 STREAMTYPE_2_10_10_10_INT,
40                 STREAMTYPE_2_10_10_10_UINT,
41
42                 STREAMTYPE_LAST = STREAMTYPE_HALF
43         };
44
45         struct StreamResource
46         {
47                 Resource *resource;
48                 const void *buffer;
49                 unsigned int stride;
50         };
51
52         struct Stream : public StreamResource
53         {
54                 Stream(Resource *resource = 0, const void *buffer = 0, unsigned int stride = 0)
55                 {
56                         this->resource = resource;
57                         this->buffer = buffer;
58                         this->stride = stride;
59                 }
60
61                 Stream &define(StreamType type, unsigned int count, bool normalized = false)
62                 {
63                         this->type = type;
64                         this->count = count;
65                         this->normalized = normalized;
66
67                         return *this;
68                 }
69
70                 Stream &define(const void *buffer, StreamType type, unsigned int count, bool normalized = false)
71                 {
72                         this->buffer = buffer;
73                         this->type = type;
74                         this->count = count;
75                         this->normalized = normalized;
76
77                         return *this;
78                 }
79
80                 Stream &defaults()
81                 {
82                         static const float4 null = {0, 0, 0, 1};
83
84                         resource = 0;
85                         buffer = &null;
86                         stride = 0;
87                         type = STREAMTYPE_FLOAT;
88                         count = 0;
89                         normalized = false;
90
91                         return *this;
92                 }
93
94                 operator bool() const   // Returns true if stream contains data
95                 {
96                         return count != 0;
97                 }
98
99                 StreamType type;
100                 unsigned char count;
101                 bool normalized;
102         };
103 }
104
105 #endif   // sw_Stream_hpp