From patchwork Fri Aug 15 06:56:28 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: 'Timothy Arceri' via Patchwork Forward X-Patchwork-Id: 35424 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-qg0-f71.google.com (mail-qg0-f71.google.com [209.85.192.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 9F27A20523 for ; Fri, 15 Aug 2014 06:56:52 +0000 (UTC) Received: by mail-qg0-f71.google.com with SMTP id f51sf5819260qge.10 for ; Thu, 14 Aug 2014 23:56:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:delivered-to:from:to:date :message-id:in-reply-to:references:subject:precedence:list-id :list-unsubscribe:list-archive:list-post:list-help:list-subscribe :mime-version:errors-to:sender:x-original-sender :x-original-authentication-results:mailing-list:reply-to :content-type:content-transfer-encoding; bh=RBP3Vp4xWjsLQcPzGnyHEBTCWHRqa0V7IM+2HmduLD4=; b=a4VZeEE7h4yhzxB6bew8J9PNM1WEne04cz1i58NJEWkeRlqxCmOO9d2N/83t5d9Oty l777Xj58DtBPkCEhkYmRnBzfNV79WqYhWcpzrXne+ZJUCsa5hYl9XCc9QrCAXc+OmV2p 6Vxo49fs+Y985I1765kUaNf2AYLQgSlUMHFoVQxK+pLKbqEL/UXLJCd1tQYKcgAD6YPm k9v04CJHSEEjToTtiHDbGnCj7czXipeRW/GJg51g1rQ3r2o1MpGvG2yN6eXoJYMPBLeo zu11b5JQulySA6h6uTGGQUEeB6t4Y5UspV5M/eIvQI+LpO9XgSEBRIxIUO2xVpfjusbp xdiA== X-Gm-Message-State: ALoCoQltB4hrW8cQVd5MtgKNS+oEcClgb/hGMNEVzYQmb8+sqIVi9DSWtxSQwJipap6Emyw7eifj X-Received: by 10.236.112.234 with SMTP id y70mr5121284yhg.32.1408085812486; Thu, 14 Aug 2014 23:56:52 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.106.136 with SMTP id e8ls177518qgf.36.gmail; Thu, 14 Aug 2014 23:56:52 -0700 (PDT) X-Received: by 10.229.191.2 with SMTP id dk2mr24844965qcb.8.1408085812424; Thu, 14 Aug 2014 23:56:52 -0700 (PDT) Received: from mail-vc0-x236.google.com (mail-vc0-x236.google.com [2607:f8b0:400c:c03::236]) by mx.google.com with ESMTPS id d14si10723648qaa.105.2014.08.14.23.56.52 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 14 Aug 2014 23:56:52 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 2607:f8b0:400c:c03::236 as permitted sender) client-ip=2607:f8b0:400c:c03::236; Received: by mail-vc0-f182.google.com with SMTP id hy4so2539179vcb.41 for ; Thu, 14 Aug 2014 23:56:52 -0700 (PDT) X-Received: by 10.220.114.5 with SMTP id c5mr8847547vcq.28.1408085812178; Thu, 14 Aug 2014 23:56:52 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.221.37.5 with SMTP id tc5csp91636vcb; Thu, 14 Aug 2014 23:56:51 -0700 (PDT) X-Received: by 10.66.159.8 with SMTP id wy8mr9714505pab.17.1408085810912; Thu, 14 Aug 2014 23:56:50 -0700 (PDT) Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177]) by mx.google.com with ESMTP id gw11si6959197pbd.78.2014.08.14.23.56.46 for ; Thu, 14 Aug 2014 23:56:47 -0700 (PDT) Received-SPF: none (google.com: piglit-bounces@lists.freedesktop.org does not designate permitted sender hosts) client-ip=131.252.210.177; Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7BD2B6E2F2; Thu, 14 Aug 2014 23:56:46 -0700 (PDT) X-Original-To: piglit@lists.freedesktop.org Delivered-To: piglit@lists.freedesktop.org Received: from nm18-vm3.bullet.mail.gq1.yahoo.com (nm18-vm3.bullet.mail.gq1.yahoo.com [98.136.217.218]) by gabe.freedesktop.org (Postfix) with ESMTP id 91B7A6E29A for ; Thu, 14 Aug 2014 23:56:44 -0700 (PDT) Received: from [98.137.12.191] by nm18.bullet.mail.gq1.yahoo.com with NNFMP; 15 Aug 2014 06:56:44 -0000 Received: from [98.136.164.76] by tm12.bullet.mail.gq1.yahoo.com with NNFMP; 15 Aug 2014 06:56:44 -0000 Received: from [127.0.0.1] by smtp238.mail.gq1.yahoo.com with NNFMP; 15 Aug 2014 06:56:44 -0000 X-Yahoo-Newman-Id: 126063.63684.bm@smtp238.mail.gq1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: E1PsDPoVM1nCSmkgD4cpAARERG02NwhH1cFZPi7pAXVfvkl xgsVPcTT8DEow_orKGsdgISqQz8nh3iOYNya7tv95LQ7pvh9DyYXFvdm2bUM Fdv8l6x.GDnJ_HBURi5YunaRPGh2janW0YF3qkoXQeSfyajQQ7jauOSSdpBT E_nTAyC10ZSYILQxXcv3Un5k0jwqnc_u8uOpGj14dGX16kSFUxbe3Ft2d3vd SC1TTFXdDSk7Vg_C84NAm25i0RC8S8kZuX9YcxMuTFyVqsD8nDms96_qw.qa rAck9rAMC3WBTRzwZUBGc3AUGXMIALJi8wBy8jdXdihQcZlsrmeLwmVCKpef .lpxhb3TQFYy0V.X7To7NZpquDMq4Hsa4bV82d6SxVZ.VVc2hLgvf2rsjlDL In7H6c6mKPe3bHYJqZQm40WnrQRQ37Xm_Feq0UfR.Vazhf6KLOTMU8KHpGrv Ibf9SQ9dbwfP1RMojz77xa6Ed.e8zluDeA1eKVvlTRrS81brBAn2Ei21mjIK qaB2CcL4qEyHDI6jUbENvgjYiMvKRr8jESvxkZwcIe_dcf9C3TIly09cdmFT whn6LRxY- X-Yahoo-SMTP: 9BNlx.aswBAkr0D8mG_whiOP1dyU From: "'Timothy Arceri' via Patchwork Forward" To: piglit@lists.freedesktop.org Date: Fri, 15 Aug 2014 16:56:28 +1000 Message-Id: <1408085788-32283-1-git-send-email-t_arceri@yahoo.com.au> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1408053444-10012-1-git-send-email-t_arceri@yahoo.com.au> References: <1408053444-10012-1-git-send-email-t_arceri@yahoo.com.au> Subject: [Piglit] [PATCH V3] gl-4.4: Test GL_MAX_VERTEX_ATTRIB_STRIDE X-BeenThere: piglit@lists.freedesktop.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , MIME-Version: 1.0 Errors-To: piglit-bounces@lists.freedesktop.org Sender: "Piglit" X-Original-Sender: patch@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 2607:f8b0:400c:c03::236 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org; dkim=neutral (body hash did not verify) header.i=@; dmarc=fail (p=NONE dis=NONE) header.from=yahoo.com.au Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 X-Original-From: Timothy Arceri Reply-To: Timothy Arceri V3: add positive version of each test V2: changed to -> too Signed-off-by: Timothy Arceri Reviewed-by: Chris Forbes --- tests/all.py | 1 + tests/spec/CMakeLists.txt | 1 + tests/spec/gl-4.4/CMakeLists.gl.txt | 14 +++ tests/spec/gl-4.4/CMakeLists.txt | 1 + tests/spec/gl-4.4/gl_max_vertex_attrib_stride.c | 161 ++++++++++++++++++++++++ 5 files changed, 178 insertions(+) create mode 100644 tests/spec/gl-4.4/CMakeLists.gl.txt create mode 100644 tests/spec/gl-4.4/CMakeLists.txt create mode 100644 tests/spec/gl-4.4/gl_max_vertex_attrib_stride.c diff --git a/tests/all.py b/tests/all.py index 4541654..858bec6 100644 --- a/tests/all.py +++ b/tests/all.py @@ -976,6 +976,7 @@ spec['!OpenGL 3.3/required-texture-attachment-formats'] = concurrent_test('gl-3. spec['!OpenGL 4.2/required-renderbuffer-attachment-formats'] = concurrent_test('gl-3.0-required-renderbuffer-attachment-formats 42') spec['!OpenGL 4.2/required-sized-texture-formats'] = concurrent_test('gl-3.0-required-sized-texture-formats 42') spec['!OpenGL 4.2/required-texture-attachment-formats'] = concurrent_test('gl-3.0-required-texture-attachment-formats 42') +spec['!OpenGL 4.4/gl-max-vertex-attrib-stride'] = concurrent_test('gl-4.4-max_vertex_attrib_stride') # Group spec/glsl-es-1.00 spec['glsl-es-1.00'] = {} diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt index 5148412..a73c4cb 100644 --- a/tests/spec/CMakeLists.txt +++ b/tests/spec/CMakeLists.txt @@ -93,6 +93,7 @@ add_subdirectory (gl-3.0) add_subdirectory (gl-3.1) add_subdirectory (gl-3.2) add_subdirectory (gl-3.3) +add_subdirectory (gl-4.4) add_subdirectory (gles-2.0) add_subdirectory (gles-3.0) add_subdirectory (glx_arb_create_context) diff --git a/tests/spec/gl-4.4/CMakeLists.gl.txt b/tests/spec/gl-4.4/CMakeLists.gl.txt new file mode 100644 index 0000000..3287f85 --- /dev/null +++ b/tests/spec/gl-4.4/CMakeLists.gl.txt @@ -0,0 +1,14 @@ +include_directories( + ${GLEXT_INCLUDE_DIR} + ${OPENGL_INCLUDE_PATH} +) + +link_libraries ( + piglitutil_${piglit_target_api} + ${OPENGL_gl_LIBRARY} + ${OPENGL_glu_LIBRARY} +) + +piglit_add_executable (gl-4.4-max_vertex_attrib_stride gl_max_vertex_attrib_stride.c) + +# vim: ft=cmake: diff --git a/tests/spec/gl-4.4/CMakeLists.txt b/tests/spec/gl-4.4/CMakeLists.txt new file mode 100644 index 0000000..4a012b9 --- /dev/null +++ b/tests/spec/gl-4.4/CMakeLists.txt @@ -0,0 +1 @@ +piglit_include_target_api() \ No newline at end of file diff --git a/tests/spec/gl-4.4/gl_max_vertex_attrib_stride.c b/tests/spec/gl-4.4/gl_max_vertex_attrib_stride.c new file mode 100644 index 0000000..85113c8 --- /dev/null +++ b/tests/spec/gl-4.4/gl_max_vertex_attrib_stride.c @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2014 Timothy Arceri + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL AUTHORS AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "piglit-util-gl.h" +#include "minmax-test.h" + +PIGLIT_GL_TEST_CONFIG_BEGIN + + config.supports_gl_core_version = 44; + +PIGLIT_GL_TEST_CONFIG_END + +static bool check_stride(char *function, bool check_valid) +{ + bool pass = true; + + if (check_valid) { + if (!piglit_check_gl_error(GL_NO_ERROR)) { + fprintf(stderr, "error when testing valid " + "MAX_VERTEX_ATTRIB_STRIDE with %s\n", + function); + pass = false; + } + } else { + if (!piglit_check_gl_error(GL_INVALID_VALUE)) { + fprintf(stderr, "GL_INVALID_VALUE should be generated when setting" + " %s stride too value large than MAX_VERTEX_ATTRIB_STRIDE\n", + function); + pass = false; + } + } + + return pass; +} + +static bool test_stride_vertex_attribl(GLint stride, + bool check_valid) +{ + GLdouble vertices[4][4]; + + glVertexAttribLPointer(0, 4, GL_DOUBLE, stride, vertices); + + return check_stride("glVertexAttribLPointer", check_valid); +} + +static bool test_stride_vertex_attribi(GLint stride, + bool check_valid) +{ + GLuint vertices[4][4]; + + glVertexAttribIPointer(0, 4, GL_UNSIGNED_INT, + stride, vertices); + + return check_stride("glVertexAttribIPointer", check_valid); +} + +static bool test_stride_vertex_attrib(GLint stride, + bool check_valid) +{ + GLfloat vertices[4][4]; + + glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, + stride, vertices); + + return check_stride("glVertexAttribPointer", check_valid); +} + +static bool test_stride_bind_buffers(GLint stride, + bool check_valid) +{ + GLint strides[2]; + GLuint buf[2]; + GLintptr offsets[2] = { 1024, 1024 }; + + glGetIntegerv(GL_MAX_VERTEX_ATTRIB_STRIDE, &strides[0]); + strides[1] = stride; + + /* Create buffer objects */ + glGenBuffers(2, buf); + glBindBuffer(GL_ARRAY_BUFFER, buf[0]); + glBindBuffer(GL_ARRAY_BUFFER, buf[1]); + + glBindVertexBuffers(0, 2, buf, offsets, strides); + + return check_stride("glBindVertexBuffers", check_valid); +} + +static bool test_stride_bind_buffer(GLint stride, + bool check_valid) +{ + GLuint vbo; + + /* Create a buffer object */ + glGenBuffers(1, &vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + + glBindVertexBuffer(0, vbo, 1024, stride); + + return check_stride("glBindVertexBuffer", check_valid); +} + +void piglit_init(int argc, char **argv) +{ + bool pass = true; + GLint stride_max, stride_max_plus_one; + GLuint vao; + + /* Create and bind a vertex array object, this is needed + for glBindBuffer* tests */ + glGenVertexArrays(1, &vao); + glBindVertexArray(vao); + + glGetIntegerv(GL_MAX_VERTEX_ATTRIB_STRIDE, &stride_max); + stride_max_plus_one = stride_max + 1; + + piglit_test_min_int(GL_MAX_VERTEX_ATTRIB_STRIDE, 2048); + pass = piglit_minmax_pass; + + /* Try passing the max stride value */ + pass = test_stride_bind_buffer(stride_max, true) && pass; + pass = test_stride_bind_buffers(stride_max, true) && pass; + pass = test_stride_vertex_attrib(stride_max, true) && pass; + pass = test_stride_vertex_attribi(stride_max, true) && pass; + pass = test_stride_vertex_attribl(stride_max, true) && pass; + + /* Try passing a stride value that is to large */ + pass = test_stride_bind_buffer(stride_max_plus_one, false) && pass; + pass = test_stride_bind_buffers(stride_max_plus_one, false) && pass; + pass = test_stride_vertex_attrib(stride_max_plus_one, false) && pass; + pass = test_stride_vertex_attribi(stride_max_plus_one, false) && pass; + pass = test_stride_vertex_attribl(stride_max_plus_one, false) && pass; + + piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); +} + +enum piglit_result +piglit_display(void) +{ + return PIGLIT_PASS; +}