From patchwork Thu Aug 14 22:28:15 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: 35420 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-pa0-f71.google.com (mail-pa0-f71.google.com [209.85.220.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id AF3E1203C5 for ; Thu, 14 Aug 2014 22:28:30 +0000 (UTC) Received: by mail-pa0-f71.google.com with SMTP id et14sf13055579pad.10 for ; Thu, 14 Aug 2014 15:28:30 -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=Rf5D9EIWoTFxmyH1jt0lnPQq31EubkvuI6SEPZw8X/I=; b=YsS4O2Yq5v8Isav4hSy6rZWFlESiH2Gg1vA8b6CL8KELfkUCmrp+OshHh4LZ2xJbfy +kTnv1Eu/jGctz8/3scUEqILqHznWz80NhTj1iWP4mt+JfohE1J3IKuSj8/qGAmuHkIq 7yLI7u+dlo46dJcfgGFGCMIL0ECqtE0uIc4cHU9I0jYcEFSjJtAZ3+0Hr7p9EQHt1rrd cDtRIVWMFccuRN3TDfpZksI6asm0YlMTV+5/UpGrYQ6m3oOwi+n72LPz2EyNyxkAolE8 k0/n+V3q2W7oU5u57bqMTezDz6GlDVormLd8ALIFUFLIwggcdYUl+Lni6f0lgtaEniBd 16Ag== X-Gm-Message-State: ALoCoQnCeeNfSc3p5Qy2FPF4ENVcM98rCk+0hK5z4xFFBVC7X1FydBTgRev+K8Psndb2PjHDH8gU X-Received: by 10.66.222.9 with SMTP id qi9mr7372442pac.28.1408055309977; Thu, 14 Aug 2014 15:28:29 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.39.148 with SMTP id v20ls371287qgv.93.gmail; Thu, 14 Aug 2014 15:28:29 -0700 (PDT) X-Received: by 10.140.50.16 with SMTP id r16mr20845070qga.96.1408055309849; Thu, 14 Aug 2014 15:28:29 -0700 (PDT) Received: from mail-vc0-x232.google.com (mail-vc0-x232.google.com [2607:f8b0:400c:c03::232]) by mx.google.com with ESMTPS id r47si9301609qga.61.2014.08.14.15.28.29 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 14 Aug 2014 15:28:29 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 2607:f8b0:400c:c03::232 as permitted sender) client-ip=2607:f8b0:400c:c03::232; Received: by mail-vc0-f178.google.com with SMTP id la4so2190647vcb.37 for ; Thu, 14 Aug 2014 15:28:29 -0700 (PDT) X-Received: by 10.220.86.72 with SMTP id r8mr6020173vcl.36.1408055309520; Thu, 14 Aug 2014 15:28:29 -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 tc5csp68763vcb; Thu, 14 Aug 2014 15:28:28 -0700 (PDT) X-Received: by 10.66.251.132 with SMTP id zk4mr7234581pac.47.1408055308243; Thu, 14 Aug 2014 15:28:28 -0700 (PDT) Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177]) by mx.google.com with ESMTP id pg3si5515161pdb.181.2014.08.14.15.28.27 for ; Thu, 14 Aug 2014 15:28:28 -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 9E2196E78A; Thu, 14 Aug 2014 15:28:27 -0700 (PDT) X-Original-To: piglit@lists.freedesktop.org Delivered-To: piglit@lists.freedesktop.org Received: from nm21-vm10.bullet.mail.gq1.yahoo.com (nm21-vm10.bullet.mail.gq1.yahoo.com [98.136.217.57]) by gabe.freedesktop.org (Postfix) with ESMTP id C6A2E6E78A for ; Thu, 14 Aug 2014 15:28:26 -0700 (PDT) Received: from [98.137.12.60] by nm21.bullet.mail.gq1.yahoo.com with NNFMP; 14 Aug 2014 22:28:25 -0000 Received: from [98.136.164.76] by tm5.bullet.mail.gq1.yahoo.com with NNFMP; 14 Aug 2014 22:28:25 -0000 Received: from [127.0.0.1] by smtp238.mail.gq1.yahoo.com with NNFMP; 14 Aug 2014 22:28:25 -0000 X-Yahoo-Newman-Id: 545142.7210.bm@smtp238.mail.gq1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: VfDBphgVM1mzf5cQ6UmFBckVmmxxdGglXGDR._QUBF54pQN sWN5pFezMAyvjPw.A_AAN0nvXPvIKXEWuit4jtVWGXSjtm0V0R2ymXsuIoRs tK1dkJwxhcJoF1kKh2GkZnpnhKWPkI5SRiU6Gm4u5ndVkObzLG2PV5Nyz75C gIS5Z3kHXDnk_y_rU1kkvRXFu7Y9UpUffS_649DUawz6.B2TjmJ0FQmGswh3 .SEgH2FahciXhyoUM7tJlAWs4UWHfA0PhrnKkuwIkbccN6t9CQowxswaQII9 HeyU80i9w9Zr5kNIMtMPUKEKmtN2R_qOEv97ZjUw_BZHOFVuC88w1cpae46C Y6eFZd1rWU3f.FCOgJh3U7PkxRcKZlyRitGltdFgAtCRvKt18Jl1SUKEJIWW my2aVv0ScRdGo0ZILsCBsqCpybD1_mY9cr506pxBdjKLQgr1sJxNZPnItacU 1UgMvRh8zswHGsN1R5hamZmR2wFrLanVK0o2yDNok.aLT2hj0BJWQNDgYe_B gxi_Q9paio14nicn_AcAPxFxZyP2KOSrcXCDQ1er6eR4kG6k_uhQQAnY_I6c 5ZiGF X-Yahoo-SMTP: 9BNlx.aswBAkr0D8mG_whiOP1dyU From: "'Timothy Arceri' via Patchwork Forward" To: piglit@lists.freedesktop.org Date: Fri, 15 Aug 2014 08:28:15 +1000 Message-Id: <1408055295-17916-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 V2] 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::232 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 V2: changed to -> too Signed-off-by: Timothy Arceri --- 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 | 140 ++++++++++++++++++++++++ 5 files changed, 157 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..2f62281 --- /dev/null +++ b/tests/spec/gl-4.4/gl_max_vertex_attrib_stride.c @@ -0,0 +1,140 @@ +/* + * 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_invalid_stride(char *function) +{ + bool pass = true; + + 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_too_large_vertex_attribl(GLint stride_max_plus_one) +{ + GLdouble vertices[4][4]; + + glVertexAttribLPointer(0, 4, GL_DOUBLE, stride_max_plus_one, vertices); + + return check_invalid_stride("glVertexAttribLPointer"); +} + +static bool test_stride_too_large_vertex_attribi(GLint stride_max_plus_one) +{ + GLuint vertices[4][4]; + + glVertexAttribIPointer(0, 4, GL_UNSIGNED_INT, + stride_max_plus_one, vertices); + + return check_invalid_stride("glVertexAttribIPointer"); +} + +static bool test_stride_too_large_vertex_attrib(GLint stride_max_plus_one) +{ + GLfloat vertices[4][4]; + + glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, + stride_max_plus_one, vertices); + + return check_invalid_stride("glVertexAttribPointer"); +} + +static bool test_stride_too_large_bind_buffers(GLint stride_max_plus_one) +{ + GLint strides[2]; + GLuint buf[2]; + GLintptr offsets[2] = { 1024, 1024 }; + + glGetIntegerv(GL_MAX_VERTEX_ATTRIB_STRIDE, &strides[0]); + strides[1] = stride_max_plus_one; + + /* Create buffer objects */ + glGenBuffers(2, buf); + glBindBuffer(GL_ARRAY_BUFFER, buf[0]); + glBindBuffer(GL_ARRAY_BUFFER, buf[1]); + + /* Try passing a stride value that is to large */ + glBindVertexBuffers(0, 2, buf, offsets, strides); + + return check_invalid_stride("glBindVertexBuffers"); +} + +static bool test_stride_too_large_bind_buffer(GLint stride_max_plus_one) +{ + GLuint vbo; + + /* Create a buffer object */ + glGenBuffers(1, &vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + + /* Try passing a stride value that is to large */ + glBindVertexBuffer(0, vbo, 1024, stride_max_plus_one); + + return check_invalid_stride("glBindVertexBuffer"); +} + +void piglit_init(int argc, char **argv) +{ + bool pass = true; + GLint 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_plus_one); + stride_max_plus_one++; + + piglit_test_min_int(GL_MAX_VERTEX_ATTRIB_STRIDE, 2048); + pass = piglit_minmax_pass; + pass = test_stride_too_large_bind_buffer(stride_max_plus_one) && pass; + pass = test_stride_too_large_bind_buffers(stride_max_plus_one) && pass; + pass = test_stride_too_large_vertex_attrib(stride_max_plus_one) && pass; + pass = test_stride_too_large_vertex_attribi(stride_max_plus_one) && pass; + pass = test_stride_too_large_vertex_attribl(stride_max_plus_one) && pass; + + piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); +} + +enum piglit_result +piglit_display(void) +{ + return PIGLIT_PASS; +}