You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
4.5 KiB
162 lines
4.5 KiB
#ifndef _GLSSAMPLEROBJECTTEST_HPP |
|
#define _GLSSAMPLEROBJECTTEST_HPP |
|
/*------------------------------------------------------------------------- |
|
* drawElements Quality Program OpenGL ES 3.0 Module |
|
* ------------------------------------------------- |
|
* |
|
* Copyright 2014 The Android Open Source Project |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
* |
|
*//*! |
|
* \file |
|
* \brief Sampler object testcases. |
|
*//*--------------------------------------------------------------------*/ |
|
|
|
#include "tcuTestCase.hpp" |
|
#include "tcuTestLog.hpp" |
|
#include "deRandom.hpp" |
|
#include "tcuSurface.hpp" |
|
#include "gluRenderContext.hpp" |
|
#include "glw.h" |
|
#include "glwEnums.hpp" |
|
#include "gluShaderProgram.hpp" |
|
|
|
namespace deqp |
|
{ |
|
namespace gls |
|
{ |
|
|
|
class TextureSamplerTest : public tcu::TestCase |
|
{ |
|
public: |
|
struct SamplingState |
|
{ |
|
GLenum minFilter; |
|
GLenum magFilter; |
|
GLenum wrapT; |
|
GLenum wrapS; |
|
GLenum wrapR; |
|
GLfloat minLod; |
|
GLfloat maxLod; |
|
}; |
|
|
|
struct TestSpec |
|
{ |
|
const char* name; |
|
const char* desc; |
|
GLenum target; |
|
SamplingState textureState; |
|
SamplingState samplerState; |
|
}; |
|
|
|
TextureSamplerTest (tcu::TestContext& testCtx, glu::RenderContext& renderCtx, const TestSpec& spec); |
|
~TextureSamplerTest (void); |
|
|
|
void init (void); |
|
void deinit (void); |
|
|
|
IterateResult iterate (void); |
|
|
|
private: |
|
void renderReferences (tcu::Surface& textureRef, tcu::Surface& samplerRef, int x, int y); |
|
void renderResults (tcu::Surface& textureResult, tcu::Surface& samplerResult, int x, int y); |
|
|
|
void render (void); |
|
|
|
static void setTextureState (const glw::Functions& gl, GLenum target, SamplingState state); |
|
static void setSamplerState (const glw::Functions& gl, SamplingState state, GLuint sampler); |
|
|
|
static GLuint createTexture2D (const glw::Functions& gl); |
|
static GLuint createTexture3D (const glw::Functions& gl); |
|
static GLuint createTextureCube (const glw::Functions& gl); |
|
static GLuint createTexture (const glw::Functions& gl, GLenum target); |
|
|
|
static const char* selectVertexShader (GLenum target); |
|
static const char* selectFragmentShader (GLenum target); |
|
|
|
glu::RenderContext& m_renderCtx; |
|
glu::ShaderProgram* m_program; |
|
|
|
GLenum m_target; |
|
SamplingState m_textureState; |
|
SamplingState m_samplerState; |
|
|
|
de::Random m_random; |
|
}; |
|
|
|
class MultiTextureSamplerTest : public tcu::TestCase |
|
{ |
|
public: |
|
struct SamplingState |
|
{ |
|
GLenum minFilter; |
|
GLenum magFilter; |
|
GLenum wrapT; |
|
GLenum wrapS; |
|
GLenum wrapR; |
|
GLfloat minLod; |
|
GLfloat maxLod; |
|
}; |
|
|
|
struct TestSpec |
|
{ |
|
const char* name; |
|
const char* desc; |
|
GLenum target; |
|
SamplingState textureState1; |
|
SamplingState textureState2; |
|
SamplingState samplerState; |
|
}; |
|
|
|
MultiTextureSamplerTest (tcu::TestContext& testCtx, glu::RenderContext& renderCtx, const TestSpec& spec); |
|
~MultiTextureSamplerTest (void); |
|
|
|
void init (void); |
|
void deinit (void); |
|
|
|
IterateResult iterate (void); |
|
|
|
private: |
|
void renderReferences (tcu::Surface& textureRef, tcu::Surface& samplerRef, int x, int y); |
|
void renderResults (tcu::Surface& textureResult, tcu::Surface& samplerResult, int x, int y); |
|
|
|
void render (void); |
|
|
|
static void setTextureState (const glw::Functions& gl, GLenum target, SamplingState state); |
|
static void setSamplerState (const glw::Functions& gl, SamplingState state, GLuint sampler); |
|
|
|
static GLuint createTexture2D (const glw::Functions& gl, int id); |
|
static GLuint createTexture3D (const glw::Functions& gl, int id); |
|
static GLuint createTextureCube (const glw::Functions& gl, int id); |
|
static GLuint createTexture (const glw::Functions& gl, GLenum target, int id); |
|
|
|
static const char* selectVertexShader (GLenum target); |
|
static const char* selectFragmentShader (GLenum target); |
|
|
|
glu::RenderContext& m_renderCtx; |
|
glu::ShaderProgram* m_program; |
|
|
|
GLenum m_target; |
|
SamplingState m_textureState1; |
|
SamplingState m_textureState2; |
|
SamplingState m_samplerState; |
|
|
|
de::Random m_random; |
|
}; |
|
|
|
|
|
} // gls |
|
} // deqp |
|
|
|
#endif // _GLSSAMPLEROBJECTTEST_HPP
|
|
|