From patchwork Sun Jul 5 07:18:12 2015 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: 50663 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wi0-f198.google.com (mail-wi0-f198.google.com [209.85.212.198]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 3D501229FC for ; Sun, 5 Jul 2015 07:18:56 +0000 (UTC) Received: by wifm2 with SMTP id m2sf1564687wif.1 for ; Sun, 05 Jul 2015 00:18:55 -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:content-type:content-transfer-encoding:errors-to :sender:x-original-sender:x-original-authentication-results :mailing-list:reply-to; bh=TeLMiO6hFHPs5CDMlIRUVk0IVEeNU6AnYHIb/Js04v0=; b=hI1XCdHhmxVtK92rEaSRb3y2h7tLH1WDtT3uWqjxF23/T281xK6DYXPfKjSPDGHj3h F/Iet9y/ondewJDbOOM/svW/Wstb1tDQuSWC6jldJRy7WSzaJAjPVHzX9bL0A22EAIIN EsGut8lH8VqalpdsdApU8BBjE2LeHg9Stab0B0ZXio+uHffv/IXSjNah/ETpJxUP011D uE5QV0Sxa7nZiaeqRcoSUn/yopO9BngaetVdMsWljGot1f8h1AA1B1exxsZlJQCmNl4P KWDCm+8vupYGxOqBDZzfitJcaG9LEFf/FBHrcDVJlhiJ1n8N6pvTsiLflHIH8DEe9Xs+ qhtw== X-Gm-Message-State: ALoCoQks/fWHdHIU3fLPRtQjVIM+8N2ZTUo/MZo5PxBxPPNYRZb5UEAIlgXHS+QjYup6nqW6wlUp X-Received: by 10.180.37.198 with SMTP id a6mr12033391wik.7.1436080735510; Sun, 05 Jul 2015 00:18:55 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.29.7 with SMTP id f7ls553792lah.48.gmail; Sun, 05 Jul 2015 00:18:54 -0700 (PDT) X-Received: by 10.152.116.39 with SMTP id jt7mr3355627lab.82.1436080734898; Sun, 05 Jul 2015 00:18:54 -0700 (PDT) Received: from mail-la0-x22d.google.com (mail-la0-x22d.google.com. [2a00:1450:4010:c03::22d]) by mx.google.com with ESMTPS id z1si11941066lbm.136.2015.07.05.00.18.54 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Jul 2015 00:18:54 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 2a00:1450:4010:c03::22d as permitted sender) client-ip=2a00:1450:4010:c03::22d; Received: by lagc2 with SMTP id c2so122867650lag.3 for ; Sun, 05 Jul 2015 00:18:54 -0700 (PDT) X-Received: by 10.112.126.101 with SMTP id mx5mr44201417lbb.35.1436080734341; Sun, 05 Jul 2015 00:18:54 -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.112.108.230 with SMTP id hn6csp991853lbb; Sun, 5 Jul 2015 00:18:52 -0700 (PDT) X-Received: by 10.66.54.233 with SMTP id m9mr94425943pap.33.1436080731452; Sun, 05 Jul 2015 00:18:51 -0700 (PDT) Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177]) by mx.google.com with ESMTP id n7si22945039pap.46.2015.07.05.00.18.50; Sun, 05 Jul 2015 00:18:51 -0700 (PDT) Received-SPF: pass (google.com: domain of piglit-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) client-ip=131.252.210.177; Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 550EC6E2D3; Sun, 5 Jul 2015 00:18:50 -0700 (PDT) X-Original-To: piglit@lists.freedesktop.org Delivered-To: piglit@lists.freedesktop.org Received: from nm4-vm4.bullet.mail.gq1.yahoo.com (nm4-vm4.bullet.mail.gq1.yahoo.com [98.136.218.163]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1B2B86E2BF for ; Sun, 5 Jul 2015 00:18:49 -0700 (PDT) Received: from [98.137.12.56] by nm4.bullet.mail.gq1.yahoo.com with NNFMP; 05 Jul 2015 07:18:47 -0000 Received: from [208.71.42.198] by tm1.bullet.mail.gq1.yahoo.com with NNFMP; 05 Jul 2015 07:18:47 -0000 Received: from [127.0.0.1] by smtp209.mail.gq1.yahoo.com with NNFMP; 05 Jul 2015 07:18:47 -0000 X-Yahoo-Newman-Id: 593315.47191.bm@smtp209.mail.gq1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: gV30uGkVM1n4LICgzgm3remEZ5y5NEkbgS7Ut8QDn6jCtNF OJJwOUVl44ASrB5wGOwS3AXBZEmoI3MpVZlhrF8O6.L.TDLyxznDeJ6Rd4PW 7c_4ckApJyhCbKferdOVkGURsQLr2cXw8xZTWOlhKB8wexVJBRS4Tja1d2wh kaDoFnQ8BGsm871SZ4NVVcHwZTuq3fI5vh4ZRXWJDwpSGpnG9jckxD7O5N4e cTygmbRYARBV9I_v93ESdm3GpAoG6T4PtTmqEr_0cgfGWDEGR4M2X.yQzVVC _5Az1MDs9uNafycZawP9QqQVe5URYdi44j18U4s5v6wCYRPYUwzGB7PUpcOm mqrciWyPYgM87m9Qz3xAeA6Wbcfzhd.EZVbWrYs41oBhLotCcZ_ePrI3H5ir LOJ8xEJIcICBx5uaXPOBUyGyuTmnLuSDGw8RWzm6y9l.5k2kSpofWhmSnUFF KvKN7j.zJMmYhzwu.PtAQaSRnhEGshu5RBN67aijNjGVxXM9N0tiByqxvvNj Qt3Bybox5hMoLU5BA71LxizURLn0d7br6KUw- X-Yahoo-SMTP: 9BNlx.aswBAkr0D8mG_whiOP1dyU From: "'Timothy Arceri' via Patchwork Forward" To: piglit@lists.freedesktop.org Date: Sun, 5 Jul 2015 17:18:12 +1000 Message-Id: <1436080696-9702-2-git-send-email-t_arceri@yahoo.com.au> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1436080696-9702-1-git-send-email-t_arceri@yahoo.com.au> References: <1436080696-9702-1-git-send-email-t_arceri@yahoo.com.au> Subject: [Piglit] [PATCH V3 2/6] arb_arrays_of_arrays: add some sampler indexing execution tests X-BeenThere: piglit@lists.freedesktop.org X-Mailman-Version: 2.1.18 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 2a00:1450:4010:c03::22d as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org; dkim=neutral (body hash did not verify) header.i=@yahoo.com.au; 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 Test results: Nvidia GeForce 840M - NVIDIA 346.47 fs-const-index-three-dimensions.shader_test - pass fs-const-index.shader_test - pass fs-initializer-const-index.shader_test - fail fs-initializer-non-const-index.shader_test - fail fs-mixed-const-and-non-const-index.shader_test - pass fs-mixed-const-and-non-const-index2.shader_test - fail fs-non-const-index.shader_test - pass fs-struct-const-index-sampler-const-index.shader_test - pass fs-struct-const-index.shader_test - pass fs-struct-non-const-index-const-index.shader_test - pass fs-struct-non-const-index-sampler-non-const-index.shader_test - pass fs-struct-non-const-index.shader_test - pass vs-const-index-three-dimensions.shader_test - pass vs-const-index.shader_test - pass vs-non-const-index.shader_test - pass vs-struct-nonconst-sampler-const.shader_test - pass vs-struct-nonconst-sampler-nonconst.shader_test - pass vs-struct-nonconst.shader_test - pass V3: add missing AoA extensions requirement to some of the tests V2: add vertex shader tests, add most struct tests --- .../fs-const-index-three-dimensions.shader_test | 32 ++++++++ .../execution/sampler/fs-const-index.shader_test | 32 ++++++++ .../sampler/fs-initializer-const-index.shader_test | 47 +++++++++++ .../fs-initializer-non-const-index.shader_test | 79 +++++++++++++++++++ .../fs-mixed-const-and-non-const-index.shader_test | 60 ++++++++++++++ ...fs-mixed-const-and-non-const-index2.shader_test | 67 ++++++++++++++++ .../sampler/fs-non-const-index.shader_test | 75 ++++++++++++++++++ ...uct-const-index-sampler-const-index.shader_test | 36 +++++++++ .../sampler/fs-struct-const-index.shader_test | 35 +++++++++ ...-struct-non-const-index-const-index.shader_test | 77 ++++++++++++++++++ ...const-index-sampler-non-const-index.shader_test | 77 ++++++++++++++++++ .../sampler/fs-struct-non-const-index.shader_test | 79 +++++++++++++++++++ .../vs-const-index-three-dimensions.shader_test | 32 ++++++++ .../execution/sampler/vs-const-index.shader_test | 32 ++++++++ .../sampler/vs-non-const-index.shader_test | 87 +++++++++++++++++++++ .../vs-struct-nonconst-sampler-const.shader_test | 91 ++++++++++++++++++++++ ...vs-struct-nonconst-sampler-nonconst.shader_test | 91 ++++++++++++++++++++++ .../sampler/vs-struct-nonconst.shader_test | 91 ++++++++++++++++++++++ 18 files changed, 1120 insertions(+) create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index-sampler-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-sampler-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index-three-dimensions.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/vs-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-const.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-nonconst.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst.shader_test diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test new file mode 100644 index 0000000..2972fa3 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test @@ -0,0 +1,32 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; + +void main() +{ + gl_Position = gl_Vertex; + texcoords = (gl_Vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; +uniform sampler2D tex[2][2][2]; + +void main() +{ + gl_FragColor = texture2D(tex[1][0][1], texcoords.xy); +} + +[test] +uniform int tex[1][0][1] 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test new file mode 100644 index 0000000..6043f42 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test @@ -0,0 +1,32 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; + +void main() +{ + gl_Position = gl_Vertex; + texcoords = (gl_Vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; +uniform sampler2D tex[2][2]; + +void main() +{ + gl_FragColor = texture2D(tex[1][1], texcoords.xy); +} + +[test] +uniform int tex[1][1] 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test new file mode 100644 index 0000000..9ed59dd --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test @@ -0,0 +1,47 @@ +# Normally, uniform array variables are initialized by array literals. +# +# However, samplers are different. Consider a declaration such as: +# +# layout(binding = 5) uniform sampler2D[3]; +# +# The initializer value is a single integer (5), while the storage has 3 +# array elements. The proper behavior is to increment one for each +# element; they should be initialized to 5, 6, and 7. + +[require] +GLSL >= 1.40 +GL_ARB_arrays_of_arrays +GL_ARB_shading_language_420pack + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +in vec4 piglit_vertex; +out vec4 texcoords; + +void main() +{ + gl_Position = piglit_vertex; + texcoords = (piglit_vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +#extension GL_ARB_shading_language_420pack: enable + +layout(binding = 0) uniform sampler2D tex[2][2][2]; + +in vec4 texcoords; +out vec4 color; + +void main() +{ + color = texture2D(tex[0][1][1], texcoords.xy); +} + +[test] +texture rgbw 3 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test new file mode 100644 index 0000000..88ab686 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test @@ -0,0 +1,79 @@ +# Normally, uniform array variables are initialized by array literals. +# +# However, samplers are different. Consider a declaration such as: +# +# layout(binding = 5) uniform sampler2D[3]; +# +# The initializer value is a single integer (5), while the storage has 3 +# array elements. The proper behavior is to increment one for each +# element; they should be initialized to 5, 6, and 7. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays +GL_ARB_shading_language_420pack + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_shading_language_420pack : enable +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +layout(binding = 0) uniform sampler2D tex[2][2]; + +uniform int n; +uniform int m; + +out vec4 color; + +void main() +{ + color = texture(tex[n][m], vec2(0.75, 0.25)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test new file mode 100644 index 0000000..f993e76 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test @@ -0,0 +1,60 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +uniform sampler2D s[2][2]; + +uniform int n; + +out vec4 color; + +void main() +{ + color = texture(s[n][1], vec2(0.75, 0.25)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0] 0 +uniform int s[0][1] 1 +uniform int s[1][0] 2 +uniform int s[1][1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test new file mode 100644 index 0000000..05ce652 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test @@ -0,0 +1,67 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +uniform sampler2D s[2][2]; + +uniform int n; + +out vec4 color; + +void main() +{ + color = texture(s[1][n], vec2(0.75, 0.25)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0] 0 +uniform int s[0][1] 1 +uniform int s[1][0] 2 +uniform int s[1][1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +draw rect -1 0 1 1 +# real outcome? +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +#uniform int n 0 +#draw rect 0 -1 1 1 +#relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) + + + diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test new file mode 100644 index 0000000..9aa1f64 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test @@ -0,0 +1,75 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +uniform sampler2D s[2][2]; + +uniform int n; +uniform int m; + +out vec4 color; + +void main() +{ + color = texture(s[n][m], vec2(0.75, 0.25)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0] 0 +uniform int s[0][1] 1 +uniform int s[1][0] 2 +uniform int s[1][1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index-sampler-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index-sampler-const-index.shader_test new file mode 100644 index 0000000..00c5cab --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index-sampler-const-index.shader_test @@ -0,0 +1,36 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; + +void main() +{ + gl_Position = gl_Vertex; + texcoords = (gl_Vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; +struct S { + sampler2D tex[2][2]; +}; + +uniform S i[2][2]; + +void main() +{ + gl_FragColor = texture2D(i[1][1].tex[1][1], texcoords.xy); +} + +[test] +uniform int i[1][1].tex[1][1] 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test new file mode 100644 index 0000000..38111fa --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test @@ -0,0 +1,35 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +varying vec4 texcoords; + +void main() +{ + gl_Position = gl_Vertex; + texcoords = (gl_Vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; +struct S { + sampler2D tex; +}; + +uniform S i[2][2]; + +void main() +{ + gl_FragColor = texture2D(i[1][1].tex, texcoords.xy); +} + +[test] +uniform int i[1][1].tex 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-const-index.shader_test new file mode 100644 index 0000000..0eeb7ee --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-const-index.shader_test @@ -0,0 +1,77 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[2][2]; + +uniform int n; +uniform int m; + +out vec4 color; + +void main() +{ + color = texture(s[n][m].tex[1], vec2(0.75, 0.25)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0].tex[1] 0 +uniform int s[0][1].tex[1] 1 +uniform int s[1][0].tex[1] 2 +uniform int s[1][1].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-sampler-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-sampler-non-const-index.shader_test new file mode 100644 index 0000000..d8edf65 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index-sampler-non-const-index.shader_test @@ -0,0 +1,77 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[2][2]; + +uniform int n; +uniform int m; + +out vec4 color; + +void main() +{ + color = texture(s[n][1].tex[m], vec2(0.75, 0.25)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][1].tex[0] 0 +uniform int s[0][1].tex[1] 1 +uniform int s[1][1].tex[0] 2 +uniform int s[1][1].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index.shader_test new file mode 100644 index 0000000..22ab511 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-non-const-index.shader_test @@ -0,0 +1,79 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +struct S { + sampler2D tex; +}; + +uniform S s[2][2]; + +uniform int n; +uniform int m; + +out vec4 color; + +void main() +{ + color = texture(s[n][m].tex, vec2(0.75, 0.25)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0].tex 0 +uniform int s[0][1].tex 1 +uniform int s[1][0].tex 2 +uniform int s[1][1].tex 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index-three-dimensions.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index-three-dimensions.shader_test new file mode 100644 index 0000000..1636605 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index-three-dimensions.shader_test @@ -0,0 +1,32 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +uniform sampler2D tex[2][2][2]; +varying vec4 colour; + +void main() +{ + gl_Position = gl_Vertex; + colour = texture2D(tex[1][0][1], gl_Vertex.xy); +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 colour; + +void main() +{ + gl_FragColor = colour; +} + +[test] +uniform int tex[1][0][1] 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.0, 0.0) (1.0, 0.0, 0.0) +relative probe rgb (1.0, 0.0) (0.0, 1.0, 0.0) +relative probe rgb (0.0, 1.0) (0.0, 0.0, 1.0) +relative probe rgb (1.0, 1.0) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index.shader_test new file mode 100644 index 0000000..d0387d4 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-const-index.shader_test @@ -0,0 +1,32 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +uniform sampler2D tex[2][2]; +varying vec4 colour; + +void main() +{ + gl_Position = gl_Vertex; + colour = texture2D(tex[1][1], gl_Vertex.xy); +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 colour; + +void main() +{ + gl_FragColor = colour; +} + +[test] +uniform int tex[1][1] 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.0, 0.0) (1.0, 0.0, 0.0) +relative probe rgb (1.0, 0.0) (0.0, 1.0, 0.0) +relative probe rgb (0.0, 1.0) (0.0, 0.0, 1.0) +relative probe rgb (1.0, 1.0) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-non-const-index.shader_test new file mode 100644 index 0000000..d9ecb0f --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-non-const-index.shader_test @@ -0,0 +1,87 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the vertex shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays +GL_ARB_gpu_shader5 + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s[2][2]; + +uniform int n; +uniform int m; + +in vec4 piglit_vertex; +out vec4 color; + +void main() +{ + gl_Position = piglit_vertex; + color = texture(s[n][m], vec2(0.75, 0.25)); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0] 0 +uniform int s[0][1] 1 +uniform int s[1][0] 2 +uniform int s[1][1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-const.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-const.shader_test new file mode 100644 index 0000000..95ee76a --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-const.shader_test @@ -0,0 +1,91 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the vertex shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays +GL_ARB_gpu_shader5 + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[2][2]; + +uniform int n; +uniform int m; + +in vec4 piglit_vertex; +out vec4 color; + +void main() +{ + gl_Position = piglit_vertex; + color = texture(s[n][m].tex[1], vec2(0.75, 0.25)); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0].tex[1] 0 +uniform int s[0][1].tex[1] 1 +uniform int s[1][0].tex[1] 2 +uniform int s[1][1].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-nonconst.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-nonconst.shader_test new file mode 100644 index 0000000..88d3daa --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-sampler-nonconst.shader_test @@ -0,0 +1,91 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the vertex shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays +GL_ARB_gpu_shader5 + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[2][2]; + +uniform int n; +uniform int m; + +in vec4 piglit_vertex; +out vec4 color; + +void main() +{ + gl_Position = piglit_vertex; + color = texture(s[n][1].tex[m], vec2(0.75, 0.25)); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][1].tex[0] 0 +uniform int s[0][1].tex[1] 1 +uniform int s[1][1].tex[0] 2 +uniform int s[1][1].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst.shader_test new file mode 100644 index 0000000..9013811 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst.shader_test @@ -0,0 +1,91 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the vertex shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays +GL_ARB_gpu_shader5 + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex; +}; + +uniform S s[2][2]; + +uniform int n; +uniform int m; + +in vec4 piglit_vertex; +out vec4 color; + +void main() +{ + gl_Position = piglit_vertex; + color = texture(s[n][m].tex, vec2(0.75, 0.25)); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0].tex 0 +uniform int s[0][1].tex 1 +uniform int s[1][0].tex 2 +uniform int s[1][1].tex 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0)