blob: 4f172a7c9ada7bcb1663cae0349e5b8754ac4cfa [file] [log] [blame]
#ifndef _ES31CTEXTURESTORAGEMULTISAMPLEDEPENDENCIESTESTS_HPP
#define _ES31CTEXTURESTORAGEMULTISAMPLEDEPENDENCIESTESTS_HPP
/*-------------------------------------------------------------------------
* OpenGL Conformance Test Suite
* -----------------------------
*
* Copyright (c) 2014-2016 The Khronos Group Inc.
*
* 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
*/ /*-------------------------------------------------------------------*/
/**
*/ /*!
* \file es31cTextureStorageMultisampleDependenciesTests.hpp
* \brief Declares test classes for testing dependencies of multisample
* textures with other parts of the API (ES3.1 only)
*/ /*-------------------------------------------------------------------*/
#include "es31cTextureStorageMultisampleTests.hpp"
namespace glcts
{
/** Test case: FBOs with multisample texture attachments, whose amount of samples differs
* between attachments, should be considered incomplete (GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE)
*/
class MultisampleTextureDependenciesFBOIncompleteness1Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesFBOIncompleteness1Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id_multisample_2d_array;
glw::GLuint to_ids_multisample_2d[2];
};
/** Test case: FBOs with multisample texture and normal 2D texture attachments should be
* considered incomplete (GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE)
*/
class MultisampleTextureDependenciesFBOIncompleteness2Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesFBOIncompleteness2Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id_2d;
glw::GLuint to_id_multisample_2d;
glw::GLuint to_id_multisample_2d_array;
};
/** Test case: FBOs with multisample texture attachments of different "fixed sample
* location" settings should be considered incomplete
* (GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE)
*/
class MultisampleTextureDependenciesFBOIncompleteness3Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesFBOIncompleteness3Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id_2d_multisample_color_1;
glw::GLuint to_id_2d_multisample_color_2;
glw::GLuint to_id_2d_multisample_depth;
glw::GLuint to_id_2d_multisample_depth_stencil;
};
/** Test case: FBOs with multisample texture attachments of different "fixed sample
* location" settings and with multisampled renderbuffers (of the same amount
* of samples) should be considered incomplete
* (GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE)
*/
class MultisampleTextureDependenciesFBOIncompleteness4Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesFBOIncompleteness4Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint rbo_id;
glw::GLuint to_id_2d_multisample_array_color;
glw::GLuint to_id_2d_multisample_color;
};
/** Test case: FBOs with renderbuffer and multisample texture attachments, where amount
* of samples used for multisample texture attachments differs from the
* amount of samples used for renderbuffer attachments, should be considered
* incomplete (GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE)
*/
class MultisampleTextureDependenciesFBOIncompleteness5Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesFBOIncompleteness5Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint rbo_id;
glw::GLuint to_id_multisample_2d;
glw::GLuint to_id_multisample_2d_array;
};
/** Test case: GL_INVALID_OPERATION error is reported if 2D or cube-map texture target is
* used with a multisample 2D texture for a glFramebufferTexture2D() call.
*/
class MultisampleTextureDependenciesInvalidFramebufferTexture2DCalls1Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesInvalidFramebufferTexture2DCalls1Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id;
};
/** Test case: GL_INVALID_VALUE error is reported if a glFramebufferTexture2D() call is
* made with level not equal to zero for a 2D multisample texture.
*/
class MultisampleTextureDependenciesInvalidFramebufferTexture2DCalls2Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesInvalidFramebufferTexture2DCalls2Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id;
};
/** Test case: GL_INVALID_OPERATION error is reported if a multisample 2D texture
* is used for a glFramebufferTextureLayer() call.
*/
class MultisampleTextureDependenciesInvalidFramebufferTextureLayerCalls1Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesInvalidFramebufferTextureLayerCalls1Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id;
};
/** Test case: GL_INVALID_VALUE error is reported if a glFramebufferTextureLayer() call
* is made with level exceeding amount of layers defined for a 2D multisample
* array texture.
*/
class MultisampleTextureDependenciesInvalidFramebufferTextureLayerCalls2Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesInvalidFramebufferTextureLayerCalls2Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id;
};
/** Test case: GL_INVALID_OPERATION error is reported for
* glRenderbufferStorageMultisample() calls, for which samples argument
* exceeds MAX_SAMPLES for non-integer internalformats.
*/
class MultisampleTextureDependenciesInvalidRenderbufferStorageMultisampleCalls1Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesInvalidRenderbufferStorageMultisampleCalls1Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint rbo_id;
};
/** Test case: GL_INVALID_OPERATION error is reported for
* glRenderbufferStorageMultisample() calls, for which samples argument
* exceeds MAX_INTEGER_SAMPLES for integer internalformats.
*/
class MultisampleTextureDependenciesInvalidRenderbufferStorageMultisampleCalls2Test : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesInvalidRenderbufferStorageMultisampleCalls2Test(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint rbo_id;
};
/** Test case: No error is reported by glFramebufferTexture2D() calls, for
* which GL_TEXTURE_2D_MULTISAMPLE texture target is used.
*/
class MultisampleTextureDependenciesNoErrorGeneratedForValidFramebufferTexture2DCallsTest : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesNoErrorGeneratedForValidFramebufferTexture2DCallsTest(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint fbo_id;
glw::GLuint to_id;
};
/** Test case: No error is reported for glRenderbufferStorageMultisample() calls, for
* which samples argument is in 0 < samples <= GL_MAX_SAMPLES range for
* non-integer internalformats, and within 0 < samples <= GL_MAX_INTEGER_SAMPLES
* for integer internalformats.
*/
class MultisampleTextureDependenciesNoErrorGeneratedForValidRenderbufferStorageMultisampleCallsTest
: public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesNoErrorGeneratedForValidRenderbufferStorageMultisampleCallsTest(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void initInternals();
/* Private variables */
glw::GLuint rbo_id;
};
/** Test case: When used against multisample texture targets, glTexParameter*() should not generate
* any error if GL_TEXTURE_BASE_LEVEL is set to 0. Using any other value should generate
* GL_INVALID_OPERATION.
* Modifying sampler states should generate GL_INVALID_ENUM.
*/
class MultisampleTextureDependenciesTexParameterTest : public glcts::TestCase
{
public:
/* Public methods */
MultisampleTextureDependenciesTexParameterTest(Context& context);
virtual void deinit();
virtual tcu::TestNode::IterateResult iterate();
private:
/* Private methods */
void checkAllTexParameterInvocations(glw::GLenum expected_error_code, glw::GLint value, glw::GLenum pname,
glw::GLenum texture_target);
/* Private variables */
glw::GLuint to_id_multisample_2d;
glw::GLuint to_id_multisample_2d_array;
};
} /* glcts namespace */
#endif // _ES31CTEXTURESTORAGEMULTISAMPLEDEPENDENCIESTESTS_HPP