1e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos/*-------------------------------------------------------------------------
2e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * drawElements Internal Test Module
3e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * ---------------------------------
4e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *
5e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * Copyright 2015 The Android Open Source Project
6e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *
7e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License");
8e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * you may not use this file except in compliance with the License.
9e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * You may obtain a copy of the License at
10e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *
11e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *      http://www.apache.org/licenses/LICENSE-2.0
12e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *
13e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * Unless required by applicable law or agreed to in writing, software
14e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS,
15e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * See the License for the specific language governing permissions and
17e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * limitations under the License.
18e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *
19e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *//*!
20e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * \file
21e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos * \brief Texture format tests.
22e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos *//*--------------------------------------------------------------------*/
23e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
24e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "ditTextureFormatTests.hpp"
25e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "tcuTestLog.hpp"
26e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
27e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "rrRenderer.hpp"
28e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "tcuTextureUtil.hpp"
29e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "tcuVectorUtil.hpp"
30e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "tcuFormatUtil.hpp"
31e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
32e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "deRandom.hpp"
33e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "deArrayUtil.hpp"
34e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "deStringUtil.hpp"
35e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include "deUniquePtr.hpp"
36e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
37e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos#include <sstream>
38e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
39e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosnamespace dit
40e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
41e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
42e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosnamespace
43e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
44e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
45e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing std::string;
46e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing std::vector;
47e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
48e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::TestLog;
49e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::TextureFormat;
50e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::TextureChannelClass;
51e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::TextureAccessType;
52e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::PixelBufferAccess;
53e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::ConstPixelBufferAccess;
54e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::Vector;
55e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosusing tcu::IVec3;
56e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
57e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos// Test data
58e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
59e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_snormInt8In[] =
60e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
61e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1b, 0x23, 0xc5, 0x09,
62e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb4, 0xbf, 0xbf, 0x24,
63e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1a, 0x8a, 0xdb, 0x96,
64e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc0, 0xa1, 0xde, 0x78,
65e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
66e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt8FloatRef[] =
67e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
68e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e59b367, 0x3e8d1a34, 0xbeeddbb7, 0x3d912245,
69e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbf193265, 0xbf03060c, 0xbf03060c, 0x3e912245,
70e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e51a347, 0xbf6ddbb7, 0xbe952a55, 0xbf55ab57,
71e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbf010204, 0xbf3f7efe, 0xbe891224, 0x3f71e3c8,
72e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
73e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt8UintRef[] =
74e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
75e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000001b, 0x00000023, 0xffffffc5, 0x00000009,
76e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffb4, 0xffffffbf, 0xffffffbf, 0x00000024,
77e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000001a, 0xffffff8a, 0xffffffdb, 0xffffff96,
78e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffc0, 0xffffffa1, 0xffffffde, 0x00000078,
79e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
80e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt8IntRef[] =
81e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
82e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000001b, 0x00000023, 0xffffffc5, 0x00000009,
83e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffb4, 0xffffffbf, 0xffffffbf, 0x00000024,
84e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000001a, 0xffffff8a, 0xffffffdb, 0xffffff96,
85e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffc0, 0xffffffa1, 0xffffffde, 0x00000078,
86e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
87e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
88e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_snormInt16In[] =
89e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
90e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa0, 0xe9, 0xaa, 0x30,
91e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x16, 0x61, 0x37, 0xa2,
92e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x23, 0x4c, 0x46, 0xac,
93e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x8b, 0xf9, 0x36, 0x3e,
94e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x92, 0x7c, 0x96, 0x81,
95e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc5, 0xb2, 0x95, 0x6e,
96e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4f, 0x1e, 0xbc, 0x49,
97e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x14, 0x6c, 0x3c, 0x61,
98e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
99e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt16FloatRef[] =
100e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
101e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbe330166, 0x3ec2a985, 0x3f422d84, 0xbf3b9377,
102e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f184731, 0xbf27754f, 0xbd4ea19d, 0x3ef8d9f2,
103e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f7925f2, 0xbf7cd5fa, 0xbf1a7735, 0x3f5d2bba,
104e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e7279e5, 0x3f137927, 0x3f5829b0, 0x3f427985,
105e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
106e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt16UintRef[] =
107e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
108e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffe9a0, 0x000030aa, 0x00006116, 0xffffa237,
109e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00004c23, 0xffffac46, 0xfffff98b, 0x00003e36,
110e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00007c92, 0xffff8196, 0xffffb2c5, 0x00006e95,
111e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00001e4f, 0x000049bc, 0x00006c14, 0x0000613c,
112e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
113e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt16IntRef[] =
114e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
115e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffe9a0, 0x000030aa, 0x00006116, 0xffffa237,
116e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00004c23, 0xffffac46, 0xfffff98b, 0x00003e36,
117e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00007c92, 0xffff8196, 0xffffb2c5, 0x00006e95,
118e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00001e4f, 0x000049bc, 0x00006c14, 0x0000613c,
119e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
120e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
121e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_snormInt32In[] =
122e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
123e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xba, 0x2c, 0x02, 0xea,
124e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x75, 0x59, 0x74, 0x48,
125e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x32, 0xad, 0xb0, 0xda,
126e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0b, 0xf7, 0x6f, 0x49,
127e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x98, 0x9b, 0x76, 0x66,
128e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x79, 0x7d, 0x69, 0x33,
129e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb5, 0x74, 0x61, 0xa4,
130e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4c, 0xcd, 0x5c, 0x20,
131e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc3, 0xba, 0x90, 0xfc,
132e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xe3, 0x17, 0xd0, 0x89,
133e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x28, 0x61, 0x5d, 0xb0,
134e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x5d, 0xc9, 0xad, 0xc9,
135e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfc, 0x8c, 0x48, 0x3c,
136e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x11, 0x13, 0x40, 0x27,
137e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xe4, 0x88, 0x27, 0x4f,
138e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x52, 0xa2, 0x54, 0x50,
139e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
140e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt32FloatRef[] =
141e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
142e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbe2fee9a, 0x3f10e8b3, 0xbe953d4b, 0x3f12dfee,
143e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f4ced37, 0x3ecda5f6, 0xbf373d17, 0x3e817335,
144e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbcdbd14f, 0xbf6c5fd0, 0xbf1f453e, 0xbed948db,
145e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ef12234, 0x3e9d004c, 0x3f1e4f12, 0x3f20a945,
146e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
147e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt32UintRef[] =
148e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
149e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xea022cba, 0x48745975, 0xdab0ad32, 0x496ff70b,
150e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x66769b98, 0x33697d79, 0xa46174b5, 0x205ccd4c,
151e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfc90bac3, 0x89d017e3, 0xb05d6128, 0xc9adc95d,
152e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3c488cfc, 0x27401311, 0x4f2788e4, 0x5054a252,
153e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
154e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt32IntRef[] =
155e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
156e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xea022cba, 0x48745975, 0xdab0ad32, 0x496ff70b,
157e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x66769b98, 0x33697d79, 0xa46174b5, 0x205ccd4c,
158e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfc90bac3, 0x89d017e3, 0xb05d6128, 0xc9adc95d,
159e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3c488cfc, 0x27401311, 0x4f2788e4, 0x5054a252,
160e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
161e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
162e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormInt8In[] =
163e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
164e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x90, 0xa0, 0xa9, 0x26,
165e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x24, 0xc4, 0xa1, 0xa5,
166e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xdb, 0x0e, 0x09, 0x7a,
167e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x7f, 0x3d, 0xf2, 0x1f,
168e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
169e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt8FloatRef[] =
170e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
171e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f109091, 0x3f20a0a1, 0x3f29a9aa, 0x3e189899,
172e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e109091, 0x3f44c4c5, 0x3f21a1a2, 0x3f25a5a6,
173e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f5bdbdc, 0x3d60e0e1, 0x3d109091, 0x3ef4f4f5,
174e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3efefeff, 0x3e74f4f5, 0x3f72f2f3, 0x3df8f8f9,
175e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
176e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt8UintRef[] =
177e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
178e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000090, 0x000000a0, 0x000000a9, 0x00000026,
179e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000024, 0x000000c4, 0x000000a1, 0x000000a5,
180e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000db, 0x0000000e, 0x00000009, 0x0000007a,
181e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000007f, 0x0000003d, 0x000000f2, 0x0000001f,
182e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
183e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt8IntRef[] =
184e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
185e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000090, 0x000000a0, 0x000000a9, 0x00000026,
186e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000024, 0x000000c4, 0x000000a1, 0x000000a5,
187e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000db, 0x0000000e, 0x00000009, 0x0000007a,
188e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000007f, 0x0000003d, 0x000000f2, 0x0000001f,
189e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
190e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
191e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormInt16In[] =
192e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
193e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb6, 0x85, 0xf0, 0x1a,
194e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbc, 0x76, 0x5b, 0x59,
195e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf8, 0x74, 0x80, 0x6c,
196e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb1, 0x80, 0x4a, 0xdc,
197e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xeb, 0x61, 0xa3, 0x12,
198e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf6, 0x65, 0x6b, 0x25,
199e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x29, 0xe0, 0xe3, 0x0d,
200e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3a, 0xac, 0xa7, 0x97,
201e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
202e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt16FloatRef[] =
203e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
204e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f05b686, 0x3dd780d8, 0x3eed78ed, 0x3eb2b6b3,
205e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ee9f0ea, 0x3ed900d9, 0x3f00b181, 0x3f5c4adc,
206e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ec3d6c4, 0x3d951895, 0x3ecbeccc, 0x3e15ac96,
207e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f6029e0, 0x3d5e30de, 0x3f2c3aac, 0x3f17a798,
208e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
209e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt16UintRef[] =
210e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
211e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000085b6, 0x00001af0, 0x000076bc, 0x0000595b,
212e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000074f8, 0x00006c80, 0x000080b1, 0x0000dc4a,
213e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000061eb, 0x000012a3, 0x000065f6, 0x0000256b,
214e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000e029, 0x00000de3, 0x0000ac3a, 0x000097a7,
215e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
216e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt16IntRef[] =
217e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
218e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000085b6, 0x00001af0, 0x000076bc, 0x0000595b,
219e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000074f8, 0x00006c80, 0x000080b1, 0x0000dc4a,
220e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000061eb, 0x000012a3, 0x000065f6, 0x0000256b,
221e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000e029, 0x00000de3, 0x0000ac3a, 0x000097a7,
222e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
223e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
224e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormInt24In[] =
225e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
226e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xea, 0x65, 0x31, 0xb3,
227e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x53, 0x62, 0x02, 0xf1,
228e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xda, 0x3c, 0xaf, 0x31,
229e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x35, 0xd6, 0x1f, 0xe4,
230e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfa, 0x3b, 0xb9, 0x48,
231e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x73, 0x9a, 0xde, 0x6b,
232e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e, 0xa5, 0x15, 0x90,
233e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x95, 0xc2, 0x56, 0x8b,
234e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd2, 0x14, 0xd5, 0xe5,
235e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd0, 0x7b, 0x9f, 0x74,
236e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x79, 0x58, 0x86, 0xa9,
237e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc0, 0xdf, 0xb6, 0xb4,
238e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
239e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt24FloatRef[] =
240e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
241e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e4597a9, 0x3ec4a767, 0x3f5af103, 0x3e46bcf1,
242e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3dfeb1a9, 0x3e6feb91, 0x3ee69173, 0x3ed7bd35,
243e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3dad29f1, 0x3f429591, 0x3f528b57, 0x3f65d515,
244e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f1f7bd1, 0x3eb0f2e9, 0x3f40a987, 0x3f34b6e0,
245e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
246e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt24UintRef[] =
247e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
248e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x003165ea, 0x006253b3, 0x00daf102, 0x0031af3c,
249e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x001fd635, 0x003bfae4, 0x007348b9, 0x006bde9a,
250e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0015a53e, 0x00c29590, 0x00d28b56, 0x00e5d514,
251e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x009f7bd0, 0x00587974, 0x00c0a986, 0x00b4b6df,
252e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
253e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt24IntRef[] =
254e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
255e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x003165ea, 0x006253b3, 0x00daf102, 0x0031af3c,
256e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x001fd635, 0x003bfae4, 0x007348b9, 0x006bde9a,
257e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0015a53e, 0x00c29590, 0x00d28b56, 0x00e5d514,
258e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x009f7bd0, 0x00587974, 0x00c0a986, 0x00b4b6df,
259e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
260e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
261e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormInt32In[] =
262e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
263e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x45, 0x7d, 0xe1, 0x55,
264e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd2, 0xcb, 0xc5, 0x17,
265e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x64, 0x87, 0x84, 0x50,
266e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x37, 0x60, 0x54, 0xa1,
267e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa8, 0x7e, 0xea, 0x98,
268e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1a, 0xd1, 0xb4, 0x70,
269e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2d, 0xcb, 0xff, 0x13,
270e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3d, 0xd7, 0x3c, 0xe4,
271e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x94, 0xd6, 0xb4, 0xf7,
272e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x01, 0x58, 0x32, 0x9d,
273e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x91, 0x2b, 0x49, 0x1f,
274e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd0, 0xca, 0x3d, 0x05,
275e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x14, 0x5a, 0x95, 0xd0,
276e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfd, 0x64, 0x33, 0xd3,
277e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x73, 0x87, 0xa5, 0xf9,
278e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6d, 0xc8, 0x39, 0x03,
279e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
280e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt32FloatRef[] =
281e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
282e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3eabc2fb, 0x3dbe2e5f, 0x3ea1090f, 0x3f215460,
283e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f18ea7f, 0x3ee169a2, 0x3d9ffe59, 0x3f643cd7,
284e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f77b4d7, 0x3f1d3258, 0x3dfa495d, 0x3ca7b95a,
285e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f50955a, 0x3f533365, 0x3f79a587, 0x3c4e721b,
286e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
287e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt32UintRef[] =
288e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
289e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x55e17d45, 0x17c5cbd2, 0x50848764, 0xa1546037,
290e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x98ea7ea8, 0x70b4d11a, 0x13ffcb2d, 0xe43cd73d,
291e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf7b4d694, 0x9d325801, 0x1f492b91, 0x053dcad0,
292e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd0955a14, 0xd33364fd, 0xf9a58773, 0x0339c86d,
293e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
294e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt32IntRef[] =
295e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
296e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x55e17d45, 0x17c5cbd2, 0x50848764, 0xa1546037,
297e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x98ea7ea8, 0x70b4d11a, 0x13ffcb2d, 0xe43cd73d,
298e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf7b4d694, 0x9d325801, 0x1f492b91, 0x053dcad0,
299e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd0955a14, 0xd33364fd, 0xf9a58773, 0x0339c86d,
300e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
301e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
302e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormByte44In[] =
303e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
304e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xdb, 0xa8, 0x29, 0x2d,
305e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
306e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormByte44FloatRef[] =
307e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
308e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f5dddde, 0x3f3bbbbc, 0x00000000, 0x3f800000,
309e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f2aaaab, 0x3f088889, 0x00000000, 0x3f800000,
310e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e088889, 0x3f19999a, 0x00000000, 0x3f800000,
311e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e088889, 0x3f5dddde, 0x00000000, 0x3f800000,
312e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
313e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormByte44IntRef[] =
314e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
315e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000000d, 0x0000000b, 0x00000000, 0x00000001,
316e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000000a, 0x00000008, 0x00000000, 0x00000001,
317e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000002, 0x00000009, 0x00000000, 0x00000001,
318e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000002, 0x0000000d, 0x00000000, 0x00000001,
319e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
320e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedByte44FloatRef[] =
321e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
322e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41500000, 0x41300000, 0x00000000, 0x3f800000,
323e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41200000, 0x41000000, 0x00000000, 0x3f800000,
324e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40000000, 0x41100000, 0x00000000, 0x3f800000,
325e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40000000, 0x41500000, 0x00000000, 0x3f800000,
326e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
327e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
328e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormShort565In[] =
329e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
330e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xea, 0x7e, 0xcc, 0x28,
331e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x38, 0xce, 0x8f, 0x16,
332e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
333e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort565FloatRef[] =
334e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
335e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ef7bdef, 0x3f5f7df8, 0x3ea5294a, 0x3f800000,
336e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e25294a, 0x3dc30c31, 0x3ec6318c, 0x3f800000,
337e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f4e739d, 0x3f471c72, 0x3f46318c, 0x3f800000,
338e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3d842108, 0x3f534d35, 0x3ef7bdef, 0x3f800000,
339e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
340e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort565IntRef[] =
341e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
342e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000000f, 0x00000037, 0x0000000a, 0x00000001,
343e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000005, 0x00000006, 0x0000000c, 0x00000001,
344e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000019, 0x00000031, 0x00000018, 0x00000001,
345e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000002, 0x00000034, 0x0000000f, 0x00000001,
346e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
347e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedShort565FloatRef[] =
348e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
349e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41700000, 0x425c0000, 0x41200000, 0x3f800000,
350e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40a00000, 0x40c00000, 0x41400000, 0x3f800000,
351e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41c80000, 0x42440000, 0x41c00000, 0x3f800000,
352e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40000000, 0x42500000, 0x41700000, 0x3f800000,
353e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
354e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
355e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormShort555In[] =
356e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
357e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x02, 0xea, 0x89, 0x13,
358e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x94, 0x5a, 0x5b, 0x60,
359e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
360e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort555FloatRef[] =
361e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
362e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f56b5ad, 0x3f042108, 0x3d842108, 0x3f800000,
363e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e042108, 0x3f6739ce, 0x3e94a529, 0x3f800000,
364e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f35ad6b, 0x3f25294a, 0x3f25294a, 0x3f800000,
365e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f46318c, 0x3d842108, 0x3f5ef7be, 0x3f800000,
366e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
367e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort555IntRef[] =
368e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
369e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000001a, 0x00000010, 0x00000002, 0x00000001,
370e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000004, 0x0000001c, 0x00000009, 0x00000001,
371e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000016, 0x00000014, 0x00000014, 0x00000001,
372e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000018, 0x00000002, 0x0000001b, 0x00000001,
373e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
374e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
375e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormShort4444In[] =
376e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
377e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x19, 0xdb, 0xa8, 0xa8,
378e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x72, 0x29, 0xb4, 0x2d,
379e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
380e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort4444FloatRef[] =
381e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
382e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f5dddde, 0x3f3bbbbc, 0x3d888889, 0x3f19999a,
383e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f2aaaab, 0x3f088889, 0x3f2aaaab, 0x3f088889,
384e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e088889, 0x3f19999a, 0x3eeeeeef, 0x3e088889,
385e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e088889, 0x3f5dddde, 0x3f3bbbbc, 0x3e888889,
386e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
387e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort4444IntRef[] =
388e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
389e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000000d, 0x0000000b, 0x00000001, 0x00000009,
390e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000000a, 0x00000008, 0x0000000a, 0x00000008,
391e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000002, 0x00000009, 0x00000007, 0x00000002,
392e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000002, 0x0000000d, 0x0000000b, 0x00000004,
393e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
394e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedShort4444FloatRef[] =
395e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
396e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41500000, 0x41300000, 0x3f800000, 0x41100000,
397e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41200000, 0x41000000, 0x41200000, 0x41000000,
398e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40000000, 0x41100000, 0x40e00000, 0x40000000,
399e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40000000, 0x41500000, 0x41300000, 0x40800000,
400e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
401e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
402e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormShort5551In[] =
403e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
404e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x13, 0x89, 0x6f, 0x3c,
405e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xae, 0xe9, 0xf2, 0xd9,
406e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
407e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort5551FloatRef[] =
408e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
409e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f0c6319, 0x3e042108, 0x3e94a529, 0x3f800000,
410e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e6739ce, 0x3f0c6319, 0x3f3def7c, 0x3f800000,
411e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f6f7bdf, 0x3e46318c, 0x3f3def7c, 0x00000000,
412e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f5ef7be, 0x3e6739ce, 0x3f4e739d, 0x00000000,
413e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
414e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormShort5551IntRef[] =
415e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
416e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000011, 0x00000004, 0x00000009, 0x00000001,
417e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000007, 0x00000011, 0x00000017, 0x00000001,
418e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000001d, 0x00000006, 0x00000017, 0x00000000,
419e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000001b, 0x00000007, 0x00000019, 0x00000000,
420e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
421e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedShort5551FloatRef[] =
422e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
423e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41880000, 0x40800000, 0x41100000, 0x3f800000,
424e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40e00000, 0x41880000, 0x41b80000, 0x3f800000,
425e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41e80000, 0x40c00000, 0x41b80000, 0x00000000,
426e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41d80000, 0x40e00000, 0x41c80000, 0x00000000,
427e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
428e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
4295b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulosstatic const deUint8 s_unormShort1555In[] =
4305b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos{
4315b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0xf8, 0xc5, 0x1f, 0x6c,
4325b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0xf0, 0x2f, 0xf2, 0x95,
4335b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos};
4345b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulosstatic const deUint32 s_unormShort1555FloatRef[] =
4355b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos{
4365b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x3f800000, 0x3f0c6319, 0x3ef7bdef, 0x3f46318c,
4375b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x00000000, 0x3f5ef7be, 0x00000000, 0x3f800000,
4385b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x00000000, 0x3eb5ad6b, 0x3f800000, 0x3f042108,
4395b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x3f800000, 0x3e25294a, 0x3ef7bdef, 0x3f14a529,
4405b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos};
4415b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulosstatic const deUint32 s_unormShort1555IntRef[] =
4425b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos{
4435b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x00000001, 0x00000011, 0x0000000f, 0x00000018,
4445b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x00000000, 0x0000001b, 0x00000000, 0x0000001f,
4455b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x00000000, 0x0000000b, 0x0000001f, 0x00000010,
4465b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	0x00000001, 0x00000005, 0x0000000f, 0x00000012,
4475b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos};
4485b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
449e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormInt101010In[] =
450e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
451e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x81, 0xb3, 0x67, 0x51,
452e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa9, 0x00, 0x34, 0xc5,
453e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf0, 0x2f, 0xf2, 0x95,
454e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf8, 0xc5, 0x1f, 0x6c,
455e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
456e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt101010FloatRef[] =
457e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
458e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ea2a8aa, 0x3f1ee7ba, 0x3e60380e, 0x3f800000,
459e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f45314c, 0x3f50340d, 0x3d282a0b, 0x3f800000,
460e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f15e579, 0x3f48b22d, 0x3f7f3fd0, 0x3f800000,
461e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ed8360e, 0x3efe3f90, 0x3ebf2fcc, 0x3f800000,
462e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
463e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt101010IntRef[] =
464e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
465e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000145, 0x0000027b, 0x000000e0, 0x00000001,
466e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000314, 0x00000340, 0x0000002a, 0x00000001,
467e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000257, 0x00000322, 0x000003fc, 0x00000001,
468e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000001b0, 0x000001fc, 0x0000017e, 0x00000001,
469e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
470e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
471e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unormInt1010102RevIn[] =
472e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
473e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfd, 0xc6, 0xf5, 0xc4,
474e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x32, 0xa8, 0xfd, 0x7d,
475e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xe7, 0x3f, 0x10, 0xd0,
476e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x86, 0x0d, 0x66, 0xd0,
477e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
478e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt1010102RevFloatRef[] =
479e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
480e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f3f6fdc, 0x3eb8ae2c, 0x3d9e278a, 0x3f800000,
481e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3d48320d, 0x3f5ab6ae, 0x3f77fdff, 0x3eaaaaab,
482e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f79fe80, 0x3c703c0f, 0x3e80a028, 0x3f800000,
483e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ec330cc, 0x3ec1b06c, 0x3e8320c8, 0x3f800000,
484e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
485e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unormInt1010102RevIntRef[] =
486e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
487e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000002fd, 0x00000171, 0x0000004f, 0x00000003,
488e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000032, 0x0000036a, 0x000003df, 0x00000001,
489e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000003e7, 0x0000000f, 0x00000101, 0x00000003,
490e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000186, 0x00000183, 0x00000106, 0x00000003,
491e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
492e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt1010102RevFloatRef[] =
493e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
494e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbf01c0e0, 0x3f38dc6e, 0x3e1e4f28, 0xbf800000,
495e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3dc86432, 0xbe964b26, 0xbd844221, 0x3f800000,
496e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbd486432, 0x3cf0783c, 0x3f00c060, 0xbf800000,
497e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f4361b1, 0x3f41e0f0, 0x3f0341a1, 0xbf800000,
498e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
499e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_snormInt1010102RevIntRef[] =
500e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
501e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfffffefd, 0x00000171, 0x0000004f, 0xffffffff,
502e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000032, 0xffffff6a, 0xffffffdf, 0x00000001,
503e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffe7, 0x0000000f, 0x00000101, 0xffffffff,
504e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000186, 0x00000183, 0x00000106, 0xffffffff,
505e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
506e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
507e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt1010102RevIn[] =
508e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
509e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb8, 0x4c, 0xfd, 0x00,
510e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x65, 0x7f, 0xb2, 0x4e,
511e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x11, 0x3e, 0x03, 0x23,
512e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xae, 0xc9, 0xdd, 0xa2,
513e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
514e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt1010102RevFloatRef[] =
515e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
516e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x43380000, 0x4454c000, 0x41700000, 0x00000000,
517e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x44594000, 0x431f0000, 0x436b0000, 0x3f800000,
518e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x44044000, 0x434f0000, 0x440c0000, 0x00000000,
519e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x43d70000, 0x445c8000, 0x440b4000, 0x40000000,
520e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
521e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt1010102RevIntRef[] =
522e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
523e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000b8, 0x00000353, 0x0000000f, 0x00000000,
524e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000365, 0x0000009f, 0x000000eb, 0x00000001,
525e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000211, 0x000000cf, 0x00000230, 0x00000000,
526e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000001ae, 0x00000372, 0x0000022d, 0x00000002,
527e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
528e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt1010102RevFloatRef[] =
529e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
530e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x43380000, 0x4f7fffff, 0x41700000, 0x00000000,
531e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4f7fffff, 0x431f0000, 0x436b0000, 0x3f800000,
532e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4f7ffffe, 0x434f0000, 0x4f7ffffe, 0x00000000,
533e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x43d70000, 0x4f7fffff, 0x4f7ffffe, 0x4f800000,
534e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
535e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt1010102RevIntRef[] =
536e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
537e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000b8, 0xffffff53, 0x0000000f, 0x00000000,
538e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffff65, 0x0000009f, 0x000000eb, 0x00000001,
539e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfffffe11, 0x000000cf, 0xfffffe30, 0x00000000,
540e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000001ae, 0xffffff72, 0xfffffe2d, 0xfffffffe,
541e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
542e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
543e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt11f11f10fRevIn[] =
544e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
545e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x8e, 0x1b, 0x81, 0x45,
546e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xcf, 0x47, 0x50, 0x29,
547e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xff, 0x5e, 0x8e, 0x93,
548e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x95, 0x07, 0x45, 0x4a,
549e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
550e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt11f11f10fRevFloatRef[] =
551e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
552e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f1c0000, 0x380c0000, 0x3c580000, 0x3f800000,
553e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x7fffffff, 0x3c100000, 0x3a940000, 0x3f800000,
554e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x45fe0000, 0x3b960000, 0x41380000, 0x3f800000,
555e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x472a0000, 0x39400000, 0x3ca40000, 0x3f800000,
556e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
557e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
558e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt999E5RevIn[] =
559e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
560e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x88, 0x8b, 0x50, 0x34,
561e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2b, 0x2f, 0xe2, 0x92,
562e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x95, 0x7f, 0xeb, 0x18,
563e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6b, 0xe2, 0x27, 0x30,
564e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
565e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt999E5RevFloatRef[] =
566e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
567e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3ac40000, 0x398a0000, 0x3a8a0000, 0x3f800000,
568e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40958000, 0x408b8000, 0x40380000, 0x3f800000,
569e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x394a8000, 0x395f8000, 0x37e80000, 0x3f800000,
570e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x39d60000, 0x3af88000, 0x38100000, 0x3f800000,
571e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
572e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
573e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt1688In[] =
574e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
575e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x02, 0x50, 0x91, 0x85,
576e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xcc, 0xe2, 0xfd, 0xc8,
577e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x62, 0xeb, 0x0f, 0xe6,
578e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x95, 0x27, 0x26, 0x24,
579e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
580e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt1688FloatRef[] =
581e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
582e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f059186, 0x00000000, 0x00000000, 0x3f800000,
583e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f48fdc9, 0x00000000, 0x00000000, 0x3f800000,
584e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f660fe6, 0x00000000, 0x00000000, 0x3f800000,
585e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e109891, 0x00000000, 0x00000000, 0x3f800000,
586e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
587e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt1688UintRef[] =
588e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
589e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000002, 0x00000000, 0x00000000, 0x00000001,
590e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000cc, 0x00000000, 0x00000000, 0x00000001,
591e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000062, 0x00000000, 0x00000000, 0x00000001,
592e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000095, 0x00000000, 0x00000000, 0x00000001,
593e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
594e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
595e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt248In[] =
596e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
597e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xea, 0x7e, 0xcc, 0x28,
598e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x38, 0xce, 0x8f, 0x16,
599e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e, 0x4f, 0xe2, 0xfd,
600e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x74, 0x5e, 0xf2, 0x30,
601e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
602e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt248FloatRef[] =
603e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
604e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e2331f9, 0x00000000, 0x00000000, 0x3f800000,
605e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3db47e71, 0x00000000, 0x00000000, 0x3f800000,
606e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f7de250, 0x00000000, 0x00000000, 0x3f800000,
607e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e43c979, 0x00000000, 0x00000000, 0x3f800000,
608e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
609e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt248UintRef[] =
610e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
611e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000ea, 0x00000000, 0x00000000, 0x00000001,
612e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000038, 0x00000000, 0x00000000, 0x00000001,
613e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000003e, 0x00000000, 0x00000000, 0x00000001,
614e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000074, 0x00000000, 0x00000000, 0x00000001,
615e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
616e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
617e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt248RevIn[] =
618e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
619e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x7e, 0xcc, 0x28, 0xea,
620e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xce, 0x8f, 0x16, 0x38,
621e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4f, 0xe2, 0xfd, 0x3e,
622e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x5e, 0xf2, 0x30, 0x74,
623e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
624e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt248RevFloatRef[] =
625e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
626e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e2331f9, 0x00000000, 0x00000000, 0x3f800000,
627e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3db47e71, 0x00000000, 0x00000000, 0x3f800000,
628e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3f7de250, 0x00000000, 0x00000000, 0x3f800000,
629e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e43c979, 0x00000000, 0x00000000, 0x3f800000,
630e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
631e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt248RevUintRef[] =
632e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
633e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000ea, 0x00000000, 0x00000000, 0x00000001,
634e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000038, 0x00000000, 0x00000000, 0x00000001,
635e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000003e, 0x00000000, 0x00000000, 0x00000001,
636e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000074, 0x00000000, 0x00000000, 0x00000001,
637e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
638e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
639e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_signedInt8In[] =
640e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
641e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3a, 0x5b, 0x6d, 0x6a,
642e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x44, 0x56, 0x6b, 0x21,
643e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6a, 0x0b, 0x24, 0xd9,
644e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd4, 0xb4, 0xda, 0x97,
645e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
646e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt8FloatRef[] =
647e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
648e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x42680000, 0x42b60000, 0x42da0000, 0x42d40000,
649e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x42880000, 0x42ac0000, 0x42d60000, 0x42040000,
650e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x42d40000, 0x41300000, 0x42100000, 0xc21c0000,
651e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc2300000, 0xc2980000, 0xc2180000, 0xc2d20000,
652e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
653e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt8UintRef[] =
654e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
655e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000003a, 0x0000005b, 0x0000006d, 0x0000006a,
656e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000044, 0x00000056, 0x0000006b, 0x00000021,
657e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000006a, 0x0000000b, 0x00000024, 0xffffffd9,
658e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffd4, 0xffffffb4, 0xffffffda, 0xffffff97,
659e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
660e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt8IntRef[] =
661e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
662e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000003a, 0x0000005b, 0x0000006d, 0x0000006a,
663e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000044, 0x00000056, 0x0000006b, 0x00000021,
664e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000006a, 0x0000000b, 0x00000024, 0xffffffd9,
665e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffd4, 0xffffffb4, 0xffffffda, 0xffffff97,
666e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
667e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
668e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_signedInt16In[] =
669e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
670e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf1, 0xdd, 0xcd, 0xc3,
671e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1c, 0xb6, 0x6f, 0x74,
672e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x19, 0x13, 0x25, 0xed,
673e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x16, 0xce, 0x0d, 0x0f,
674e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x5c, 0xf4, 0x3c, 0xa3,
675e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6d, 0x25, 0x65, 0x6d,
676e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xae, 0x5d, 0x88, 0xfa,
677e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x86, 0x3e, 0x6a, 0x91,
678e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
679e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt16FloatRef[] =
680e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
681e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc6083c00, 0xc670cc00, 0xc693c800, 0x46e8de00,
682e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4598c800, 0xc596d800, 0xc647a800, 0x4570d000,
683e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc53a4000, 0xc6b98800, 0x4615b400, 0x46daca00,
684e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x46bb5c00, 0xc4af0000, 0x467a1800, 0xc6dd2c00,
685e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
686e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt16UintRef[] =
687e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
688e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffddf1, 0xffffc3cd, 0xffffb61c, 0x0000746f,
689e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00001319, 0xffffed25, 0xffffce16, 0x00000f0d,
690e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfffff45c, 0xffffa33c, 0x0000256d, 0x00006d65,
691e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00005dae, 0xfffffa88, 0x00003e86, 0xffff916a,
692e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
693e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt16IntRef[] =
694e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
695e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffddf1, 0xffffc3cd, 0xffffb61c, 0x0000746f,
696e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00001319, 0xffffed25, 0xffffce16, 0x00000f0d,
697e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfffff45c, 0xffffa33c, 0x0000256d, 0x00006d65,
698e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00005dae, 0xfffffa88, 0x00003e86, 0xffff916a,
699e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
700e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
701e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_signedInt32In[] =
702e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
703e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc6, 0x7e, 0x50, 0x2a,
704e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xec, 0x0f, 0x9b, 0x44,
705e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4d, 0xa9, 0x77, 0x0d,
706e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x69, 0x4c, 0xd3, 0x76,
707e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf0, 0xb7, 0xde, 0x6b,
708e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4e, 0xe2, 0xb1, 0x58,
709e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa8, 0x9c, 0xfc, 0x6d,
710e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x75, 0x8f, 0x3c, 0x7f,
711e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf3, 0x19, 0x14, 0x97,
712e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf0, 0x87, 0x5c, 0x11,
713e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x95, 0x32, 0xab, 0x7a,
714e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x03, 0x2b, 0xdf, 0x52,
715e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x68, 0x84, 0xd9, 0x91,
716e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xec, 0x2a, 0xf1, 0xd0,
717e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf7, 0x73, 0x8f, 0x0a,
718e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x62, 0xd2, 0x76, 0xfd,
719e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
720e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt32FloatRef[] =
721e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
722e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4e2941fb, 0x4e893620, 0x4d577a95, 0x4eeda699,
723e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4ed7bd70, 0x4eb163c5, 0x4edbf939, 0x4efe791f,
724e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xced1d7cc, 0x4d8ae440, 0x4ef55665, 0x4ea5be56,
725e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xcedc4cf7, 0xce3c3b54, 0x4d28f73f, 0xcc224b68,
726e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
727e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt32UintRef[] =
728e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
729e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2a507ec6, 0x449b0fec, 0x0d77a94d, 0x76d34c69,
730e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6bdeb7f0, 0x58b1e24e, 0x6dfc9ca8, 0x7f3c8f75,
731e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x971419f3, 0x115c87f0, 0x7aab3295, 0x52df2b03,
732e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x91d98468, 0xd0f12aec, 0x0a8f73f7, 0xfd76d262,
733e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
734e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_signedInt32IntRef[] =
735e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
736e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2a507ec6, 0x449b0fec, 0x0d77a94d, 0x76d34c69,
737e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6bdeb7f0, 0x58b1e24e, 0x6dfc9ca8, 0x7f3c8f75,
738e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x971419f3, 0x115c87f0, 0x7aab3295, 0x52df2b03,
739e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x91d98468, 0xd0f12aec, 0x0a8f73f7, 0xfd76d262,
740e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
741e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
742e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt8In[] =
743e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
744e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x68, 0xa6, 0x99, 0x6e,
745e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x13, 0x90, 0x0f, 0x40,
746e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x34, 0x76, 0x05, 0x9a,
747e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6c, 0x9c, 0x1d, 0x6a,
748e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
749e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt8FloatRef[] =
750e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
751e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x42d00000, 0x43260000, 0x43190000, 0x42dc0000,
752e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41980000, 0x43100000, 0x41700000, 0x42800000,
753e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x42500000, 0x42ec0000, 0x40a00000, 0x431a0000,
754e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x42d80000, 0x431c0000, 0x41e80000, 0x42d40000,
755e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
756e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt8UintRef[] =
757e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
758e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000068, 0x000000a6, 0x00000099, 0x0000006e,
759e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000013, 0x00000090, 0x0000000f, 0x00000040,
760e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000034, 0x00000076, 0x00000005, 0x0000009a,
761e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000006c, 0x0000009c, 0x0000001d, 0x0000006a,
762e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
763e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt8IntRef[] =
764e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
765e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000068, 0x000000a6, 0x00000099, 0x0000006e,
766e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000013, 0x00000090, 0x0000000f, 0x00000040,
767e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000034, 0x00000076, 0x00000005, 0x0000009a,
768e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000006c, 0x0000009c, 0x0000001d, 0x0000006a,
769e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
770e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
771e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt16In[] =
772e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
773e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa5, 0x62, 0x98, 0x7c,
774e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x13, 0x21, 0xc8, 0xf4,
775e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x78, 0x0b, 0x9f, 0xc2,
776e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x92, 0x1c, 0xa9, 0x25,
777e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x86, 0xea, 0x1f, 0x1c,
778e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x41, 0xf7, 0xe2, 0x2e,
779e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x38, 0x69, 0xf2, 0x6d,
780e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x01, 0xec, 0x7f, 0xc5,
781e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
782e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt16FloatRef[] =
783e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
784e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x46c54a00, 0x46f93000, 0x46044c00, 0x4774c800,
785e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x45378000, 0x47429f00, 0x45e49000, 0x4616a400,
786e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x476a8600, 0x45e0f800, 0x47774100, 0x463b8800,
787e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x46d27000, 0x46dbe400, 0x476c0100, 0x47457f00,
788e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
789e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt16UintRef[] =
790e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
791e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000062a5, 0x00007c98, 0x00002113, 0x0000f4c8,
792e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000b78, 0x0000c29f, 0x00001c92, 0x000025a9,
793e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000ea86, 0x00001c1f, 0x0000f741, 0x00002ee2,
794e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00006938, 0x00006df2, 0x0000ec01, 0x0000c57f,
795e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
796e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt16IntRef[] =
797e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
798e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000062a5, 0x00007c98, 0x00002113, 0x0000f4c8,
799e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000b78, 0x0000c29f, 0x00001c92, 0x000025a9,
800e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000ea86, 0x00001c1f, 0x0000f741, 0x00002ee2,
801e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00006938, 0x00006df2, 0x0000ec01, 0x0000c57f,
802e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
803e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
804e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt24In[] =
805e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
806e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa8, 0x11, 0x00, 0xc8,
807e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xe5, 0x07, 0xd3, 0x6d,
808e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0a, 0xc7, 0xe4, 0x42,
809e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2d, 0xf7, 0x5d, 0x9c,
810e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2e, 0x18, 0xfd, 0xa4,
811e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x9e, 0x90, 0x0c, 0x31,
812e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x06, 0x04, 0xc4, 0xc2,
813e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xde, 0xfe, 0x7c, 0x1d,
814e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x57, 0x37, 0x4a, 0xf2,
815e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xe2, 0xf3, 0x74, 0x8e,
816e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x8f, 0xd6, 0x73, 0xc4,
817e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x91, 0xa0, 0x49, 0xe3,
818e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
819e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt24FloatRef[] =
820e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
821e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x458d4000, 0x48fcb900, 0x4926dd30, 0x4a85c98e,
822e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4abbee5a, 0x49c174e0, 0x4b1ea4fd, 0x4a443240,
823e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4b440406, 0x4b7edec2, 0x4aae3af8, 0x4b724a37,
824e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4ae9e7c4, 0x4b568f8e, 0x4b11c473, 0x4b6349a0,
825e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
826e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt24UintRef[] =
827e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
828e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000011a8, 0x0007e5c8, 0x000a6dd3, 0x0042e4c7,
829e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x005df72d, 0x00182e9c, 0x009ea4fd, 0x00310c90,
830e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00c40406, 0x00fedec2, 0x00571d7c, 0x00f24a37,
831e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0074f3e2, 0x00d68f8e, 0x0091c473, 0x00e349a0,
832e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
833e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt24IntRef[] =
834e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
835e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000011a8, 0x0007e5c8, 0x000a6dd3, 0x0042e4c7,
836e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x005df72d, 0x00182e9c, 0x009ea4fd, 0x00310c90,
837e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00c40406, 0x00fedec2, 0x00571d7c, 0x00f24a37,
838e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0074f3e2, 0x00d68f8e, 0x0091c473, 0x00e349a0,
839e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
840e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
841e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_unsignedInt32In[] =
842e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
843e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x90, 0xb0, 0x00, 0xa8,
844e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd8, 0x42, 0x5b, 0xae,
845e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x40, 0x70, 0x38, 0x2a,
846e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x92, 0x76, 0xd8, 0x70,
847e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x04, 0x0d, 0x67, 0x87,
848e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x9c, 0xdd, 0xb1, 0xeb,
849e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfc, 0x37, 0xe6, 0x40,
850e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x24, 0x9c, 0x6a, 0x0f,
851e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x09, 0x0e, 0xb6, 0x2f,
852e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x31, 0x95, 0x43, 0x22,
853e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x24, 0xde, 0x70, 0x2a,
854e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x05, 0xa2, 0x84, 0x38,
855e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x16, 0x9f, 0x65, 0x0e,
856e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb2, 0x99, 0x84, 0x6d,
857e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xef, 0x86, 0x94, 0xf0,
858e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x25, 0x9d, 0xf9, 0x67,
859e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
860e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt32FloatRef[] =
861e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
862e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4f2800b1, 0x4f2e5b43, 0x4e28e1c1, 0x4ee1b0ed,
863e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4f07670d, 0x4f6bb1de, 0x4e81cc70, 0x4d76a9c2,
864e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4e3ed838, 0x4e090e55, 0x4e29c379, 0x4e621288,
865e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4d6659f1, 0x4edb0933, 0x4f709487, 0x4ecff33a,
866e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
867e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt32UintRef[] =
868e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
869e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa800b090, 0xae5b42d8, 0x2a387040, 0x70d87692,
870e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x87670d04, 0xebb1dd9c, 0x40e637fc, 0x0f6a9c24,
871e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2fb60e09, 0x22439531, 0x2a70de24, 0x3884a205,
872e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0e659f16, 0x6d8499b2, 0xf09486ef, 0x67f99d25,
873e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
874e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_unsignedInt32IntRef[] =
875e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
876e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xa800b090, 0xae5b42d8, 0x2a387040, 0x70d87692,
877e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x87670d04, 0xebb1dd9c, 0x40e637fc, 0x0f6a9c24,
878e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2fb60e09, 0x22439531, 0x2a70de24, 0x3884a205,
879e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0e659f16, 0x6d8499b2, 0xf09486ef, 0x67f99d25,
880e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
881e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
882e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_halfFloatIn[] =
883e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
884e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2b, 0x74, 0x6a, 0x5d,
885e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1c, 0xb2, 0x9a, 0x4d,
886e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xad, 0x55, 0x22, 0x01,
887e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xce, 0x2d, 0x97, 0x0d,
888e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x71, 0x31, 0x42, 0x2b,
889e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xeb, 0x26, 0xc7, 0x16,
890e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x94, 0xd2, 0x22, 0x79,
891e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x89, 0xbd, 0xff, 0xbc,
892e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
893e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_halfFloatFloatRef[] =
894e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
895e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x46856000, 0x43ad4000, 0xbe438000, 0x41b34000,
896e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x42b5a000, 0x37910000, 0x3db9c000, 0x39b2e000,
897e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3e2e2000, 0x3d684000, 0x3cdd6000, 0x3ad8e000,
898e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xc2528000, 0x47244000, 0xbfb12000, 0xbf9fe000,
899e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
900e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_halfFloatUintRef[] =
901e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
902e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000042b0, 0x0000015a, 0x00000000, 0x00000016,
903e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000005a, 0x00000000, 0x00000000, 0x00000000,
904e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000000, 0x00000000, 0x00000000, 0x00000000,
905e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffcc, 0x0000a440, 0xffffffff, 0xffffffff,
906e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
907e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_halfFloatIntRef[] =
908e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
909e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000042b0, 0x0000015a, 0x00000000, 0x00000016,
910e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000005a, 0x00000000, 0x00000000, 0x00000000,
911e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000000, 0x00000000, 0x00000000, 0x00000000,
912e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xffffffcc, 0x0000a440, 0xffffffff, 0xffffffff,
913e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
914e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
915e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_floatIn[] =
916e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
917e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x92, 0xac, 0x68, 0x36,
918e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x9f, 0x42, 0x0b, 0x6e,
919e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x67, 0xcf, 0x0f, 0x20,
920e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x22, 0x6c, 0xe4, 0x0f,
921e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb3, 0x72, 0xc8, 0x8a,
922e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4b, 0x99, 0xc3, 0xb0,
923e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbd, 0x78, 0x5c, 0x16,
924e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1c, 0xce, 0xb7, 0x4e,
925e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x15, 0xdf, 0x37, 0xfd,
926e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xeb, 0x32, 0xe9, 0x47,
927e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x68, 0x1a, 0xaa, 0xd0,
928e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb9, 0xba, 0x77, 0xe7,
929e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x81, 0x0a, 0x42, 0x5a,
930e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb0, 0x5a, 0xee, 0x06,
931e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x77, 0xb4, 0x7b, 0x57,
932e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf5, 0x35, 0xac, 0x56,
933e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
934e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_floatFloatRef[] =
935e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
936e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x3668ac92, 0x6e0b429f, 0x200fcf67, 0x0fe46c22,
937e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x8ac872b3, 0xb0c3994b, 0x165c78bd, 0x4eb7ce1c,
938e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xfd37df15, 0x47e932eb, 0xd0aa1a68, 0xe777bab9,
939e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x5a420a81, 0x06ee5ab0, 0x577bb477, 0x56ac35f5,
940e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
941e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_floatUintRef[] =
942e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
943e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000000, 0x80000000, 0x00000000, 0x00000000,
944e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000000, 0x00000000, 0x00000000, 0x5be70e00,
945e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x0001d265, 0x80000000, 0x80000000,
946e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x00000000, 0x80000000, 0x80000000,
947e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
948e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_floatIntRef[] =
949e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
950e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000000, 0x80000000, 0x00000000, 0x00000000,
951e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x00000000, 0x00000000, 0x00000000, 0x5be70e00,
952e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x0001d265, 0x80000000, 0x80000000,
953e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x00000000, 0x80000000, 0x80000000,
954e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
955e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
956e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_float64In[] =
957e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
958e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbd, 0xb6, 0xc3, 0xd2,
959e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf6, 0x62, 0x29, 0xd9,
960e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2f, 0xc2, 0x46, 0x18,
961e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6b, 0x0d, 0x0a, 0x53,
962e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6d, 0x0c, 0xf3, 0x80,
963e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbd, 0xa9, 0x12, 0x89,
964e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6b, 0x9f, 0x3d, 0xdd,
965e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb3, 0x91, 0xee, 0xf5,
966e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x92, 0xac, 0x68, 0x36,
967e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x9f, 0x42, 0x0b, 0x6e,
968e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x67, 0xcf, 0x0f, 0x20,
969e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x22, 0x6c, 0xe4, 0x0f,
970e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb3, 0x72, 0xc8, 0x8a,
971e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x4b, 0x99, 0xc3, 0xb0,
972e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbd, 0x78, 0x5c, 0x16,
973e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1c, 0xce, 0xb7, 0x4e,
974e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x15, 0xdf, 0x37, 0xfd,
975e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xeb, 0x32, 0xe9, 0x47,
976e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x68, 0x1a, 0xaa, 0xd0,
977e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb9, 0xba, 0x77, 0xe7,
978e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x81, 0x0a, 0x42, 0x5a,
979e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb0, 0x5a, 0xee, 0x06,
980e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x77, 0xb4, 0x7b, 0x57,
981e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf5, 0x35, 0xac, 0x56,
982e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2b, 0x74, 0x6a, 0x5d,
983e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1c, 0xb2, 0x9a, 0x4d,
984e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xad, 0x55, 0x22, 0x01,
985e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xce, 0x2d, 0x97, 0x0d,
986e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x71, 0x31, 0x42, 0x2b,
987e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xeb, 0x26, 0xc7, 0x16,
988e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x94, 0xd2, 0x22, 0x79,
989e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x89, 0xbd, 0xff, 0xbc,
990e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
991e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_float64FloatRef[] =
992e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
993e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xff800000, 0x7f800000, 0x80000000, 0xff800000,
994e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x7f800000, 0x00000000, 0x80000000, 0x7f800000,
995e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x7f499760, 0xff800000, 0x00000000, 0x7f800000,
996e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x7f800000, 0x00000000, 0x00000000, 0xa7fdec4c,
997e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
998e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_float64IntRef[] =
999e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1000e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x80000000, 0x00000000, 0x80000000,
1001e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x00000000, 0x00000000, 0x80000000,
1002e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x80000000, 0x00000000, 0x80000000,
1003e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80000000, 0x00000000, 0x00000000, 0x00000000,
1004e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1005e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1006e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint8 s_floatUnsignedInt248RevIn[] =
1007e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1008e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbd, 0xb6, 0xc3, 0xd2,
1009e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xf6, 0x62, 0x29, 0xd9,
1010e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x2f, 0xc2, 0x46, 0x18,
1011e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6b, 0x0d, 0x0a, 0x53,
1012e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6d, 0x0c, 0xf3, 0x80,
1013e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xbd, 0xa9, 0x12, 0x89,
1014e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x6b, 0x9f, 0x3d, 0xdd,
1015e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xb3, 0x91, 0xee, 0xf5,
1016e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1017e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_floatUnsignedInt248RevFloatRef[] =
1018e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1019e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xd2c3b6bd, 0x00000000, 0x00000000, 0x3f800000,
1020e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x1846c22f, 0x00000000, 0x00000000, 0x3f800000,
1021e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x80f30c6d, 0x00000000, 0x00000000, 0x3f800000,
1022e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0xdd3d9f6b, 0x00000000, 0x00000000, 0x3f800000,
1023e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1024e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const deUint32 s_floatUnsignedInt248RevUintRef[] =
1025e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1026e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000f6, 0x00000000, 0x00000000, 0x00000001,
1027e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x0000006b, 0x00000000, 0x00000000, 0x00000001,
1028e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000bd, 0x00000000, 0x00000000, 0x00000001,
1029e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	0x000000b3, 0x00000000, 0x00000000, 0x00000001,
1030e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1031e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1032e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos// \todo [2015-10-12 pyry] Collapse duplicate ref arrays
1033e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1034e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic const struct
1035e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1036e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const deUint8*		input;
1037e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const int			inputSize;
1038e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const deUint32*		floatRef;
1039e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const deUint32*		intRef;
1040e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const deUint32*		uintRef;
1041e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos} s_formatData[] =
1042e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1043e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_snormInt8In,				DE_LENGTH_OF_ARRAY(s_snormInt8In),					s_snormInt8FloatRef,				s_snormInt8IntRef,				s_snormInt8UintRef				},
1044e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_snormInt16In,				DE_LENGTH_OF_ARRAY(s_snormInt16In),					s_snormInt16FloatRef,				s_snormInt16IntRef,				s_snormInt16UintRef				},
1045e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_snormInt32In,				DE_LENGTH_OF_ARRAY(s_snormInt32In),					s_snormInt32FloatRef,				s_snormInt32IntRef,				s_snormInt32UintRef				},
1046e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormInt8In,				DE_LENGTH_OF_ARRAY(s_unormInt8In),					s_unormInt8FloatRef,				s_unormInt8IntRef,				s_unormInt8UintRef				},
1047e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormInt16In,				DE_LENGTH_OF_ARRAY(s_unormInt16In),					s_unormInt16FloatRef,				s_unormInt16IntRef,				s_unormInt16UintRef				},
1048e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormInt24In,				DE_LENGTH_OF_ARRAY(s_unormInt24In),					s_unormInt24FloatRef,				s_unormInt24IntRef,				s_unormInt24UintRef				},
1049e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormInt32In,				DE_LENGTH_OF_ARRAY(s_unormInt32In),					s_unormInt32FloatRef,				s_unormInt32IntRef,				s_unormInt32UintRef				},
1050e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormByte44In,				DE_LENGTH_OF_ARRAY(s_unormByte44In),				s_unormByte44FloatRef,				s_unormByte44IntRef,			s_unormByte44IntRef				},
1051e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormShort565In,			DE_LENGTH_OF_ARRAY(s_unormShort565In),				s_unormShort565FloatRef,			s_unormShort565IntRef,			s_unormShort565IntRef,			},
1052e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormShort555In,			DE_LENGTH_OF_ARRAY(s_unormShort555In),				s_unormShort555FloatRef,			s_unormShort555IntRef,			s_unormShort555IntRef,			},
1053e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormShort4444In,			DE_LENGTH_OF_ARRAY(s_unormShort4444In),				s_unormShort4444FloatRef,			s_unormShort4444IntRef,			s_unormShort4444IntRef,			},
1054e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormShort5551In,			DE_LENGTH_OF_ARRAY(s_unormShort5551In),				s_unormShort5551FloatRef,			s_unormShort5551IntRef,			s_unormShort5551IntRef,			},
10555b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	{ s_unormShort1555In,			DE_LENGTH_OF_ARRAY(s_unormShort1555In),				s_unormShort1555FloatRef,			s_unormShort1555IntRef,			s_unormShort1555IntRef,			},
1056e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormInt101010In,			DE_LENGTH_OF_ARRAY(s_unormInt101010In),				s_unormInt101010FloatRef,			s_unormInt101010IntRef,			s_unormInt101010IntRef			},
1057e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1058e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	// \note Same input data & int reference used for {U,S}NORM_INT_1010102_REV
1059e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormInt1010102RevIn,		DE_LENGTH_OF_ARRAY(s_unormInt1010102RevIn),			s_snormInt1010102RevFloatRef,		s_snormInt1010102RevIntRef,		s_snormInt1010102RevIntRef		},
1060e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormInt1010102RevIn,		DE_LENGTH_OF_ARRAY(s_unormInt1010102RevIn),			s_unormInt1010102RevFloatRef,		s_unormInt1010102RevIntRef,		s_unormInt1010102RevIntRef		},
1061e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1062e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	// \note UNSIGNED_BYTE_* and UNSIGNED_SHORT_* re-use input data and integer reference values from UNORM_* cases
1063e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormByte44In,				DE_LENGTH_OF_ARRAY(s_unormByte44In),				s_unsignedByte44FloatRef,			s_unormByte44IntRef,			s_unormByte44IntRef				},
1064e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormShort565In,			DE_LENGTH_OF_ARRAY(s_unormShort565In),				s_unsignedShort565FloatRef,			s_unormShort565IntRef,			s_unormShort565IntRef,			},
1065e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormShort4444In,			DE_LENGTH_OF_ARRAY(s_unormShort4444In),				s_unsignedShort4444FloatRef,		s_unormShort4444IntRef,			s_unormShort4444IntRef,			},
1066e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unormShort5551In,			DE_LENGTH_OF_ARRAY(s_unormShort5551In),				s_unsignedShort5551FloatRef,		s_unormShort5551IntRef,			s_unormShort5551IntRef,			},
1067e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1068e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	// \note (UN)SIGNED_INT_1010102_REV formats use same input data
1069e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt1010102RevIn,	DE_LENGTH_OF_ARRAY(s_unsignedInt1010102RevIn),		s_signedInt1010102RevFloatRef,		s_signedInt1010102RevIntRef,	s_signedInt1010102RevIntRef		},
1070e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt1010102RevIn,	DE_LENGTH_OF_ARRAY(s_unsignedInt1010102RevIn),		s_unsignedInt1010102RevFloatRef,	s_unsignedInt1010102RevIntRef,	s_unsignedInt1010102RevIntRef	},
1071e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1072e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt11f11f10fRevIn,	DE_LENGTH_OF_ARRAY(s_unsignedInt11f11f10fRevIn),	s_unsignedInt11f11f10fRevFloatRef,	DE_NULL,						DE_NULL							},
1073e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt999E5RevIn,		DE_LENGTH_OF_ARRAY(s_unsignedInt999E5RevIn),		s_unsignedInt999E5RevFloatRef,		DE_NULL,						DE_NULL							},
1074e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt1688In,			DE_LENGTH_OF_ARRAY(s_unsignedInt1688In),			s_unsignedInt1688FloatRef,			DE_NULL,						s_unsignedInt1688UintRef		},
1075e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt248In,			DE_LENGTH_OF_ARRAY(s_unsignedInt248In),				s_unsignedInt248FloatRef,			DE_NULL,						s_unsignedInt248UintRef			},
1076e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt248RevIn,		DE_LENGTH_OF_ARRAY(s_unsignedInt248RevIn),			s_unsignedInt248RevFloatRef,		DE_NULL,						s_unsignedInt248RevUintRef		},
1077e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_signedInt8In,				DE_LENGTH_OF_ARRAY(s_signedInt8In),					s_signedInt8FloatRef,				s_signedInt8IntRef,				s_signedInt8UintRef				},
1078e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_signedInt16In,				DE_LENGTH_OF_ARRAY(s_signedInt16In),				s_signedInt16FloatRef,				s_signedInt16IntRef,			s_signedInt16UintRef			},
1079e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_signedInt32In,				DE_LENGTH_OF_ARRAY(s_signedInt32In),				s_signedInt32FloatRef,				s_signedInt32IntRef,			s_signedInt32UintRef			},
1080e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt8In,				DE_LENGTH_OF_ARRAY(s_unsignedInt8In),				s_unsignedInt8FloatRef,				s_unsignedInt8IntRef,			s_unsignedInt8UintRef			},
1081e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt16In,			DE_LENGTH_OF_ARRAY(s_unsignedInt16In),				s_unsignedInt16FloatRef,			s_unsignedInt16IntRef,			s_unsignedInt16UintRef			},
1082e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt24In,			DE_LENGTH_OF_ARRAY(s_unsignedInt24In),				s_unsignedInt24FloatRef,			s_unsignedInt24IntRef,			s_unsignedInt24UintRef			},
1083e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_unsignedInt32In,			DE_LENGTH_OF_ARRAY(s_unsignedInt32In),				s_unsignedInt32FloatRef,			s_unsignedInt32IntRef,			s_unsignedInt32UintRef			},
1084e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_halfFloatIn,				DE_LENGTH_OF_ARRAY(s_halfFloatIn),					s_halfFloatFloatRef,				s_halfFloatIntRef,				s_halfFloatUintRef				},
1085e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_floatIn,					DE_LENGTH_OF_ARRAY(s_floatIn),						s_floatFloatRef,					s_floatIntRef,					s_floatUintRef					},
1086e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_float64In,					DE_LENGTH_OF_ARRAY(s_float64In),					s_float64FloatRef,					s_float64IntRef,				s_float64IntRef					},
1087e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{ s_floatUnsignedInt248RevIn,	DE_LENGTH_OF_ARRAY(s_floatUnsignedInt248RevIn),		s_floatUnsignedInt248RevFloatRef,	DE_NULL,						s_floatUnsignedInt248RevUintRef	},
1088e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1089e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry HaulosDE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_formatData) == TextureFormat::CHANNELTYPE_LAST);
1090e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1091e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry HaulosTextureFormat getBaseFormat (TextureFormat format)
1092e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1093e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const TextureFormat::ChannelOrder baseOrders[] = { TextureFormat::RGBA, TextureFormat::RGB, TextureFormat::DS };
1094e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1095e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	for (int baseOrderNdx = 0; baseOrderNdx < DE_LENGTH_OF_ARRAY(baseOrders); baseOrderNdx++)
1096e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1097e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const TextureFormat	curBaseFmt	(baseOrders[baseOrderNdx], format.type);
1098e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		if (isValid(curBaseFmt))
1099e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			return curBaseFmt;
1100e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1101e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1102e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return format;
1103e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1104e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1105e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry HaulosConstPixelBufferAccess getInputAccess (TextureFormat format)
1106e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1107e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const TextureFormat	inputFormat		= getBaseFormat(format);
1108e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const int			inputPixelSize	= getPixelSize(inputFormat);
1109e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const int			numPixels		= s_formatData[format.type].inputSize / inputPixelSize;
1110e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1111e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	DE_ASSERT(numPixels == 4);
1112e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	DE_ASSERT(numPixels*inputPixelSize == s_formatData[format.type].inputSize);
1113e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1114e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return ConstPixelBufferAccess(format, IVec3(numPixels, 1, 1), IVec3(inputPixelSize, 0, 0), s_formatData[format.type].input);
1115e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1116e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1117e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<typename T>
1118e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosconst deUint32* getRawReference (TextureFormat format);
1119e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1120e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<>
1121e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosconst deUint32* getRawReference<float> (TextureFormat format)
1122e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1123e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return s_formatData[format.type].floatRef;
1124e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1125e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1126e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<>
1127e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosconst deUint32* getRawReference<deInt32> (TextureFormat format)
1128e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1129e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return s_formatData[format.type].intRef;
1130e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1131e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1132e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<>
1133e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosconst deUint32* getRawReference<deUint32> (TextureFormat format)
1134e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1135e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return s_formatData[format.type].uintRef;
1136e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1137e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1138e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<typename T>
1139e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosvoid getReferenceValues (TextureFormat storageFormat, TextureFormat viewFormat, vector<Vector<T, 4> >& dst)
1140e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1141e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const int					numPixels	= getInputAccess(storageFormat).getWidth();
1142e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const deUint32* const		rawValues	= getRawReference<T>(storageFormat);
1143e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const tcu::TextureSwizzle&	swizzle		= tcu::getChannelReadSwizzle(viewFormat.order);
1144e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1145e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	dst.resize(numPixels);
1146e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1147e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	for (int pixelNdx = 0; pixelNdx < numPixels; pixelNdx++)
1148e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1149e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const deUint32*	srcPixPtr	= rawValues + pixelNdx*4;
1150e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		T*				dstPixPtr	= (T*)&dst[pixelNdx];
1151e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1152e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int c = 0; c < 4; c++)
1153e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		{
1154e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			switch (swizzle.components[c])
1155e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			{
1156e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				case tcu::TextureSwizzle::CHANNEL_0:
1157e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				case tcu::TextureSwizzle::CHANNEL_1:
1158e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				case tcu::TextureSwizzle::CHANNEL_2:
1159e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				case tcu::TextureSwizzle::CHANNEL_3:
1160e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					deMemcpy(dstPixPtr + c, srcPixPtr + (int)swizzle.components[c], sizeof(deUint32));
1161e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					break;
1162e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1163e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				case tcu::TextureSwizzle::CHANNEL_ZERO:
1164e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					dstPixPtr[c] = T(0);
1165e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					break;
1166e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1167e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				case tcu::TextureSwizzle::CHANNEL_ONE:
1168e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					dstPixPtr[c] = T(1);
1169e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					break;
1170e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1171e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				default:
1172e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					DE_FATAL("Unknown swizzle");
1173e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			}
1174e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		}
1175e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1176e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1177e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1178e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<typename T>
1179e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosbool componentEqual (T a, T b)
1180e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1181e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return a == b;
1182e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1183e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1184e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<>
1185e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosbool componentEqual<float> (float a, float b)
1186e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1187e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return (a == b) || (deFloatIsNaN(a) && deFloatIsNaN(b));
1188e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1189e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1190e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<typename T, int Size>
1191e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosbool allComponentsEqual (const Vector<T, Size>& a, const Vector<T, Size>& b)
1192e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1193e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	for (int ndx = 0; ndx < Size; ndx++)
1194e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1195e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		if (!componentEqual(a[ndx], b[ndx]))
1196e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			return false;
1197e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1198e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1199e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return true;
1200e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1201e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1202e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<typename T>
1203e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosvoid copyPixels (const ConstPixelBufferAccess& src, const PixelBufferAccess& dst)
1204e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1205e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	for (int ndx = 0; ndx < src.getWidth(); ndx++)
1206e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		dst.setPixel(src.getPixelT<T>(ndx, 0, 0), ndx, 0, 0);
1207e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1208e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1209e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosvoid copyGetSetDepth (const ConstPixelBufferAccess& src, const PixelBufferAccess& dst)
1210e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1211e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	for (int ndx = 0; ndx < src.getWidth(); ndx++)
1212e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		dst.setPixDepth(src.getPixDepth(ndx, 0, 0), ndx, 0, 0);
1213e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1214e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1215e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosvoid copyGetSetStencil (const ConstPixelBufferAccess& src, const PixelBufferAccess& dst)
1216e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1217e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	for (int ndx = 0; ndx < src.getWidth(); ndx++)
1218e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		dst.setPixStencil(src.getPixStencil(ndx, 0, 0), ndx, 0, 0);
1219e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1220e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1221e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosvoid copyPixels (const ConstPixelBufferAccess& src, const PixelBufferAccess& dst)
1222e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1223e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	switch (getTextureChannelClass(dst.getFormat().type))
1224e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1225e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		case tcu::TEXTURECHANNELCLASS_FLOATING_POINT:
1226e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT:
1227e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT:
1228e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			copyPixels<float>(src, dst);
1229e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			break;
1230e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1231e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER:
1232e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			copyPixels<deInt32>(src, dst);
1233e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			break;
1234e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1235e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER:
1236e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			copyPixels<deUint32>(src, dst);
1237e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			break;
1238e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1239e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		default:
1240e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			DE_FATAL("Unknown channel class");
1241e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1242e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1243e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1244e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosconst char* getTextureAccessTypeDescription (TextureAccessType type)
1245e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1246e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	static const char* s_desc[] =
1247e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1248e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		"floating-point",
1249e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		"signed integer",
1250e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		"unsigned integer"
1251e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	};
1252e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return de::getSizedArrayElement<tcu::TEXTUREACCESSTYPE_LAST>(s_desc, type);
1253e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1254e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1255e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<typename T>
1256e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry HaulosTextureAccessType getTextureAccessType (void);
1257e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1258e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<>
1259e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry HaulosTextureAccessType getTextureAccessType<float> (void)
1260e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1261e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return tcu::TEXTUREACCESSTYPE_FLOAT;
1262e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1263e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1264e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<>
1265e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry HaulosTextureAccessType getTextureAccessType<deInt32> (void)
1266e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1267e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return tcu::TEXTUREACCESSTYPE_SIGNED_INT;
1268e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1269e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1270e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostemplate<>
1271e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry HaulosTextureAccessType getTextureAccessType<deUint32> (void)
1272e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1273e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return tcu::TEXTUREACCESSTYPE_UNSIGNED_INT;
1274e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1275e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1276e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosstatic std::string getCaseName (TextureFormat format)
1277e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1278e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	std::ostringstream str;
1279e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1280e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	str << format.type << "_" << format.order;
1281e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1282e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return de::toLower(str.str());
1283e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1284e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1285e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosclass TextureFormatCase : public tcu::TestCase
1286e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1287e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulospublic:
1288e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	TextureFormatCase (tcu::TestContext& testCtx, TextureFormat format)
1289e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		: tcu::TestCase	(testCtx, getCaseName(format).c_str(), "")
1290e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		, m_format		(format)
1291e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1292e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		DE_ASSERT(isValid(format));
1293e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1294e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1295e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosprotected:
1296e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	template<typename T>
1297e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	void verifyRead (const ConstPixelBufferAccess& src)
1298e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1299e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const int				numPixels	= src.getWidth();
1300e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		vector<Vector<T, 4> >	res			(numPixels);
1301e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		vector<Vector<T, 4> >	ref;
1302e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1303e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog()
1304e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			<< TestLog::Message << "Verifying " << getTextureAccessTypeDescription(getTextureAccessType<T>()) << " access" << TestLog::EndMessage;
1305e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1306e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int ndx = 0; ndx < numPixels; ndx++)
1307e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			res[ndx] = src.getPixelT<T>(ndx, 0, 0);
1308e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1309e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		// \note m_format != src.getFormat() for DS formats, and we specifically need to
1310e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		//		 use the combined format as storage format to get right reference values.
1311e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		getReferenceValues<T>(m_format, src.getFormat(), ref);
1312e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1313e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int pixelNdx = 0; pixelNdx < numPixels; pixelNdx++)
1314e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		{
1315e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			if (!allComponentsEqual(res[pixelNdx], ref[pixelNdx]))
1316e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			{
1317e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				m_testCtx.getLog()
1318e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					<< TestLog::Message << "ERROR: at pixel " << pixelNdx << ": expected " << ref[pixelNdx] << ", got " << res[pixelNdx] << TestLog::EndMessage;
1319e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1320e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Comparison failed");
1321e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			}
1322e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		}
1323e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1324e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1325e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	void verifyRead (const ConstPixelBufferAccess& src)
1326e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
13270cb72493f55ed68dc610fb61117cbce4df1049a3Pyry Haulos		// \todo [2016-08-04 pyry] Overflow in float->int conversion is not defined and
13280cb72493f55ed68dc610fb61117cbce4df1049a3Pyry Haulos		//						   produces different results depending on arch.
13290cb72493f55ed68dc610fb61117cbce4df1049a3Pyry Haulos		const bool	isFloat32Or64	= src.getFormat().type == tcu::TextureFormat::FLOAT ||
13300cb72493f55ed68dc610fb61117cbce4df1049a3Pyry Haulos									  src.getFormat().type == tcu::TextureFormat::FLOAT64;
13310cb72493f55ed68dc610fb61117cbce4df1049a3Pyry Haulos
1332e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		if (isAccessValid(src.getFormat(), tcu::TEXTUREACCESSTYPE_FLOAT))
1333e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			verifyRead<float>(src);
1334e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
13350cb72493f55ed68dc610fb61117cbce4df1049a3Pyry Haulos		if (isAccessValid(src.getFormat(), tcu::TEXTUREACCESSTYPE_UNSIGNED_INT) && !isFloat32Or64)
1336e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			verifyRead<deUint32>(src);
1337e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
13380cb72493f55ed68dc610fb61117cbce4df1049a3Pyry Haulos		if (isAccessValid(src.getFormat(), tcu::TEXTUREACCESSTYPE_SIGNED_INT) && !isFloat32Or64)
1339e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			verifyRead<deInt32>(src);
1340e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1341e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1342e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	void verifyGetPixDepth (const ConstPixelBufferAccess& refAccess, const ConstPixelBufferAccess& combinedAccess)
1343e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1344e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog()
1345e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			<< TestLog::Message << "Verifying getPixDepth()" << TestLog::EndMessage;
1346e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1347e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int pixelNdx = 0; pixelNdx < refAccess.getWidth(); pixelNdx++)
1348e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		{
1349e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			const float		ref		= refAccess.getPixel(pixelNdx, 0, 0).x();
1350e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			const float		res		= combinedAccess.getPixDepth(pixelNdx, 0, 0);
1351e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1352e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			if (!componentEqual(res, ref))
1353e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			{
1354e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				m_testCtx.getLog()
1355e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					<< TestLog::Message << "ERROR: at pixel " << pixelNdx << ": expected " << ref << ", got " << res << TestLog::EndMessage;
1356e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1357e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Comparison failed");
1358e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			}
1359e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		}
1360e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1361e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1362e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	void verifyGetPixStencil (const ConstPixelBufferAccess& refAccess, const ConstPixelBufferAccess& combinedAccess)
1363e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1364e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog()
1365e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			<< TestLog::Message << "Verifying getPixStencil()" << TestLog::EndMessage;
1366e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1367e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int pixelNdx = 0; pixelNdx < refAccess.getWidth(); pixelNdx++)
1368e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		{
1369e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			const int	ref		= refAccess.getPixelInt(pixelNdx, 0, 0).x();
1370e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			const int	res		= combinedAccess.getPixStencil(pixelNdx, 0, 0);
1371e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1372e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			if (!componentEqual(res, ref))
1373e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			{
1374e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				m_testCtx.getLog()
1375e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos					<< TestLog::Message << "ERROR: at pixel " << pixelNdx << ": expected " << ref << ", got " << res << TestLog::EndMessage;
1376e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1377e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Comparison failed");
1378e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			}
1379e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		}
1380e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1381e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
13825b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	void verifyInfoQueries (void)
13835b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	{
13845b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		const tcu::TextureChannelClass	chnClass	= tcu::getTextureChannelClass(m_format.type);
13855b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		const tcu::TextureFormatInfo	fmtInfo		= tcu::getTextureFormatInfo(m_format);
13865b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
13875b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		if (tcu::isCombinedDepthStencilType(m_format.type))
13885b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos			TCU_CHECK(chnClass == tcu::TEXTURECHANNELCLASS_LAST);
13895b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		else
13905b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos			TCU_CHECK(de::inBounds(chnClass, (tcu::TextureChannelClass)0, tcu::TEXTURECHANNELCLASS_LAST));
13915b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
13925b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		DE_UNREF(fmtInfo);
13935b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos	}
13945b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
1395e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	const TextureFormat		m_format;
1396e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1397e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1398e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosclass ColorFormatCase : public TextureFormatCase
1399e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1400e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulospublic:
1401e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	ColorFormatCase (tcu::TestContext& testCtx, TextureFormat format)
1402e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		: TextureFormatCase(testCtx, format)
1403e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1404e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		DE_ASSERT(format.order != TextureFormat::D &&
1405e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				  format.order != TextureFormat::S &&
1406e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				  format.order != TextureFormat::DS);
1407e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1408e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1409e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	IterateResult iterate (void)
1410e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1411e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputAccess		= getInputAccess(m_format);
1412e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		vector<deUint8>					tmpMem			(getPixelSize(inputAccess.getFormat())*inputAccess.getWidth());
1413e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpAccess		(inputAccess.getFormat(), inputAccess.getWidth(), 1, 1, &tmpMem[0]);
1414e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1415e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
1416e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
14175b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		verifyInfoQueries();
14185b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
1419e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(inputAccess);
1420e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1421e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		// \todo [2015-10-12 pyry] Handle lossy conversion with *NORM_INT32
1422e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		if (m_format.type != TextureFormat::UNORM_INT32 && m_format.type != TextureFormat::SNORM_INT32)
1423e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		{
1424e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			m_testCtx.getLog() << TestLog::Message << "Copying with getPixel() -> setPixel()" << TestLog::EndMessage;
1425e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			copyPixels(inputAccess, tmpAccess);
1426e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			verifyRead(tmpAccess);
1427e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		}
1428e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1429e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		return STOP;
1430e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1431e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1432e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1433e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosclass DepthFormatCase : public TextureFormatCase
1434e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1435e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulospublic:
1436e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	DepthFormatCase (tcu::TestContext& testCtx, TextureFormat format)
1437e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		: TextureFormatCase(testCtx, format)
1438e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1439e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		DE_ASSERT(format.order == TextureFormat::D);
1440e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1441e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1442e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	IterateResult iterate (void)
1443e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1444e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputAccess			= getInputAccess(m_format);
1445e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		vector<deUint8>					tmpMem				(getPixelSize(inputAccess.getFormat())*inputAccess.getWidth());
1446e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpAccess			(inputAccess.getFormat(), inputAccess.getWidth(), 1, 1, &tmpMem[0]);
1447e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputDepthAccess	= getEffectiveDepthStencilAccess(inputAccess, tcu::Sampler::MODE_DEPTH);
1448e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpDepthAccess		= getEffectiveDepthStencilAccess(tmpAccess, tcu::Sampler::MODE_DEPTH);
1449e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1450e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
1451e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
14525b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		verifyInfoQueries();
14535b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
1454e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(inputDepthAccess);
1455e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1456e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Copying with getPixel() -> setPixel()" << TestLog::EndMessage;
1457e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyPixels(inputDepthAccess, tmpDepthAccess);
1458e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpDepthAccess);
1459e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1460e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyGetPixDepth(inputDepthAccess, inputAccess);
1461e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1462e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Copying both depth getPixDepth() -> setPixDepth()" << TestLog::EndMessage;
1463e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::clear(tmpDepthAccess, tcu::Vec4(0.0f));
1464e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyGetSetDepth(inputAccess, tmpAccess);
1465e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyGetPixDepth(tmpDepthAccess, tmpAccess);
1466e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1467e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		return STOP;
1468e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1469e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1470e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1471e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosclass StencilFormatCase : public TextureFormatCase
1472e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1473e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulospublic:
1474e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	StencilFormatCase (tcu::TestContext& testCtx, TextureFormat format)
1475e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		: TextureFormatCase(testCtx, format)
1476e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1477e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		DE_ASSERT(format.order == TextureFormat::S);
1478e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1479e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1480e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	IterateResult iterate (void)
1481e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1482e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputAccess			= getInputAccess(m_format);
1483e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		vector<deUint8>					tmpMem				(getPixelSize(inputAccess.getFormat())*inputAccess.getWidth());
1484e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpAccess			(inputAccess.getFormat(), inputAccess.getWidth(), 1, 1, &tmpMem[0]);
1485e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputStencilAccess	= getEffectiveDepthStencilAccess(inputAccess, tcu::Sampler::MODE_STENCIL);
1486e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpStencilAccess	= getEffectiveDepthStencilAccess(tmpAccess, tcu::Sampler::MODE_STENCIL);
1487e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1488e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
1489e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
14905b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		verifyInfoQueries();
14915b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
1492e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(inputStencilAccess);
1493e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1494e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Copying with getPixel() -> setPixel()" << TestLog::EndMessage;
1495e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyPixels(inputStencilAccess, tmpStencilAccess);
1496e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpStencilAccess);
1497e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1498e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyGetPixStencil(inputStencilAccess, inputAccess);
1499e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1500e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Copying both depth getPixStencil() -> setPixStencil()" << TestLog::EndMessage;
1501e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::clear(tmpStencilAccess, tcu::IVec4(0));
1502e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyGetSetStencil(inputAccess, tmpAccess);
1503e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyGetPixStencil(tmpStencilAccess, tmpAccess);
1504e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1505e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		return STOP;
1506e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1507e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1508e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1509e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulosclass DepthStencilFormatCase : public TextureFormatCase
1510e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1511e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulospublic:
1512e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	DepthStencilFormatCase (tcu::TestContext& testCtx, TextureFormat format)
1513e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		: TextureFormatCase(testCtx, format)
1514e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1515e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		DE_ASSERT(format.order == TextureFormat::DS);
1516e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1517e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1518e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	IterateResult iterate (void)
1519e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1520e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputAccess			= getInputAccess(m_format);
1521e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		vector<deUint8>					tmpMem				(getPixelSize(inputAccess.getFormat())*inputAccess.getWidth());
1522e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpAccess			(inputAccess.getFormat(), inputAccess.getWidth(), 1, 1, &tmpMem[0]);
1523e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputDepthAccess	= getEffectiveDepthStencilAccess(inputAccess, tcu::Sampler::MODE_DEPTH);
1524e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const ConstPixelBufferAccess	inputStencilAccess	= getEffectiveDepthStencilAccess(inputAccess, tcu::Sampler::MODE_STENCIL);
1525e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpDepthAccess		= getEffectiveDepthStencilAccess(tmpAccess, tcu::Sampler::MODE_DEPTH);
1526e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		const PixelBufferAccess			tmpStencilAccess	= getEffectiveDepthStencilAccess(tmpAccess, tcu::Sampler::MODE_STENCIL);
1527e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1528e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
1529e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
15305b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos		verifyInfoQueries();
15315b2b45177edf5062ce3a76a885e60e3fb5044002Pyry Haulos
1532e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(inputDepthAccess);
1533e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(inputStencilAccess);
1534e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1535e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyGetPixDepth(inputDepthAccess, inputAccess);
1536e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyGetPixStencil(inputStencilAccess, inputAccess);
1537e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1538e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Copying both depth and stencil with getPixel() -> setPixel()" << TestLog::EndMessage;
1539e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyPixels(inputDepthAccess, tmpDepthAccess);
1540e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyPixels(inputStencilAccess, tmpStencilAccess);
1541e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpDepthAccess);
1542e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpStencilAccess);
1543e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1544e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Copying both depth and stencil with getPix{Depth,Stencil}() -> setPix{Depth,Stencil}()" << TestLog::EndMessage;
1545e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyGetSetDepth(inputDepthAccess, tmpDepthAccess);
1546e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		copyGetSetStencil(inputStencilAccess, tmpStencilAccess);
1547e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpDepthAccess);
1548e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpStencilAccess);
1549e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1550e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Verifying that clearing depth component with clearDepth() doesn't affect stencil" << TestLog::EndMessage;
1551e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::copy(tmpAccess, inputAccess);
1552e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::clearDepth(tmpAccess, 0.0f);
1553e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpStencilAccess);
1554e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1555e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Verifying that clearing stencil component with clearStencil() doesn't affect depth" << TestLog::EndMessage;
1556e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::copy(tmpAccess, inputAccess);
1557e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::clearStencil(tmpAccess, 0);
1558e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpDepthAccess);
1559e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1560e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Verifying that clearing depth component with setPixDepth() doesn't affect stencil" << TestLog::EndMessage;
1561e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::copy(tmpAccess, inputAccess);
1562e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1563e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int ndx = 0; ndx < tmpAccess.getWidth(); ndx++)
1564e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			tmpAccess.setPixDepth(0.0f, ndx, 0, 0);
1565e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1566e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpStencilAccess);
1567e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1568e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		m_testCtx.getLog() << TestLog::Message << "Verifying that clearing stencil component with setPixStencil() doesn't affect depth" << TestLog::EndMessage;
1569e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		tcu::copy(tmpAccess, inputAccess);
1570e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1571e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int ndx = 0; ndx < tmpAccess.getWidth(); ndx++)
1572e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			tmpAccess.setPixStencil(0, ndx, 0, 0);
1573e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1574e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		verifyRead(tmpDepthAccess);
1575e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1576e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		return STOP;
1577e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1578e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos};
1579e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1580e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos} // anonymous
1581e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1582e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulostcu::TestCaseGroup* createTextureFormatTests (tcu::TestContext& testCtx)
1583e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos{
1584e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	de::MovePtr<tcu::TestCaseGroup>	group	(new tcu::TestCaseGroup(testCtx, "texture_format", "Texture format tests"));
1585e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1586e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	for (int channelType = 0; channelType < TextureFormat::CHANNELTYPE_LAST; channelType++)
1587e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	{
1588e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		for (int channelOrder = 0; channelOrder < TextureFormat::CHANNELORDER_LAST; channelOrder++)
1589e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		{
1590e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			const TextureFormat		format		((TextureFormat::ChannelOrder)channelOrder, (TextureFormat::ChannelType)channelType);
1591e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1592e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			if (!isValid(format))
1593e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				continue;
1594e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1595e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			if (tcu::isSRGB(format))
1596e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				continue; // \todo [2015-10-12 pyry] Tests for sRGB formats (need thresholds)
1597e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1598e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			if (format.order == TextureFormat::DS)
1599e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				group->addChild(new DepthStencilFormatCase(testCtx, format));
1600e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			else if (format.order == TextureFormat::D)
1601e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				group->addChild(new DepthFormatCase(testCtx, format));
1602e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			else if (format.order == TextureFormat::S)
1603e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				group->addChild(new StencilFormatCase(testCtx, format));
1604e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos			else
1605e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos				group->addChild(new ColorFormatCase(testCtx, format));
1606e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos		}
1607e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	}
1608e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1609e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos	return group.release();
1610e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos}
1611e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos
1612e2145884f87cdca749a754abfd246cdfe01ea2c1Pyry Haulos} // dit
1613