16d0784059995b8fa554d74013c06e937889ff449Jamie Madill# -*- coding: utf-8 -*- 26d0784059995b8fa554d74013c06e937889ff449Jamie Madill 36d0784059995b8fa554d74013c06e937889ff449Jamie Madill#------------------------------------------------------------------------- 46d0784059995b8fa554d74013c06e937889ff449Jamie Madill# drawElements Quality Program utilities 56d0784059995b8fa554d74013c06e937889ff449Jamie Madill# -------------------------------------- 66d0784059995b8fa554d74013c06e937889ff449Jamie Madill# 76d0784059995b8fa554d74013c06e937889ff449Jamie Madill# Copyright 2015 The Android Open Source Project 86d0784059995b8fa554d74013c06e937889ff449Jamie Madill# 96d0784059995b8fa554d74013c06e937889ff449Jamie Madill# Licensed under the Apache License, Version 2.0 (the "License"); 106d0784059995b8fa554d74013c06e937889ff449Jamie Madill# you may not use this file except in compliance with the License. 116d0784059995b8fa554d74013c06e937889ff449Jamie Madill# You may obtain a copy of the License at 126d0784059995b8fa554d74013c06e937889ff449Jamie Madill# 136d0784059995b8fa554d74013c06e937889ff449Jamie Madill# http://www.apache.org/licenses/LICENSE-2.0 146d0784059995b8fa554d74013c06e937889ff449Jamie Madill# 156d0784059995b8fa554d74013c06e937889ff449Jamie Madill# Unless required by applicable law or agreed to in writing, software 166d0784059995b8fa554d74013c06e937889ff449Jamie Madill# distributed under the License is distributed on an "AS IS" BASIS, 176d0784059995b8fa554d74013c06e937889ff449Jamie Madill# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 186d0784059995b8fa554d74013c06e937889ff449Jamie Madill# See the License for the specific language governing permissions and 196d0784059995b8fa554d74013c06e937889ff449Jamie Madill# limitations under the License. 206d0784059995b8fa554d74013c06e937889ff449Jamie Madill# 216d0784059995b8fa554d74013c06e937889ff449Jamie Madill#------------------------------------------------------------------------- 226d0784059995b8fa554d74013c06e937889ff449Jamie Madill 23cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvifrom genutil import * 24cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 25cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviallCases = [] 26cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 27cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviVERTEX = "VERTEX" 28cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviFRAGMENT = "FRAGMENT" 29cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 30cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviCASE_FRAGMENT_SHADER_TEMPLATE = """ 31cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvicase ${{NAME}} 32cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi version 310 es 33cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi expect ${{EXPECT}} 34cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 35cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vertex "" 36cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi #version 310 es 37cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi precision highp float; 38cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 39cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi in vec4 a_pos; 40cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 41cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi void main() 42cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi { 43cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi gl_Position = a_pos; 44cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi } 45cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "" 46cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 47cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi fragment "" 48cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{SOURCE}} 49cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "" 50cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviend"""[1:] 51cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 52cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviCASE_VERTEX_SHADER_TEMPLATE = """ 53cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvicase ${{NAME}} 54cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi version 310 es 55cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi expect ${{EXPECT}} 56cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 57cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vertex "" 58cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{SOURCE}} 59cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "" 60cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 61cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi fragment "" 62cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi #version 310 es 63cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi precision highp float; 64cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 65cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi layout(location=0) out vec4 o_color; 66cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 67cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi void main() 68cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi { 69cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi o_color = vec4(1.0); 70cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi } 71cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "" 72cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviend"""[1:] 73cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 74cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviclass UniformBlockCase(ShaderCase): 75cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi def __init__(self, name, shaderType, source, valid): 76cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi self.name = name 77cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi self.shaderType = shaderType 78cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi self.source = source 79cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi self.valid = valid 80cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 81cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi def __str__(self): 82cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi if self.shaderType == FRAGMENT: 83cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi sourceParams = { 84cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "OUTPUT": "o_color", 85cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "OUTPUT_DECLARATION": "layout(location=0) out vec4 o_color;" 86cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi } 87cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 88cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi source = fillTemplate(self.source, sourceParams) 89cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 90cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi testCaseParams = { 91cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "NAME": self.name, 92cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "SOURCE": source, 93cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "EXPECT": ("build_successful" if self.valid else "compile_fail") 94cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi } 95cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 96cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi return fillTemplate(CASE_FRAGMENT_SHADER_TEMPLATE, testCaseParams) 97cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi elif self.shaderType == VERTEX: 98cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi sourceParams = { 99cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "OUTPUT": "gl_Position", 100cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "OUTPUT_DECLARATION": "" 101cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi } 102cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 103cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi source = fillTemplate(self.source, sourceParams) 104cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 105cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi testCaseParams = { 106cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "NAME": self.name, 107cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "SOURCE": source, 108cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi "EXPECT": ("build_successful" if self.valid else "compile_fail") 109cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi } 110cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 111cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi return fillTemplate(CASE_VERTEX_SHADER_TEMPLATE, testCaseParams) 112cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 113cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi assert False 114cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 115cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvidef createCases(name, source, valid): 116cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi return [UniformBlockCase(name + "_vertex", VERTEX, source, valid), 117cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi UniformBlockCase(name + "_fragment", FRAGMENT, source, valid)] 118cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 119cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvirepeatShaderTemplate = """ 120cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 121cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 122cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 123cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 124cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 125cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 126cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 127cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi uniform vec4 uniformMember; 128cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 129cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 130cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 131cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 132cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 133cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 134cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 135cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvilayoutQualifierShaderTemplate = """ 136cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 137cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 138cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 139cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 140cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 141cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvilayout(%s) uniform UniformBlock 142cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 143cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 144cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 145cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 146cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 147cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 148cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 149cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 150cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 151cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvilayoutGlobalQualifierShaderTemplate = """ 152cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 153cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 154cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 155cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvilayout(%s) uniform; 156cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 157cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 158cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 159cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 160cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 161cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 162cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 163cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 164cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 165cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 166cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 167cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 168cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 169cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvilayoutMemberQualifierShaderTemplate = """ 170cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 171cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 172cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 173cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 174cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 175cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 176cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 177cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi layout(%s) mat4 uniformMember; 178cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 179cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 180cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 181cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 182cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember[0]; 183cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 184cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 185cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvilayoutMemberVec4QualifierShaderTemplate = """ 186cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 187cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 188cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 189cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 190cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 191cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 192cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 193cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi layout(%s) vec4 uniformMember; 194cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 195cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 196cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 197cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 198cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 199cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 200cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 201cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvinoInstanceNameShaderTemplate = """ 202cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 203cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 204cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 205cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 206cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 207cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 208cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 209cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 210cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}; 211cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 212cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 213cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 214cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformMember; 215cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 216cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 217cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvisameVariableAndInstanceNameShaderTemplate = """ 218cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 219cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 220cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 221cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 222cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 223cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 224cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 225cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 226cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 227cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 228cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 229cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 230cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformBlock = vec4(0.0); 231cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock; 232cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 233cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 234cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvisameVariableAndBlockNameShaderTemplate = """ 235cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 236cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 237cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 238cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 239cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 240cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 241cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 242cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 243cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 244cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 245cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 246cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 247cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 UniformBlock = vec4(0.0); 248cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = UniformBlock + uniformBlock.uniformMember; 249cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 250cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 251cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvirepeatedBlockShaderTemplate = """ 252cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 253cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 254cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 255cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 256cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 257cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 258cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 259cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 260cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlockA; 261cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 262cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 263cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 264cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 265cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlockB; 266cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 267cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 268cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 269cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlockA.uniformMember + uniformBlockB.uniformMember; 270cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 271cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 272cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvirepeatedBlockNoInstanceNameShaderTemplate = """ 273cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 274cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 275cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 276cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 277cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 278cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 279cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 280cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 281cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 282cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 283cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 284cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 285cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 286cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}; 287cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 288cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 289cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 290cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember + uniformMember; 291cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 292cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 293cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvistructMemberShaderTemplate = """ 294cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 295cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 296cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 297cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 298cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 299cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvistruct Struct 300cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 301cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 302cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}; 303cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 304cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 305cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 306cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi Struct st; 307cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 308cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 309cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 310cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 311cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.st.uniformMember; 312cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 313cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 314cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvilayoutStructMemberQualifierShaderTemplate = """ 315cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 316cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 317cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 318cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 319cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 320cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvistruct Struct 321cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 322cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 323cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}; 324cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 325cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 326cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 327cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi layout(%s) Struct st; 328cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 329cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 330cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 331cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 332cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.st.uniformMember; 333cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 334cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 335cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvilongIdentifierBlockNameShaderTemplate = (""" 336cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 337cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 338cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 339cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 340cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 341cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi// Total of 1024 characters 342cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform """ + ("a" * 1024) + """ 343cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 344cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 345cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 346cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 347cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 348cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 349cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 350cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}""")[1:] 351cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 352cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvilongIdentifierInstanceNameShaderTemplate = (""" 353cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 354cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 355cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 356cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 357cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 358cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 359cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 360cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 361cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} """ + ("a" * 1024) + """; 362cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi// Total of 1024 characters 363cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 364cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 365cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 366cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = """ + ("a" * 1024) + """.uniformMember; 367cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}""")[1:] 368cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 369cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviunderscoreIdentifierInstanceNameShaderTemplate = (""" 370cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 371cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 372cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 373cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 374cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 375cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 376cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 377cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 378cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} _; 379cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 380cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 381cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 382cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = _.uniformMember; 383cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}""")[1:] 384cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 385cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviunderscoreIdentifierBlockNameShaderTemplate = (""" 386cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 387cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 388cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 389cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 390cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 391cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform _ 392cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 393cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 394cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 395cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 396cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 397cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 398cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 399cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}""")[1:] 400cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 401cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvivalidCases = (createCases("repeat_interface_qualifier", repeatShaderTemplate, True) 402cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("layout_%s" % qualifier, layoutQualifierShaderTemplate % qualifier, True) 403cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["shared", "packed", "std140", "row_major", "column_major"]], []) 404cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("layout_all", layoutQualifierShaderTemplate % "shared, packed, std140, row_major, column_major", True) 405cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("layout_all_8_times", layoutQualifierShaderTemplate % str.join(", ", ["shared", "packed", "std140", "row_major", "column_major"] * 8), True) 406cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("global_layout_%s" % qualifier, layoutGlobalQualifierShaderTemplate % qualifier, True) 407cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["shared", "packed", "std140", "row_major", "column_major"]], []) 408cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("global_layout_all", layoutGlobalQualifierShaderTemplate % "shared, packed, std140, row_major, column_major", True) 409cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("global_layout_all_8_times", layoutGlobalQualifierShaderTemplate % str.join(", ", ["shared", "packed", "std140", "row_major", "column_major"] * 8), True) 410cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("member_layout_%s" % qualifier, layoutMemberQualifierShaderTemplate % qualifier, True) 411cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["row_major", "column_major"]], []) 412cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("member_layout_%s_vec4" % qualifier, layoutMemberVec4QualifierShaderTemplate % qualifier, True) 413cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["row_major", "column_major"]], []) 414cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("member_layout_all", layoutMemberQualifierShaderTemplate % "row_major, column_major", True) 415cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("member_layout_all_8_times", layoutMemberQualifierShaderTemplate % str.join(", ", ["row_major", "column_major"] * 8), True) 416cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("no_instance_name", noInstanceNameShaderTemplate, True) 417cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("same_variable_and_block_name", sameVariableAndBlockNameShaderTemplate, True) 418cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("same_variable_and_instance_name", sameVariableAndInstanceNameShaderTemplate, True) 419cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("struct_member", structMemberShaderTemplate, True) 420cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("struct_member_layout_%s" % qualifier, layoutStructMemberQualifierShaderTemplate % qualifier, True) 421cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["row_major", "column_major"]], []) 422cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("struct_member_layout_all", layoutStructMemberQualifierShaderTemplate % "row_major, column_major", True) 423cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("struct_member_layout_all_8_times", layoutStructMemberQualifierShaderTemplate % str.join(", ", ["row_major", "column_major"] * 8), True) 424cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("long_block_name", longIdentifierBlockNameShaderTemplate, True) 425cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("long_instance_name", longIdentifierInstanceNameShaderTemplate, True) 426cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("underscore_block_name", underscoreIdentifierBlockNameShaderTemplate, True) 427cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("underscore_instance_name", underscoreIdentifierInstanceNameShaderTemplate, True)) 428cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 429cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidMemberInterfaceQualifierShaderTemplate = """ 430cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 431cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 432cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 433cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 434cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 435cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 436cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 437cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi %s vec4 uniformMember; 438cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 439cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 440cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 441cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 442cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 443cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 444cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 445cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviconflictingInstanceNamesShaderTemplate = """ 446cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 447cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 448cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 449cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 450cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 451cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlockA 452cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 453cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 454cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 455cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 456cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlockB 457cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 458cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 459cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 460cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 461cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 462cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 463cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 464cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 465cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 466cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviconflictingFunctionAndInstanceNameShaderTemplate = """ 467cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 468cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 469cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 470cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 471cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 472cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 473cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 474cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 475cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 476cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 477cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvifloat uniformBlock (float x) 478cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 479cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi return x; 480cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} 481cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 482cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 483cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 484cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 485cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 486cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 487cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviconflictingFunctionAndBlockNameShaderTemplate = """ 488cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 489cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 490cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 491cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 492cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 493cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 494cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 495cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 496cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 497cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 498cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvifloat UniformBlock (float x) 499cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 500cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi return x; 501cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} 502cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 503cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 504cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 505cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 506cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 507cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 508cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviconflictingVariableAndInstanceNameShaderTemplate = """ 509cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 510cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 511cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 512cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 513cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 514cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 515cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 516cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 517cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 518cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 519cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi%s vec4 uniformBlock; 520cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 521cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 522cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 523cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 524cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 525cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 526cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviconflictingVariableAndBlockNameShaderTemplate = """ 527cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 528cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 529cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 530cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 531cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 532cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 533cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 534cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 535cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 536cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 537cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi%s vec4 UniformBlock; 538cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 539cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 540cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 541cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 542cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 543cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 544cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 545cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvimatchingInstanceAndBlockNameShaderTemplate = """ 546cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 547cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 548cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 549cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 550cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 551cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 552cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 553cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 554cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} UniformBlock; 555cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 556cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 557cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 558cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = UniformBlock.uniformMember; 559cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 560cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 561cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvireferenceUsingBlockNameShaderTemplate = """ 562cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 563cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 564cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 565cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 566cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 567cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 568cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 569cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 570cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 571cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 572cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 573cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 574cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = UniformBlock.uniformMember; 575cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 576cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 577cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviemptyBlockShaderTemplate = """ 578cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 579cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 580cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 581cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 582cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 583cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 584cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 585cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 586cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 587cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 588cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 589cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = vec4(0.0); 590cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 591cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 592cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviemptyLayoutShaderTemplate = """ 593cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 594cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 595cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 596cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 597cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 598cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvilayout() uniform UniformBlock 599cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 600cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 601cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 602cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 603cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 604cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 605cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 606cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 607cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 608cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviemptyGlobalLayoutShaderTemplate = """ 609cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 610cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 611cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 612cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvilayout() uniform; 613cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 614cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 615cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 616cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 617cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 618cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 619cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 620cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 621cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 622cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 623cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 624cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 625cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 626cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviemptyMemberLayoutShaderTemplate = """ 627cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 628cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 629cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 630cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 631cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 632cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 633cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 634cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi layout() vec4 uniformMember; 635cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 636cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 637cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 638cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 639cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 640cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 641cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 642cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidMemberLayoutShaderTemplate = """ 643cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 644cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 645cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 646cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 647cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 648cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 649cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 650cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi layout(%s) vec4 uniformMember; 651cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 652cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 653cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 654cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 655cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 656cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 657cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 658cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvistructureDefinitionShaderTemplate = """ 659cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 660cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 661cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 662cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 663cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 664cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 665cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 666cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi struct A 667cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi { 668cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 669cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi } a; 670cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 671cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 672cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 673cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 674cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.a.uniformMember; 675cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 676cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 677cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvisamplerShaderTemplate = """ 678cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 679cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 680cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 681cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 682cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 683cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 684cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 685cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi sampler2D sampler; 686cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 687cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 688cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 689cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 690cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 691cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 692cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 693cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 694cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvimissingBlockNameShaderTemplate = """ 695cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 696cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 697cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 698cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 699cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 700cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform 701cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 702cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 703cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 704cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 705cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 706cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 707cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 708cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 709cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 710cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidNumberBlockNameShaderTemplate = """ 711cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 712cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 713cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 714cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 715cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 716cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform 0UniformBlock 717cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 718cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 719cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 720cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 721cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 722cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 723cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 724cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 725cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 726cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidHashBlockNameShaderTemplate = """ 727cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 728cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 729cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 730cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 731cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 732cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform #UniformBlock 733cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 734cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 735cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 736cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 737cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 738cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 739cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 740cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 741cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 742cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidDollarBlockNameShaderTemplate = """ 743cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 744cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 745cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 746cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 747cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 748cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform $UniformBlock 749cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 750cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 751cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 752cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 753cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 754cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 755cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 756cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 757cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 758cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidIdentifierBlockNameShaderTemplate = """ 759cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 760cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 761cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 762cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 763cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 764cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform gl_UniformBlock 765cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 766cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 767cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 768cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 769cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 770cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 771cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 772cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 773cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 774cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvitooLongIdentifierBlockNameShaderTemplate = (""" 775cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 776cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 777cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 778cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 779cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 780cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi// Total of 1025 characters 781cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform """ + ("a" * 1025) + """ 782cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 783cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 784cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} uniformBlock; 785cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 786cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 787cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 788cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = uniformBlock.uniformMember; 789cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}""")[1:] 790cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 791cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidNumberInstanceNameShaderTemplate = """ 792cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 793cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 794cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 795cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 796cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 797cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformInstance 798cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 799cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 800cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} 0uniformBlock; 801cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 802cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 803cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 804cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = 0uniformBlock.uniformMember; 805cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 806cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 807cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidHashInstanceNameShaderTemplate = """ 808cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 809cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 810cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 811cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 812cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 813cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformInstance 814cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 815cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 816cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} #uniformBlock; 817cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 818cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 819cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 820cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = #uniformBlock.uniformMember; 821cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 822cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 823cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidDollarInstanceNameShaderTemplate = """ 824cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 825cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 826cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 827cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 828cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 829cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformInstance 830cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 831cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 832cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} $uniformBlock; 833cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 834cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 835cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 836cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = $uniformBlock.uniformMember; 837cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 838cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 839cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidIdentifierInstanceNameShaderTemplate = """ 840cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 841cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 842cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 843cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 844cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 845cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 846cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 847cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 848cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} gl_uniformBlock; 849cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 850cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 851cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 852cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = gl_uniformBlock.uniformMember; 853cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}"""[1:] 854cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 855cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärvitooLongIdentifierInstanceNameShaderTemplate = (""" 856cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi#version 310 es 857cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviprecision highp float; 858cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 859cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi${{OUTPUT_DECLARATION}} 860cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 861cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviuniform UniformBlock 862cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 863cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi vec4 uniformMember; 864cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi} """ + ("a" * 1025) + """; 865cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi// Total of 1025 characters 866cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 867cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvivoid main() 868cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi{ 869cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ${{OUTPUT}} = """ + ("a" * 1025) + """.uniformMember; 870cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi}""")[1:] 871cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 872cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviinvalidCases = ( 873cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi sum([createCases("member_%s_interface_qualifier" % qualifier, invalidMemberInterfaceQualifierShaderTemplate % qualifier, False) 874cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["in", "out", "buffer", "attribute", "varying"]], []) 875cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("conflicting_instance_names", conflictingInstanceNamesShaderTemplate, False) 876cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("conflicting_function_and_instance_name", conflictingFunctionAndInstanceNameShaderTemplate, False) 877cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("conflicting_function_and_block_name", conflictingFunctionAndBlockNameShaderTemplate, False) 878cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("conflicting_%s_and_instance_name" % qualifier, conflictingVariableAndInstanceNameShaderTemplate % qualifier, False) 879cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["uniform", "in", "out"]], []) 880cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("conflicting_%s_and_block_name" % qualifier, conflictingVariableAndBlockNameShaderTemplate % qualifier, False) 881cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["uniform", "in", "out"]], []) 882cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("matching_instance_and_block_name", matchingInstanceAndBlockNameShaderTemplate, False) 883cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("reference_using_block_name", referenceUsingBlockNameShaderTemplate, False) 884cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("empty_block", emptyBlockShaderTemplate, False) 885cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("empty_layout", emptyLayoutShaderTemplate, False) 886cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("empty_member_layout", emptyMemberLayoutShaderTemplate, False) 887cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("empty_global_layout", emptyGlobalLayoutShaderTemplate, False) 888cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("structure_definition", structureDefinitionShaderTemplate, False) 889cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("member_layout_%s" % qualifier, invalidMemberLayoutShaderTemplate % qualifier, False) 890cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["shared", "packed", "std140" "std430",]], []) 891cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("missing_block_name", missingBlockNameShaderTemplate, False) 892cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_number_block_name", invalidNumberBlockNameShaderTemplate, False) 893cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_identifier_block_name", invalidIdentifierBlockNameShaderTemplate, False) 894cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_hash_block_name", invalidHashBlockNameShaderTemplate, False) 895cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_dollar_block_name", invalidDollarBlockNameShaderTemplate, False) 896cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("too_long_block_name", tooLongIdentifierBlockNameShaderTemplate, False) 897cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_number_instance_name", invalidNumberInstanceNameShaderTemplate, False) 898cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_identifier_instance_name", invalidIdentifierInstanceNameShaderTemplate, False) 899cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_hash_instance_name", invalidHashInstanceNameShaderTemplate, False) 900cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("invalid_dollar_instance_name", invalidDollarInstanceNameShaderTemplate, False) 901cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("repeated_block", repeatedBlockShaderTemplate, False) 902cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + createCases("repeated_block_no_instance_name", repeatedBlockNoInstanceNameShaderTemplate, False) 903cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("layout_%s" % qualifier, layoutQualifierShaderTemplate % qualifier, False) 904cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["std430"]], []) 905cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi + sum([createCases("global_layout_%s" % qualifier, layoutGlobalQualifierShaderTemplate % qualifier, False) 906cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi for qualifier in ["std430"]], []) 907cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi ) 908cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 909cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviallCases.append(CaseGroup("valid", "Valid uniform interface block syntax tests.", validCases)) 910cacbbf83a31d6ae30f08ee58117cc6b037354806Mika IsojärviallCases.append(CaseGroup("invalid", "Invalid uniform interface block syntax tests.", invalidCases)) 911cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi 912cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärviif __name__ == "__main__": 913cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi print "Generating shader case files." 914cacbbf83a31d6ae30f08ee58117cc6b037354806Mika Isojärvi writeAllCases("uniform_block.test", allCases) 915