Skip to content

Commit fdb0042

Browse files
authored
Merge remote-tracking branch 'origin/main' into metal-freeze
2 parents ef6aca3 + 6a997ce commit fdb0042

29 files changed

Lines changed: 622 additions & 78 deletions

File tree

DEPS

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ vars = {
4343
'checkout_angle_mesa': False,
4444

4545
# Version of Chromium our Chromium-based DEPS are mirrored from.
46-
'chromium_revision': '36571a8140f5b5c4b5495280ecc7d1ccd943659a',
46+
'chromium_revision': '523d69615c9bb972d9afc2d73c42805529d98a18',
4747
# We never want to checkout chromium,
4848
# but need a dummy DEPS entry for the autoroller
4949
'dummy_checkout_chromium': False,
@@ -76,11 +76,11 @@ vars = {
7676
# Three lines of non-changing comments so that
7777
# the commit queue can handle CLs rolling catapult
7878
# and whatever else without interference from each other.
79-
'catapult_revision': '9557edbf5998b1791dab5e15b05eba3fadf7e32b',
79+
'catapult_revision': '4ca50c8ae1cea0c8f2c87eae90c0fbcb6d7e262b',
8080

8181
# the commit queue can handle CLs rolling Fuchsia sdk
8282
# and whatever else without interference from each other.
83-
'fuchsia_version': 'version:29.20250927.0.1',
83+
'fuchsia_version': 'version:29.20251004.3.1',
8484

8585
# Three lines of non-changing comments so that
8686
# the commit queue can handle CLs rolling luci-go
@@ -121,7 +121,7 @@ vars = {
121121
'reclient_version': 're_client_version:0.183.0.3b3097cd-gomaip',
122122

123123
# siso CIPD package version.
124-
'siso_version': 'git_revision:f7020b54462c37f1b10a16e68563c338c9f14371',
124+
'siso_version': 'git_revision:2eee1d6feaab76d99397d4d840bd369a428c01ea',
125125

126126
# 'magic' text to tell depot_tools that git submodules should be accepted but
127127
# but parity with DEPS file is expected.
@@ -513,17 +513,17 @@ vars = {
513513
deps = {
514514

515515
'build': {
516-
'url': Var('chromium_git') + '/chromium/src/build.git@8547cfb0c1f6c1801ff14df6f5d1bcdf0a2182a1',
516+
'url': Var('chromium_git') + '/chromium/src/build.git@4d06a1da7d3dd500370f0cd5536f0cbfcccfbebb',
517517
'condition': 'not build_with_chromium',
518518
},
519519

520520
'buildtools': {
521-
'url': Var('chromium_git') + '/chromium/src/buildtools.git@2325cd98715bdbd532669717df8ce48cff9dc407',
521+
'url': Var('chromium_git') + '/chromium/src/buildtools.git@fb3a6ce2c0af9306433e76d4776af1d8419899f5',
522522
'condition': 'not build_with_chromium',
523523
},
524524

525525
'third_party/clang-format/script': {
526-
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git@37f6e68a107df43b7d7e044fd36a13cbae3413f2',
526+
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git@c2725e0622e1a86d55f14514f2177a39efea4a0e',
527527
'condition': 'not build_with_chromium',
528528
},
529529

@@ -572,7 +572,7 @@ deps = {
572572
},
573573

574574
'testing': {
575-
'url': '{chromium_git}/chromium/src/testing@2ef6fce019343c14fdb1139176c35149df016059',
575+
'url': '{chromium_git}/chromium/src/testing@6f0cca3144e0a5ad968386e765e52e19df10277d',
576576
'condition': 'not build_with_chromium',
577577
},
578578

@@ -675,7 +675,7 @@ deps = {
675675
},
676676

677677
'third_party/android_deps': {
678-
'url': Var('chromium_git') + '/chromium/src/third_party/android_deps@d7efb11e00109401ddcddf9670c7227f925e8207',
678+
'url': Var('chromium_git') + '/chromium/src/third_party/android_deps@2c5a610ceb8b15f832121f70dafcf2144cfe7e67',
679679
'condition': 'checkout_android and not build_with_chromium',
680680
},
681681

@@ -787,7 +787,7 @@ deps = {
787787
},
788788

789789
'third_party/depot_tools': {
790-
'url': Var('chromium_git') + '/chromium/tools/depot_tools.git@e4185d003f9c08cb49edcb593212481db59d9a54',
790+
'url': Var('chromium_git') + '/chromium/tools/depot_tools.git@eda3b48f2e32304d4ea20fee7ac1d37c9b060b3b',
791791
'condition': 'not build_with_chromium',
792792
},
793793

@@ -915,7 +915,7 @@ deps = {
915915
},
916916

917917
'third_party/llvm-libc/src': {
918-
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libc.git@761ff0251bf6f14dd19973e7043a8da937925824',
918+
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libc.git@909b339562be050b89bad069dd25a0893247206d',
919919
'condition': 'not build_with_chromium',
920920
},
921921

@@ -994,7 +994,7 @@ deps = {
994994
},
995995

996996
'third_party/protobuf': {
997-
'url': Var('chromium_git') + '/chromium/src/third_party/protobuf@6f024571103b1b611404a31141174325bb2cbab3',
997+
'url': Var('chromium_git') + '/chromium/src/third_party/protobuf@819e9064827d46ba13992edaf1ac99be8c15c61e',
998998
'condition': 'not build_with_chromium',
999999
},
10001000

@@ -1043,7 +1043,7 @@ deps = {
10431043
},
10441044

10451045
'third_party/rust': {
1046-
'url': Var('chromium_git') + '/chromium/src/third_party/rust@1bc3716d4a830176b98a94863fd429802e39bacd',
1046+
'url': Var('chromium_git') + '/chromium/src/third_party/rust@bc122a79f1ffa485a5798403f71853bc6e4d2092',
10471047
'condition': 'not build_with_chromium',
10481048
},
10491049

@@ -1084,7 +1084,7 @@ deps = {
10841084
},
10851085

10861086
'third_party/vulkan-deps': {
1087-
'url': Var('chromium_git') + '/vulkan-deps@edacf5135c8db8f952c32279bc4a0afcb5bde5a7',
1087+
'url': Var('chromium_git') + '/vulkan-deps@ea4cd2b85ec46b8d139d320177556f0f2fcd1d79',
10881088
'condition': 'not build_with_chromium',
10891089
},
10901090

@@ -1094,7 +1094,7 @@ deps = {
10941094
},
10951095

10961096
'third_party/lunarg-vulkantools/src': {
1097-
'url': '{chromium_git}/external/github.com/LunarG/VulkanTools@244ebe03c9f06c4513a869236640d8b171462600',
1097+
'url': '{chromium_git}/external/github.com/LunarG/VulkanTools@9830fdc6294421867774291f1285c42ecfae623b',
10981098
'condition': 'not build_with_chromium',
10991099
},
11001100

@@ -1109,7 +1109,7 @@ deps = {
11091109
},
11101110

11111111
'third_party/spirv-tools/src': {
1112-
'url': '{chromium_git}/external/github.com/KhronosGroup/SPIRV-Tools@21b7f7385d0ef70c41314891d76926e022e5d407',
1112+
'url': '{chromium_git}/external/github.com/KhronosGroup/SPIRV-Tools@533a69c63ae773d90d03b206954ffffec6517dbd',
11131113
'condition': 'not build_with_chromium',
11141114
},
11151115

@@ -1134,7 +1134,7 @@ deps = {
11341134
},
11351135

11361136
'third_party/vulkan-validation-layers/src': {
1137-
'url': '{chromium_git}/external/github.com/KhronosGroup/Vulkan-ValidationLayers@cc388e801f874ed61e6c78bb1403d24e011255ab',
1137+
'url': '{chromium_git}/external/github.com/KhronosGroup/Vulkan-ValidationLayers@2f03cbd1846ba45a27c29172327a989f684a1979',
11381138
'condition': 'not build_with_chromium',
11391139
},
11401140

@@ -1159,7 +1159,7 @@ deps = {
11591159
},
11601160

11611161
'tools/clang': {
1162-
'url': Var('chromium_git') + '/chromium/src/tools/clang.git@d2182ae5ccb9818730a976ce25b3c38a9a7f190f',
1162+
'url': Var('chromium_git') + '/chromium/src/tools/clang.git@1581534567c6cdf96dc916fee3d3d0bb347929bd',
11631163
'condition': 'not build_with_chromium',
11641164
},
11651165

@@ -1209,7 +1209,7 @@ deps = {
12091209
},
12101210

12111211
'tools/perf': {
1212-
'url': Var('chromium_git') + '/chromium/src/tools/perf@66d06ee335cbd42e41c5ffc74ae5d965fa3bd33c',
1212+
'url': Var('chromium_git') + '/chromium/src/tools/perf@496e9e27a02f91178ff03c6b943fa191def6b269',
12131213
'condition': 'not build_with_chromium',
12141214
},
12151215

build

Submodule build updated from 8547cfb to 4d06a1d

buildtools

Submodule buildtools updated from 2325cd9 to fb3a6ce

src/compiler/translator/ParseContext.cpp

Lines changed: 124 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3342,10 +3342,14 @@ void TParseContext::checkGeometryShaderInputAndSetArraySize(const TSourceLoc &lo
33423342
const ImmutableString &token,
33433343
TType *type)
33443344
{
3345-
if (type->getQualifier() == EvqPerVertexIn)
3345+
if (type->getQualifier() == EvqPerVertexIn && mShaderType == GL_GEOMETRY_SHADER)
33463346
{
33473347
// This is a redeclaration of gl_in, which may be unsized.
3348-
ASSERT(type->isArray());
3348+
if (!type->isArray())
3349+
{
3350+
error(location, "gl_in must be an array", "gl_in");
3351+
type->makeArray(0);
3352+
}
33493353

33503354
// If the size is already determined, set the size / verify it:
33513355
if (mGeometryShaderInputPrimitiveType != EptUndefined)
@@ -3410,6 +3414,53 @@ void TParseContext::checkTessellationShaderUnsizedArraysAndSetSize(const TSource
34103414
TType *type)
34113415
{
34123416
TQualifier qualifier = type->getQualifier();
3417+
3418+
if (qualifier == EvqPerVertexIn && type->isArray() &&
3419+
(mShaderType == GL_TESS_CONTROL_SHADER || mShaderType == GL_TESS_EVALUATION_SHADER))
3420+
{
3421+
// gl_in in both tessellation stages should be sized as gl_MaxPatchVertices
3422+
if (type->getOutermostArraySize() == 0)
3423+
{
3424+
ASSERT(mMaxPatchVertices > 0);
3425+
type->sizeOutermostUnsizedArray(mMaxPatchVertices);
3426+
}
3427+
else if (type->getOutermostArraySize() != static_cast<unsigned int>(mMaxPatchVertices))
3428+
{
3429+
error(location,
3430+
"If a size is specified for a tessellation control or evaluation gl_in "
3431+
"variable, it must match the maximum patch size (gl_MaxPatchVertices).",
3432+
token);
3433+
}
3434+
return;
3435+
}
3436+
if (qualifier == EvqPerVertexOut && type->isArray() && mShaderType == GL_TESS_CONTROL_SHADER)
3437+
{
3438+
if (type->getOutermostArraySize() == 0)
3439+
{
3440+
if (mTessControlShaderOutputVertices == 0)
3441+
{
3442+
error(location,
3443+
"Missing a valid vertices declaration before declaring an unsized "
3444+
"gl_out array",
3445+
"gl_out");
3446+
}
3447+
else
3448+
{
3449+
type->sizeOutermostUnsizedArray(mTessControlShaderOutputVertices);
3450+
}
3451+
}
3452+
else if (type->getOutermostArraySize() !=
3453+
static_cast<unsigned int>(mTessControlShaderOutputVertices) &&
3454+
mTessControlShaderOutputVertices != 0)
3455+
{
3456+
error(location,
3457+
"If a size is specified for a tessellation control gl_out "
3458+
"variable, it must match the the number of vertices in the output patch.",
3459+
token);
3460+
}
3461+
return;
3462+
}
3463+
34133464
if (!IsTessellationControlShaderOutput(mShaderType, qualifier) &&
34143465
!IsTessellationControlShaderInput(mShaderType, qualifier) &&
34153466
!IsTessellationEvaluationShaderInput(mShaderType, qualifier))
@@ -3577,15 +3628,15 @@ TIntermDeclaration *TParseContext::parseSingleDeclaration(
35773628
checkAtomicCounterOffsetIsValid(false, identifierOrTypeLocation, type);
35783629
}
35793630

3631+
adjustRedeclaredBuiltInType(identifierOrTypeLocation, identifier, type);
3632+
35803633
TVariable *variable = nullptr;
35813634
if (declareVariable(identifierOrTypeLocation, identifier, type, &variable))
35823635
{
35833636
symbol = new TIntermSymbol(variable);
35843637
}
35853638
}
35863639

3587-
adjustRedeclaredBuiltInType(identifierOrTypeLocation, identifier, type);
3588-
35893640
TIntermDeclaration *declaration = new TIntermDeclaration();
35903641
declaration->setLine(identifierOrTypeLocation);
35913642
if (symbol)
@@ -5017,10 +5068,13 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
50175068

50185069
// Both inputs and outputs of tessellation control shaders must be arrays.
50195070
// For tessellation evaluation shaders, only inputs must necessarily be arrays.
5071+
// Inputs of geometry shaders must be arrays too.
50205072
const bool isTCS = mShaderType == GL_TESS_CONTROL_SHADER;
50215073
const bool isTESIn =
50225074
mShaderType == GL_TESS_EVALUATION_SHADER && IsShaderIn(typeQualifier.qualifier);
5023-
if (arraySizes == nullptr && (isTCS || isTESIn))
5075+
const bool isGSIn =
5076+
mShaderType == GL_GEOMETRY_SHADER && IsShaderIn(typeQualifier.qualifier);
5077+
if (arraySizes == nullptr && (isTCS || isTESIn || isGSIn))
50245078
{
50255079
error(typeQualifier.line, "type must be an array", blockName);
50265080
}
@@ -5303,9 +5357,20 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
53035357
SymbolType instanceSymbolType = SymbolType::UserDefined;
53045358
if (isGLPerVertex)
53055359
{
5306-
instanceSymbolType = SymbolType::BuiltIn;
5307-
typeQualifier.qualifier =
5308-
IsVaryingOut(typeQualifier.qualifier) ? EvqPerVertexOut : EvqPerVertexIn;
5360+
// Mark gl_PerVertex as built-in if usage is not erroneous. If it is, there will be failure
5361+
// elsewhere that validates gl_PerVertex cannot be used when not a built-in.
5362+
if (IsVaryingOut(typeQualifier.qualifier) && mShaderType != GL_FRAGMENT_SHADER &&
5363+
mShaderType != GL_COMPUTE_SHADER)
5364+
{
5365+
instanceSymbolType = SymbolType::BuiltIn;
5366+
typeQualifier.qualifier = EvqPerVertexOut;
5367+
}
5368+
else if (IsVaryingIn(typeQualifier.qualifier) && mShaderType != GL_VERTEX_SHADER &&
5369+
mShaderType != GL_FRAGMENT_SHADER && mShaderType != GL_COMPUTE_SHADER)
5370+
{
5371+
instanceSymbolType = SymbolType::BuiltIn;
5372+
typeQualifier.qualifier = EvqPerVertexIn;
5373+
}
53095374
}
53105375
TInterfaceBlock *interfaceBlock = new TInterfaceBlock(&symbolTable, blockName, fieldList,
53115376
blockLayoutQualifier, instanceSymbolType);
@@ -5319,11 +5384,49 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
53195384
if (arraySizes)
53205385
{
53215386
interfaceBlockType->makeArrays(*arraySizes);
5322-
checkGeometryShaderInputAndSetArraySize(instanceLine, instanceName, interfaceBlockType);
5323-
checkTessellationShaderUnsizedArraysAndSetSize(instanceLine, instanceName,
5324-
interfaceBlockType);
53255387
checkDeclarationIsValidArraySize(instanceLine, instanceName, interfaceBlockType);
53265388
}
5389+
checkGeometryShaderInputAndSetArraySize(instanceLine, instanceName, interfaceBlockType);
5390+
checkTessellationShaderUnsizedArraysAndSetSize(instanceLine, instanceName, interfaceBlockType);
5391+
5392+
// If this is gl_PerVertex, make sure the instance name is as expected.
5393+
if (interfaceBlockType->getQualifier() == EvqPerVertexOut)
5394+
{
5395+
switch (mShaderType)
5396+
{
5397+
case GL_VERTEX_SHADER:
5398+
case GL_TESS_EVALUATION_SHADER_EXT:
5399+
case GL_GEOMETRY_SHADER_EXT:
5400+
if (!instanceName.empty())
5401+
{
5402+
error(instanceLine,
5403+
"out gl_PerVertex instance name must be empty in this shader",
5404+
instanceName);
5405+
instanceSymbolType = SymbolType::UserDefined;
5406+
}
5407+
break;
5408+
case GL_TESS_CONTROL_SHADER_EXT:
5409+
if (instanceName != "gl_out")
5410+
{
5411+
error(instanceLine,
5412+
"out gl_PerVertex instance name must be gl_out in this shader",
5413+
instanceName);
5414+
instanceSymbolType = SymbolType::UserDefined;
5415+
}
5416+
break;
5417+
default:
5418+
UNREACHABLE();
5419+
break;
5420+
}
5421+
}
5422+
else if (interfaceBlockType->getQualifier() == EvqPerVertexIn)
5423+
{
5424+
if (instanceName != "gl_in")
5425+
{
5426+
error(instanceLine, "in gl_PerVertex instance name must be gl_in", instanceName);
5427+
instanceSymbolType = SymbolType::UserDefined;
5428+
}
5429+
}
53275430

53285431
// The instance variable gets created to refer to the interface block type from the AST
53295432
// regardless of if there's an instance name. It's created as an empty symbol if there is no
@@ -5351,7 +5454,8 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
53515454
{
53525455
// These builtins can be redefined only when used within a redefined gl_PerVertex
53535456
// block
5354-
if (interfaceBlock->name() != "gl_PerVertex")
5457+
if (interfaceBlockType->getQualifier() != EvqPerVertexIn &&
5458+
interfaceBlockType->getQualifier() != EvqPerVertexOut)
53555459
{
53565460
error(field->line(), "redefinition in an invalid interface block",
53575461
field->name());
@@ -5369,12 +5473,17 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
53695473
}
53705474
else
53715475
{
5372-
// gl_in is allowed to be redeclared
5373-
if (interfaceBlockType->getQualifier() != EvqPerVertexIn)
5476+
// gl_in and gl_out are allowed to be redeclared
5477+
bool isGlIn =
5478+
interfaceBlockType->getQualifier() == EvqPerVertexIn && instanceName == "gl_in";
5479+
bool isGlOut = interfaceBlockType->getQualifier() == EvqPerVertexOut &&
5480+
instanceName == "gl_out" && mShaderType == GL_TESS_CONTROL_SHADER_EXT;
5481+
5482+
if (!isGlIn && !isGlOut)
53745483
{
53755484
checkIsNotReserved(instanceLine, instanceName);
53765485
}
5377-
else
5486+
else if (isGlIn)
53785487
{
53795488
symbolTable.onGlInVariableRedeclaration(instanceVariable);
53805489
}

0 commit comments

Comments
 (0)