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