Fix issues in pipeline.timestamp.transfer_tests am: 0f672f2a20
[platform/upstream/VK-GL-CTS.git] / framework / randomshaders / rsgSamplers.hpp
1 #ifndef _RSGSAMPLERS_HPP
2 #define _RSGSAMPLERS_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program Random Shader Generator
5  * ----------------------------------------------------
6  *
7  * Copyright 2014 The Android Open Source Project
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  *//*!
22  * \file
23  * \brief Samplers.
24  *//*--------------------------------------------------------------------*/
25
26 #include "rsgDefs.hpp"
27 #include "tcuTexture.hpp"
28
29 #include <map>
30
31 namespace rsg
32 {
33
34 class Sampler2D
35 {
36 public:
37         Sampler2D (void)
38                 : m_texture     (DE_NULL)
39                 , m_sampler     ()
40         {
41         }
42
43         Sampler2D (const tcu::Texture2D* texture, const tcu::Sampler& sampler)
44                 : m_texture     (texture)
45                 , m_sampler     (sampler)
46         {
47         }
48
49         inline tcu::Vec4 sample (float s, float t, float lod) const
50         {
51                 return m_texture->sample(m_sampler, s, t, lod);
52         }
53
54 private:
55         const tcu::Texture2D*           m_texture;
56         tcu::Sampler                            m_sampler;
57 };
58
59 class SamplerCube
60 {
61 public:
62         SamplerCube (void)
63                 : m_texture     (DE_NULL)
64                 , m_sampler     ()
65         {
66         }
67
68         SamplerCube (const tcu::TextureCube* texture, const tcu::Sampler& sampler)
69                 : m_texture     (texture)
70                 , m_sampler     (sampler)
71         {
72         }
73
74         inline tcu::Vec4 sample (float s, float t, float r, float lod) const
75         {
76                 return m_texture->sample(m_sampler, s, t, r, lod);
77         }
78
79 private:
80         const tcu::TextureCube*         m_texture;
81         tcu::Sampler                            m_sampler;
82 };
83
84 typedef std::map<int, Sampler2D>        Sampler2DMap;
85 typedef std::map<int, SamplerCube>      SamplerCubeMap;
86
87 } // rsg
88
89 #endif // _RSGSAMPLERS_HPP