13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL ES 3.0 Module 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ------------------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief GLES3 Scissor tests 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "es3fScissorTests.hpp" 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glsScissorTests.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "sglrGLContext.hpp" 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "sglrReferenceContext.hpp" 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "sglrContextUtil.hpp" 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuVector.hpp" 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuRenderTarget.hpp" 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuImageCompare.hpp" 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluStrUtil.hpp" 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluDrawUtil.hpp" 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwEnums.hpp" 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "deDefs.hpp" 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace gles3 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace Functional 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 493c827367444ee418f129b2c238299f49d3264554Jarkko PoyryScissorTests::ScissorTests (Context& context): 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TestCaseGroup (context, "scissor", "Scissor Tests") 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 543c827367444ee418f129b2c238299f49d3264554Jarkko PoyryScissorTests::~ScissorTests (void) 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid ScissorTests::init (void) 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::Vec4; 618852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry using namespace gls::Functional::ScissorTestInternal; 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry tcu::TestContext& tc = m_context.getTestContext(); 648852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry glu::RenderContext& rc = m_context.getRenderContext(); 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 668852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry const struct 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 688852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry const char* name; 698852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry const char* desc; 708852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry const tcu::Vec4 scissor; 718852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry const tcu::Vec4 render; 728852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry const PrimitiveType type; 738852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry const int primitives; 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } cases[] = 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 768852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "contained_quads", "Triangles fully inside scissor area (single call)", Vec4(0.1f, 0.1f, 0.8f, 0.8f), Vec4(0.2f, 0.2f, 0.6f, 0.6f), TRIANGLE, 30 }, 778852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "partial_quads", "Triangles partially inside scissor area (single call)", Vec4(0.3f, 0.3f, 0.4f, 0.4f), Vec4(0.2f, 0.2f, 0.6f, 0.6f), TRIANGLE, 30 }, 788852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "contained_tri", "Triangle fully inside scissor area", Vec4(0.1f, 0.1f, 0.8f, 0.8f), Vec4(0.2f, 0.2f, 0.6f, 0.6f), TRIANGLE, 1 }, 798852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "enclosing_tri", "Triangle fully covering scissor area", Vec4(0.4f, 0.4f, 0.2f, 0.2f), Vec4(0.2f, 0.2f, 0.6f, 0.6f), TRIANGLE, 1 }, 808852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "partial_tri", "Triangle partially inside scissor area", Vec4(0.4f, 0.4f, 0.6f, 0.6f), Vec4(0.0f, 0.0f, 1.0f, 1.0f), TRIANGLE, 1 }, 818852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "outside_render_tri", "Triangle with scissor area outside render target", Vec4(1.4f, 1.4f, 0.6f, 0.6f), Vec4(0.0f, 0.0f, 0.6f, 0.6f), TRIANGLE, 1 }, 828852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "partial_lines", "Linse partially inside scissor area", Vec4(0.4f, 0.4f, 0.6f, 0.6f), Vec4(0.0f, 0.0f, 1.0f, 1.0f), LINE, 30 }, 838852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "contained_line", "Line fully inside scissor area", Vec4(0.1f, 0.1f, 0.8f, 0.8f), Vec4(0.2f, 0.2f, 0.6f, 0.6f), LINE, 1 }, 848852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "partial_line", "Line partially inside scissor area", Vec4(0.4f, 0.4f, 0.6f, 0.6f), Vec4(0.0f, 0.0f, 1.0f, 1.0f), LINE, 1 }, 858852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "outside_render_line", "Line with scissor area outside render target", Vec4(1.4f, 1.4f, 0.6f, 0.6f), Vec4(0.0f, 0.0f, 0.6f, 0.6f), LINE, 1 }, 868852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "contained_point", "Point fully inside scissor area", Vec4(0.1f, 0.1f, 0.8f, 0.8f), Vec4(0.5f, 0.5f, 0.0f, 0.0f), POINT, 1 }, 878852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "partial_points", "Points partially inside scissor area", Vec4(0.4f, 0.4f, 0.6f, 0.6f), Vec4(0.0f, 0.0f, 1.0f, 1.0f), POINT, 30 }, 888852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "outside_point", "Point fully outside scissor area", Vec4(0.4f, 0.4f, 0.6f, 0.6f), Vec4(0.0f, 0.0f, 0.0f, 0.0f), POINT, 1 }, 898852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry { "outside_render_point", "Point with scissor area outside render target", Vec4(1.4f, 1.4f, 0.6f, 0.6f), Vec4(0.5f, 0.5f, 0.0f, 0.0f), POINT, 1 } 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (int caseNdx = 0; caseNdx < DE_LENGTH_OF_ARRAY(cases); caseNdx++) 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 948852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createPrimitiveTest(tc, 958852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry rc, 968852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry cases[caseNdx].name, 978852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry cases[caseNdx].desc, 988852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry cases[caseNdx].scissor, 998852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry cases[caseNdx].render, 1008852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry cases[caseNdx].type, 1018852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry cases[caseNdx].primitives)); 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1048852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createClearTest(tc, rc, "clear_depth", "Depth buffer clear", Vec4(0.1f, 0.1f, 0.8f, 0.8f), GL_DEPTH_BUFFER_BIT)); 1058852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createClearTest(tc, rc, "clear_stencil", "Stencil buffer clear", Vec4(0.1f, 0.1f, 0.8f, 0.8f), GL_STENCIL_BUFFER_BIT)); 1068852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createClearTest(tc, rc, "clear_color", "Color buffer clear", Vec4(0.1f, 0.1f, 0.8f, 0.8f), GL_COLOR_BUFFER_BIT)); 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1088852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferClearTest(tc, rc, "clear_fixed_buffer", "Fixed point color clear", CLEAR_COLOR_FIXED)); 1098852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferClearTest(tc, rc, "clear_int_buffer", "Integer color clear", CLEAR_COLOR_INT)); 1108852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferClearTest(tc, rc, "clear_uint_buffer", "Unsigned integer buffer clear", CLEAR_COLOR_UINT)); 1118852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferClearTest(tc, rc, "clear_depth_buffer", "Depth buffer clear", CLEAR_DEPTH)); 1128852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferClearTest(tc, rc, "clear_stencil_buffer", "Stencil buffer clear", CLEAR_STENCIL)); 1138852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferClearTest(tc, rc, "clear_depth_stencil_buffer", "Fixed point color buffer clear", CLEAR_DEPTH_STENCIL)); 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1158852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferBlitTest(tc, rc, "framebuffer_blit_center", "Blit to default framebuffer, scissor away edges", Vec4(0.1f, 0.1f, 0.8f, 0.8f))); 1168852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferBlitTest(tc, rc, "framebuffer_blit_corner", "Blit to default framebuffer, scissor all but a corner", Vec4(0.6f, 0.6f, 0.5f, 0.5f))); 1178852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry addChild(createFramebufferBlitTest(tc, rc, "framebuffer_blit_none", "Blit to default framebuffer, scissor area outside screen", Vec4(1.6f, 0.6f, 0.5f, 0.5f))); 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // Functional 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // gles3 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp 123