Lines Matching full:token
207 for (auto token = tokenizer->NextToken();; token = tokenizer->NextToken()) { in ParseBufferData() local
208 if (token->IsEOL()) in ParseBufferData()
210 if (token->IsEOS()) { in ParseBufferData()
217 if (token->IsIdentifier() && token->AsString() == "END") in ParseBufferData()
219 if (!token->IsInteger() && !token->IsDouble() && !token->IsHex()) in ParseBufferData()
220 return Result("invalid BUFFER data value: " + token->ToOriginalString()); in ParseBufferData()
230 token->ConvertToDouble(); in ParseBufferData()
232 double val = token->IsHex() ? static_cast<double>(token->AsHex()) in ParseBufferData()
233 : token->AsDouble(); in ParseBufferData()
237 if (token->IsDouble()) { in ParseBufferData()
239 token->ToOriginalString()); in ParseBufferData()
242 uint64_t val = token->IsHex() ? token->AsHex() : token->AsUint64(); in ParseBufferData()
288 for (auto token = tokenizer_->NextToken(); !token->IsEOS(); in Parse() local
289 token = tokenizer_->NextToken()) { in Parse()
290 if (token->IsEOL()) in Parse()
292 if (!token->IsIdentifier()) in Parse()
296 std::string tok = token->AsString(); in Parse()
326 r = Result("unknown token: " + tok); in Parse()
447 auto token = tokenizer_->NextToken(); in ValidateEndOfStatement() local
448 if (token->IsEOL() || token->IsEOS()) in ValidateEndOfStatement()
451 token->ToOriginalString()); in ValidateEndOfStatement()
455 auto token = tokenizer_->NextToken(); in ParseShaderBlock() local
456 if (!token->IsIdentifier()) in ParseShaderBlock()
457 return Result("invalid token when looking for shader type"); in ParseShaderBlock()
460 Result r = ToShaderType(token->AsString(), &type); in ParseShaderBlock()
466 token = tokenizer_->NextToken(); in ParseShaderBlock()
467 if (!token->IsIdentifier()) in ParseShaderBlock()
468 return Result("invalid token when looking for shader name"); in ParseShaderBlock()
470 shader->SetName(token->AsString()); in ParseShaderBlock()
472 token = tokenizer_->NextToken(); in ParseShaderBlock()
473 if (!token->IsIdentifier()) in ParseShaderBlock()
474 return Result("invalid token when looking for shader format"); in ParseShaderBlock()
476 std::string fmt = token->AsString(); in ParseShaderBlock()
501 token = tokenizer_->PeekNextToken(); in ParseShaderBlock()
502 if (token->IsIdentifier() && token->AsString() == "TARGET_ENV") { in ParseShaderBlock()
504 token = tokenizer_->NextToken(); in ParseShaderBlock()
505 if (!token->IsIdentifier() && !token->IsString()) in ParseShaderBlock()
507 shader->SetTargetEnv(token->AsString()); in ParseShaderBlock()
510 token = tokenizer_->PeekNextToken(); in ParseShaderBlock()
511 if (token->IsIdentifier() && token->AsString() == "VIRTUAL_FILE") { in ParseShaderBlock()
514 token = tokenizer_->NextToken(); in ParseShaderBlock()
515 if (!token->IsIdentifier() && !token->IsString()) in ParseShaderBlock()
518 auto path = token->AsString(); in ParseShaderBlock()
549 token = tokenizer_->NextToken(); in ParseShaderBlock()
550 if (!token->IsIdentifier() || token->AsString() != "END") in ParseShaderBlock()
561 auto token = tokenizer_->NextToken(); in ParsePipelineBlock() local
562 if (!token->IsIdentifier()) in ParsePipelineBlock()
563 return Result("invalid token when looking for pipeline type"); in ParsePipelineBlock()
566 Result r = ToPipelineType(token->AsString(), &type); in ParsePipelineBlock()
572 token = tokenizer_->NextToken(); in ParsePipelineBlock()
573 if (!token->IsIdentifier()) in ParsePipelineBlock()
574 return Result("invalid token when looking for pipeline name"); in ParsePipelineBlock()
576 pipeline->SetName(token->AsString()); in ParsePipelineBlock()
587 std::unique_ptr<Token> token; in ParsePipelineBody() local
588 for (token = tokenizer_->NextToken(); !token->IsEOS(); in ParsePipelineBody()
589 token = tokenizer_->NextToken()) { in ParsePipelineBody()
590 if (token->IsEOL()) in ParsePipelineBody()
592 if (!token->IsIdentifier()) in ParsePipelineBody()
596 std::string tok = token->AsString(); in ParsePipelineBody()
630 r = Result("unknown token in pipeline block: " + tok); in ParsePipelineBody()
636 if (!token->IsIdentifier() || token->AsString() != "END") in ParsePipelineBody()
647 auto token = tokenizer_->NextToken(); in ParsePipelineAttach() local
648 if (!token->IsIdentifier()) in ParsePipelineAttach()
649 return Result("invalid token in ATTACH command"); in ParsePipelineAttach()
651 auto* shader = script_->GetShader(token->AsString()); in ParsePipelineAttach()
655 token = tokenizer_->NextToken(); in ParsePipelineAttach()
656 if (token->IsEOL() || token->IsEOS()) { in ParsePipelineAttach()
665 if (!token->IsIdentifier()) in ParsePipelineAttach()
666 return Result("invalid token after ATTACH"); in ParsePipelineAttach()
670 auto type = token->AsString(); in ParsePipelineAttach()
672 token = tokenizer_->NextToken(); in ParsePipelineAttach()
673 if (!token->IsIdentifier()) in ParsePipelineAttach()
676 Result r = ToShaderType(token->AsString(), &shader_type); in ParsePipelineAttach()
682 token = tokenizer_->NextToken(); in ParsePipelineAttach()
683 if (!token->IsIdentifier()) in ParsePipelineAttach()
686 type = token->AsString(); in ParsePipelineAttach()
699 token = tokenizer_->NextToken(); in ParsePipelineAttach()
700 if (!token->IsIdentifier()) in ParsePipelineAttach()
703 r = pipeline->SetShaderEntryPoint(shader, token->AsString()); in ParsePipelineAttach()
707 token = tokenizer_->NextToken(); in ParsePipelineAttach()
711 if (token->IsIdentifier() && token->AsString() == "SPECIALIZE") { in ParsePipelineAttach()
716 token = tokenizer_->NextToken(); in ParsePipelineAttach()
718 if (token->IsEOL() || token->IsEOS()) in ParsePipelineAttach()
720 if (token->IsIdentifier()) in ParsePipelineAttach()
721 return Result("unknown ATTACH parameter: " + token->AsString()); in ParsePipelineAttach()
723 token->ToOriginalString()); in ParsePipelineAttach()
729 auto token = tokenizer_->NextToken(); in ParseShaderSpecialization() local
730 if (!token->IsInteger()) in ParseShaderSpecialization()
733 auto spec_id = token->AsUint32(); in ParseShaderSpecialization()
735 token = tokenizer_->NextToken(); in ParseShaderSpecialization()
736 if (!token->IsIdentifier() || token->AsString() != "AS") in ParseShaderSpecialization()
737 return Result("expected AS as next token"); in ParseShaderSpecialization()
739 token = tokenizer_->NextToken(); in ParseShaderSpecialization()
740 if (!token->IsIdentifier()) in ParseShaderSpecialization()
743 auto type = ToType(token->AsString()); in ParseShaderSpecialization()
745 return Result("invalid data type '" + token->AsString() + "' provided"); in ParseShaderSpecialization()
751 token = tokenizer_->NextToken(); in ParseShaderSpecialization()
755 value = token->AsUint32(); in ParseShaderSpecialization()
757 Result r = token->ConvertToDouble(); in ParseShaderSpecialization()
765 u.f = token->AsFloat(); in ParseShaderSpecialization()
778 auto token = tokenizer_->NextToken(); in ParsePipelineShaderOptimizations() local
779 if (!token->IsIdentifier()) in ParsePipelineShaderOptimizations()
782 auto* shader = script_->GetShader(token->AsString()); in ParsePipelineShaderOptimizations()
786 token = tokenizer_->NextToken(); in ParsePipelineShaderOptimizations()
787 if (!token->IsEOL()) in ParsePipelineShaderOptimizations()
789 token->ToOriginalString()); in ParsePipelineShaderOptimizations()
793 token = tokenizer_->NextToken(); in ParsePipelineShaderOptimizations()
794 if (token->IsEOL()) in ParsePipelineShaderOptimizations()
796 if (token->IsEOS()) in ParsePipelineShaderOptimizations()
798 if (!token->IsIdentifier()) in ParsePipelineShaderOptimizations()
800 if (token->AsString() == "END") in ParsePipelineShaderOptimizations()
803 optimizations.push_back(token->AsString()); in ParsePipelineShaderOptimizations()
814 auto token = tokenizer_->NextToken(); in ParsePipelineShaderCompileOptions() local
815 if (!token->IsIdentifier()) in ParsePipelineShaderCompileOptions()
818 auto* shader = script_->GetShader(token->AsString()); in ParsePipelineShaderCompileOptions()
826 token = tokenizer_->NextToken(); in ParsePipelineShaderCompileOptions()
827 if (!token->IsEOL()) in ParsePipelineShaderCompileOptions()
829 token->ToOriginalString()); in ParsePipelineShaderCompileOptions()
833 token = tokenizer_->NextToken(); in ParsePipelineShaderCompileOptions()
834 if (token->IsEOL()) in ParsePipelineShaderCompileOptions()
836 if (token->IsEOS()) in ParsePipelineShaderCompileOptions()
838 if (token->AsString() == "END") in ParsePipelineShaderCompileOptions()
841 options.push_back(token->AsString()); in ParsePipelineShaderCompileOptions()
852 auto token = tokenizer_->NextToken(); in ParsePipelineSubgroup() local
853 if (!token->IsIdentifier()) in ParsePipelineSubgroup()
856 auto* shader = script_->GetShader(token->AsString()); in ParsePipelineSubgroup()
861 token = tokenizer_->NextToken(); in ParsePipelineSubgroup()
862 if (token->IsEOL()) in ParsePipelineSubgroup()
864 if (token->IsEOS()) in ParsePipelineSubgroup()
866 if (!token->IsIdentifier()) in ParsePipelineSubgroup()
868 if (token->AsString() == "END") in ParsePipelineSubgroup()
871 if (token->AsString() == "FULLY_POPULATED") { in ParsePipelineSubgroup()
876 token = tokenizer_->NextToken(); in ParsePipelineSubgroup()
877 if (token->IsEOL() || token->IsEOS()) in ParsePipelineSubgroup()
880 if (token->AsString() == "on") { in ParsePipelineSubgroup()
882 } else if (token->AsString() == "off") { in ParsePipelineSubgroup()
891 } else if (token->AsString() == "VARYING_SIZE") { in ParsePipelineSubgroup()
896 token = tokenizer_->NextToken(); in ParsePipelineSubgroup()
897 if (token->IsEOL() || token->IsEOS()) in ParsePipelineSubgroup()
900 if (token->AsString() == "on") { in ParsePipelineSubgroup()
902 } else if (token->AsString() == "off") { in ParsePipelineSubgroup()
910 } else if (token->AsString() == "REQUIRED_SIZE") { in ParsePipelineSubgroup()
915 token = tokenizer_->NextToken(); in ParsePipelineSubgroup()
916 if (token->IsEOL() || token->IsEOS()) in ParsePipelineSubgroup()
919 if (token->IsInteger()) { in ParsePipelineSubgroup()
920 r = pipeline->SetShaderRequiredSubgroupSize(shader, token->AsUint32()); in ParsePipelineSubgroup()
921 } else if (token->AsString() == "MIN") { in ParsePipelineSubgroup()
923 } else if (token->AsString() == "MAX") { in ParsePipelineSubgroup()
931 return Result("SUBGROUP invalid value for SUBGROUP " + token->AsString()); in ParsePipelineSubgroup()
939 auto token = tokenizer_->NextToken(); in ParsePipelinePatchControlPoints() local
940 if (token->IsEOL() || token->IsEOS()) in ParsePipelinePatchControlPoints()
944 if (!token->IsInteger()) in ParsePipelinePatchControlPoints()
947 pipeline->GetPipelineData()->SetPatchControlPoints(token->AsUint32()); in ParsePipelinePatchControlPoints()
953 auto token = tokenizer_->NextToken(); in ParsePipelineFramebufferSize() local
954 if (token->IsEOL() || token->IsEOS()) in ParsePipelineFramebufferSize()
956 if (!token->IsInteger()) in ParsePipelineFramebufferSize()
959 pipeline->SetFramebufferWidth(token->AsUint32()); in ParsePipelineFramebufferSize()
961 token = tokenizer_->NextToken(); in ParsePipelineFramebufferSize()
962 if (token->IsEOL() || token->IsEOS()) in ParsePipelineFramebufferSize()
964 if (!token->IsInteger()) in ParsePipelineFramebufferSize()
967 pipeline->SetFramebufferHeight(token->AsUint32()); in ParsePipelineFramebufferSize()
979 auto token = tokenizer_->NextToken(); in ParsePipelineViewport() local
980 if (token->IsEOL() || token->IsEOS()) in ParsePipelineViewport()
982 Result r = token->ConvertToDouble(); in ParsePipelineViewport()
986 val[i] = token->AsFloat(); in ParsePipelineViewport()
991 auto token = tokenizer_->NextToken(); in ParsePipelineViewport() local
992 if (!token->IsIdentifier() || token->AsString() != "SIZE") in ParsePipelineViewport()
996 token = tokenizer_->NextToken(); in ParsePipelineViewport()
997 if (token->IsEOL() || token->IsEOS()) in ParsePipelineViewport()
999 Result r = token->ConvertToDouble(); in ParsePipelineViewport()
1003 val[i] = token->AsFloat(); in ParsePipelineViewport()
1008 token = tokenizer_->PeekNextToken(); in ParsePipelineViewport()
1009 while (token->IsIdentifier()) { in ParsePipelineViewport()
1010 if (token->AsString() == "MIN_DEPTH") { in ParsePipelineViewport()
1012 token = tokenizer_->NextToken(); in ParsePipelineViewport()
1013 if (token->IsEOL() || token->IsEOS()) in ParsePipelineViewport()
1015 Result r = token->ConvertToDouble(); in ParsePipelineViewport()
1019 vp.mind = token->AsFloat(); in ParsePipelineViewport()
1021 if (token->AsString() == "MAX_DEPTH") { in ParsePipelineViewport()
1023 token = tokenizer_->NextToken(); in ParsePipelineViewport()
1024 if (token->IsEOL() || token->IsEOS()) in ParsePipelineViewport()
1026 Result r = token->ConvertToDouble(); in ParsePipelineViewport()
1030 vp.maxd = token->AsFloat(); in ParsePipelineViewport()
1033 token = tokenizer_->PeekNextToken(); in ParsePipelineViewport()
1076 auto token = tokenizer_->NextToken(); in ParsePipelineBind() local
1078 if (!token->IsIdentifier()) { in ParsePipelineBind()
1084 auto object_type = token->AsString(); in ParsePipelineBind()
1088 token = tokenizer_->NextToken(); in ParsePipelineBind()
1089 if (!token->IsIdentifier()) in ParsePipelineBind()
1092 auto* buffer = script_->GetBuffer(token->AsString()); in ParsePipelineBind()
1094 return Result("unknown buffer: " + token->AsString()); in ParsePipelineBind()
1099 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1100 while (token->IsIdentifier() && token->AsString() != "AS" && in ParsePipelineBind()
1101 token->AsString() != "KERNEL" && in ParsePipelineBind()
1102 token->AsString() != "DESCRIPTOR_SET") { in ParsePipelineBind()
1104 buffer = script_->GetBuffer(token->AsString()); in ParsePipelineBind()
1106 return Result("unknown buffer: " + token->AsString()); in ParsePipelineBind()
1108 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1116 token = tokenizer_->NextToken(); in ParsePipelineBind()
1117 if (token->IsIdentifier() && token->AsString() == "AS") { in ParsePipelineBind()
1118 token = tokenizer_->NextToken(); in ParsePipelineBind()
1119 if (!token->IsIdentifier()) in ParsePipelineBind()
1120 return Result("invalid token for BUFFER type"); in ParsePipelineBind()
1122 Result r = ToBufferType(token->AsString(), &buffer_type); in ParsePipelineBind()
1127 token = tokenizer_->NextToken(); in ParsePipelineBind()
1128 if (!token->IsIdentifier() || token->AsString() != "LOCATION") in ParsePipelineBind()
1131 token = tokenizer_->NextToken(); in ParsePipelineBind()
1132 if (!token->IsInteger()) in ParsePipelineBind()
1134 auto location = token->AsUint32(); in ParsePipelineBind()
1137 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1138 if (token->IsIdentifier() && token->AsString() == "BASE_MIP_LEVEL") { in ParsePipelineBind()
1140 token = tokenizer_->NextToken(); in ParsePipelineBind()
1142 if (!token->IsInteger()) in ParsePipelineBind()
1145 base_mip_level = token->AsUint32(); in ParsePipelineBind()
1149 "base mip level (now " + token->AsString() + in ParsePipelineBind()
1169 token = tokenizer_->NextToken(); in ParsePipelineBind()
1170 if (!token->IsIdentifier() || token->AsString() != "SAMPLER") in ParsePipelineBind()
1173 token = tokenizer_->NextToken(); in ParsePipelineBind()
1174 if (!token->IsIdentifier()) in ParsePipelineBind()
1177 auto* sampler = script_->GetSampler(token->AsString()); in ParsePipelineBind()
1179 return Result("unknown sampler: " + token->AsString()); in ParsePipelineBind()
1201 // and have to advance to the next token. Otherwise, we're already on in ParsePipelineBind()
1202 // the next token and don't want to advance. in ParsePipelineBind()
1204 token = tokenizer_->NextToken(); in ParsePipelineBind()
1207 if (token->IsIdentifier() && token->AsString() == "DESCRIPTOR_SET") { in ParsePipelineBind()
1208 token = tokenizer_->NextToken(); in ParsePipelineBind()
1209 if (!token->IsInteger()) in ParsePipelineBind()
1211 uint32_t descriptor_set = token->AsUint32(); in ParsePipelineBind()
1213 token = tokenizer_->NextToken(); in ParsePipelineBind()
1214 if (!token->IsIdentifier() || token->AsString() != "BINDING") in ParsePipelineBind()
1217 token = tokenizer_->NextToken(); in ParsePipelineBind()
1218 if (!token->IsInteger()) in ParsePipelineBind()
1221 auto binding = token->AsUint32(); in ParsePipelineBind()
1227 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1228 if (token->IsIdentifier() && token->AsString() == "BASE_MIP_LEVEL") { in ParsePipelineBind()
1230 token = tokenizer_->NextToken(); in ParsePipelineBind()
1232 if (!token->IsInteger()) in ParsePipelineBind()
1235 base_mip_level = token->AsUint32(); in ParsePipelineBind()
1238 return Result("base mip level (now " + token->AsString() + in ParsePipelineBind()
1248 token = tokenizer_->NextToken(); in ParsePipelineBind()
1249 if (!token->IsIdentifier() || token->AsString() != "OFFSET") in ParsePipelineBind()
1253 token = tokenizer_->NextToken(); in ParsePipelineBind()
1255 if (!token->IsInteger()) { in ParsePipelineBind()
1264 dynamic_offsets[i] = token->AsUint32(); in ParsePipelineBind()
1276 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1277 if (token->IsIdentifier() && in ParsePipelineBind()
1278 token->AsString() == "DESCRIPTOR_OFFSET") { in ParsePipelineBind()
1279 token = tokenizer_->NextToken(); in ParsePipelineBind()
1281 token = tokenizer_->NextToken(); in ParsePipelineBind()
1282 if (!token->IsInteger()) { in ParsePipelineBind()
1292 descriptor_offsets[i] = token->AsUint64(); in ParsePipelineBind()
1296 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1297 if (token->IsIdentifier() && in ParsePipelineBind()
1298 token->AsString() == "DESCRIPTOR_RANGE") { in ParsePipelineBind()
1299 token = tokenizer_->NextToken(); in ParsePipelineBind()
1301 token = tokenizer_->NextToken(); in ParsePipelineBind()
1302 if (!token->IsInteger()) { in ParsePipelineBind()
1312 descriptor_ranges[i] = token->AsUint64(); in ParsePipelineBind()
1323 } else if (token->IsIdentifier() && token->AsString() == "KERNEL") { in ParsePipelineBind()
1324 token = tokenizer_->NextToken(); in ParsePipelineBind()
1325 if (!token->IsIdentifier()) in ParsePipelineBind()
1328 if (token->AsString() == "ARG_NAME") { in ParsePipelineBind()
1329 token = tokenizer_->NextToken(); in ParsePipelineBind()
1330 if (!token->IsIdentifier()) in ParsePipelineBind()
1333 pipeline->AddBuffer(buffer, buffer_type, token->AsString()); in ParsePipelineBind()
1334 } else if (token->AsString() == "ARG_NUMBER") { in ParsePipelineBind()
1335 token = tokenizer_->NextToken(); in ParsePipelineBind()
1336 if (!token->IsInteger()) in ParsePipelineBind()
1339 pipeline->AddBuffer(buffer, buffer_type, token->AsUint32()); in ParsePipelineBind()
1349 token = tokenizer_->NextToken(); in ParsePipelineBind()
1350 if (!token->IsIdentifier()) in ParsePipelineBind()
1353 auto* sampler = script_->GetSampler(token->AsString()); in ParsePipelineBind()
1355 return Result("unknown sampler: " + token->AsString()); in ParsePipelineBind()
1360 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1361 while (token->IsIdentifier() && token->AsString() != "KERNEL" && in ParsePipelineBind()
1362 token->AsString() != "DESCRIPTOR_SET") { in ParsePipelineBind()
1364 sampler = script_->GetSampler(token->AsString()); in ParsePipelineBind()
1366 return Result("unknown sampler: " + token->AsString()); in ParsePipelineBind()
1368 token = tokenizer_->PeekNextToken(); in ParsePipelineBind()
1375 token = tokenizer_->NextToken(); in ParsePipelineBind()
1376 if (!token->IsIdentifier()) in ParsePipelineBind()
1377 return Result("expected a string token for BIND command"); in ParsePipelineBind()
1379 if (token->AsString() == "DESCRIPTOR_SET") { in ParsePipelineBind()
1380 token = tokenizer_->NextToken(); in ParsePipelineBind()
1381 if (!token->IsInteger()) in ParsePipelineBind()
1383 uint32_t descriptor_set = token->AsUint32(); in ParsePipelineBind()
1385 token = tokenizer_->NextToken(); in ParsePipelineBind()
1386 if (!token->IsIdentifier() || token->AsString() != "BINDING") in ParsePipelineBind()
1389 token = tokenizer_->NextToken(); in ParsePipelineBind()
1390 if (!token->IsInteger()) in ParsePipelineBind()
1393 uint32_t binding = token->AsUint32(); in ParsePipelineBind()
1398 } else if (token->AsString() == "KERNEL") { in ParsePipelineBind()
1399 token = tokenizer_->NextToken(); in ParsePipelineBind()
1400 if (!token->IsIdentifier()) in ParsePipelineBind()
1403 if (token->AsString() == "ARG_NAME") { in ParsePipelineBind()
1404 token = tokenizer_->NextToken(); in ParsePipelineBind()
1405 if (!token->IsIdentifier()) in ParsePipelineBind()
1408 pipeline->AddSampler(sampler, token->AsString()); in ParsePipelineBind()
1409 } else if (token->AsString() == "ARG_NUMBER") { in ParsePipelineBind()
1410 token = tokenizer_->NextToken(); in ParsePipelineBind()
1411 if (!token->IsInteger()) in ParsePipelineBind()
1414 pipeline->AddSampler(sampler, token->AsUint32()); in ParsePipelineBind()
1429 auto token = tokenizer_->NextToken(); in ParsePipelineVertexData() local
1430 if (!token->IsIdentifier()) in ParsePipelineVertexData()
1433 auto* buffer = script_->GetBuffer(token->AsString()); in ParsePipelineVertexData()
1435 return Result("unknown buffer: " + token->AsString()); in ParsePipelineVertexData()
1437 token = tokenizer_->NextToken(); in ParsePipelineVertexData()
1438 if (!token->IsIdentifier() || token->AsString() != "LOCATION") in ParsePipelineVertexData()
1441 token = tokenizer_->NextToken(); in ParsePipelineVertexData()
1442 if (!token->IsInteger()) in ParsePipelineVertexData()
1444 const uint32_t location = token->AsUint32(); in ParsePipelineVertexData()
1451 token = tokenizer_->PeekNextToken(); in ParsePipelineVertexData()
1452 while (token->IsIdentifier()) { in ParsePipelineVertexData()
1453 if (token->AsString() == "RATE") { in ParsePipelineVertexData()
1455 token = tokenizer_->NextToken(); in ParsePipelineVertexData()
1456 if (!token->IsIdentifier()) in ParsePipelineVertexData()
1458 if (token->AsString() == "instance") { in ParsePipelineVertexData()
1460 } else if (token->AsString() != "vertex") { in ParsePipelineVertexData()
1463 } else if (token->AsString() == "OFFSET") { in ParsePipelineVertexData()
1465 token = tokenizer_->NextToken(); in ParsePipelineVertexData()
1466 if (!token->IsInteger()) in ParsePipelineVertexData()
1468 offset = token->AsUint32(); in ParsePipelineVertexData()
1469 } else if (token->AsString() == "STRIDE") { in ParsePipelineVertexData()
1471 token = tokenizer_->NextToken(); in ParsePipelineVertexData()
1472 if (!token->IsInteger()) in ParsePipelineVertexData()
1474 stride = token->AsUint32(); in ParsePipelineVertexData()
1477 } else if (token->AsString() == "FORMAT") { in ParsePipelineVertexData()
1479 token = tokenizer_->NextToken(); in ParsePipelineVertexData()
1480 if (!token->IsIdentifier()) in ParsePipelineVertexData()
1482 auto type = script_->ParseType(token->AsString()); in ParsePipelineVertexData()
1490 token->ToOriginalString()); in ParsePipelineVertexData()
1493 token = tokenizer_->PeekNextToken(); in ParsePipelineVertexData()
1508 auto token = tokenizer_->NextToken(); in ParsePipelineIndexData() local
1509 if (!token->IsIdentifier()) in ParsePipelineIndexData()
1512 auto* buffer = script_->GetBuffer(token->AsString()); in ParsePipelineIndexData()
1514 return Result("unknown buffer: " + token->AsString()); in ParsePipelineIndexData()
1530 auto token = tokenizer_->NextToken(); in ParsePipelineSet() local
1531 if (!token->IsIdentifier() || token->AsString() != "KERNEL") in ParsePipelineSet()
1534 token = tokenizer_->NextToken(); in ParsePipelineSet()
1535 if (!token->IsIdentifier()) in ParsePipelineSet()
1540 if (token->AsString() == "ARG_NAME") { in ParsePipelineSet()
1541 token = tokenizer_->NextToken(); in ParsePipelineSet()
1542 if (!token->IsIdentifier()) in ParsePipelineSet()
1545 arg_name = token->AsString(); in ParsePipelineSet()
1546 } else if (token->AsString() == "ARG_NUMBER") { in ParsePipelineSet()
1547 token = tokenizer_->NextToken(); in ParsePipelineSet()
1548 if (!token->IsInteger()) in ParsePipelineSet()
1551 arg_no = token->AsUint32(); in ParsePipelineSet()
1556 token = tokenizer_->NextToken(); in ParsePipelineSet()
1557 if (!token->IsIdentifier() || token->AsString() != "AS") in ParsePipelineSet()
1560 token = tokenizer_->NextToken(); in ParsePipelineSet()
1561 if (!token->IsIdentifier()) in ParsePipelineSet()
1564 auto type = ToType(token->AsString()); in ParsePipelineSet()
1566 return Result("invalid data type '" + token->AsString() + "' provided"); in ParsePipelineSet()
1571 token = tokenizer_->NextToken(); in ParsePipelineSet()
1572 if (!token->IsInteger() && !token->IsDouble()) in ParsePipelineSet()
1578 value.SetDoubleValue(token->AsDouble()); in ParsePipelineSet()
1580 value.SetIntValue(token->AsUint64()); in ParsePipelineSet()
1595 auto token = tokenizer_->NextToken(); in ParsePipelinePolygonMode() local
1596 if (!token->IsIdentifier()) in ParsePipelinePolygonMode()
1599 auto mode = token->AsString(); in ParsePipelinePolygonMode()
1615 auto token = tokenizer_->NextToken(); in ParsePipelineDepth() local
1616 if (token->IsEOL()) in ParsePipelineDepth()
1618 if (token->IsEOS()) in ParsePipelineDepth()
1620 if (!token->IsIdentifier()) in ParsePipelineDepth()
1622 if (token->AsString() == "END") in ParsePipelineDepth()
1625 if (token->AsString() == "TEST") { in ParsePipelineDepth()
1626 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1628 if (!token->IsIdentifier()) in ParsePipelineDepth()
1631 if (token->AsString() == "on") in ParsePipelineDepth()
1633 else if (token->AsString() == "off") in ParsePipelineDepth()
1636 return Result("invalid value for TEST: " + token->AsString()); in ParsePipelineDepth()
1637 } else if (token->AsString() == "CLAMP") { in ParsePipelineDepth()
1638 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1640 if (!token->IsIdentifier()) in ParsePipelineDepth()
1643 if (token->AsString() == "on") in ParsePipelineDepth()
1645 else if (token->AsString() == "off") in ParsePipelineDepth()
1648 return Result("invalid value for CLAMP: " + token->AsString()); in ParsePipelineDepth()
1649 } else if (token->AsString() == "WRITE") { in ParsePipelineDepth()
1650 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1652 if (!token->IsIdentifier()) in ParsePipelineDepth()
1655 if (token->AsString() == "on") in ParsePipelineDepth()
1657 else if (token->AsString() == "off") in ParsePipelineDepth()
1660 return Result("invalid value for WRITE: " + token->AsString()); in ParsePipelineDepth()
1661 } else if (token->AsString() == "COMPARE_OP") { in ParsePipelineDepth()
1662 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1664 if (!token->IsIdentifier()) in ParsePipelineDepth()
1667 CompareOp compare_op = StrToCompareOp(token->AsString()); in ParsePipelineDepth()
1671 return Result("invalid value for COMPARE_OP: " + token->AsString()); in ParsePipelineDepth()
1673 } else if (token->AsString() == "BOUNDS") { in ParsePipelineDepth()
1674 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1675 if (!token->IsIdentifier() || token->AsString() != "min") in ParsePipelineDepth()
1678 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1679 if (!token->IsDouble()) in ParsePipelineDepth()
1681 pipeline->GetPipelineData()->SetMinDepthBounds(token->AsFloat()); in ParsePipelineDepth()
1683 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1684 if (!token->IsIdentifier() || token->AsString() != "max") in ParsePipelineDepth()
1687 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1688 if (!token->IsDouble()) in ParsePipelineDepth()
1690 pipeline->GetPipelineData()->SetMaxDepthBounds(token->AsFloat()); in ParsePipelineDepth()
1691 } else if (token->AsString() == "BIAS") { in ParsePipelineDepth()
1694 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1695 if (!token->IsIdentifier() || token->AsString() != "constant") in ParsePipelineDepth()
1698 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1699 if (!token->IsDouble()) in ParsePipelineDepth()
1701 pipeline->GetPipelineData()->SetDepthBiasConstantFactor(token->AsFloat()); in ParsePipelineDepth()
1703 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1704 if (!token->IsIdentifier() || token->AsString() != "clamp") in ParsePipelineDepth()
1707 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1708 if (!token->IsDouble()) in ParsePipelineDepth()
1710 pipeline->GetPipelineData()->SetDepthBiasClamp(token->AsFloat()); in ParsePipelineDepth()
1712 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1713 if (!token->IsIdentifier() || token->AsString() != "slope") in ParsePipelineDepth()
1716 token = tokenizer_->NextToken(); in ParsePipelineDepth()
1717 if (!token->IsDouble()) in ParsePipelineDepth()
1719 pipeline->GetPipelineData()->SetDepthBiasSlopeFactor(token->AsFloat()); in ParsePipelineDepth()
1721 return Result("invalid value for DEPTH: " + token->AsString()); in ParsePipelineDepth()
1729 auto token = tokenizer_->NextToken(); in ParsePipelineStencil() local
1730 if (!token->IsIdentifier()) in ParsePipelineStencil()
1736 if (token->AsString() == "front") { in ParsePipelineStencil()
1738 } else if (token->AsString() == "back") { in ParsePipelineStencil()
1740 } else if (token->AsString() == "front_and_back") { in ParsePipelineStencil()
1744 return Result("STENCIL invalid face: " + token->AsString()); in ParsePipelineStencil()
1748 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1749 if (token->IsEOL()) in ParsePipelineStencil()
1751 if (token->IsEOS()) in ParsePipelineStencil()
1753 if (!token->IsIdentifier()) in ParsePipelineStencil()
1755 if (token->AsString() == "END") in ParsePipelineStencil()
1758 if (token->AsString() == "TEST") { in ParsePipelineStencil()
1759 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1761 if (!token->IsIdentifier()) in ParsePipelineStencil()
1764 if (token->AsString() == "on") in ParsePipelineStencil()
1766 else if (token->AsString() == "off") in ParsePipelineStencil()
1769 return Result("STENCIL invalid value for TEST: " + token->AsString()); in ParsePipelineStencil()
1770 } else if (token->AsString() == "FAIL_OP") { in ParsePipelineStencil()
1771 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1773 if (!token->IsIdentifier()) in ParsePipelineStencil()
1776 StencilOp stencil_op = StrToStencilOp(token->AsString()); in ParsePipelineStencil()
1779 token->AsString()); in ParsePipelineStencil()
1785 } else if (token->AsString() == "PASS_OP") { in ParsePipelineStencil()
1786 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1788 if (!token->IsIdentifier()) in ParsePipelineStencil()
1791 StencilOp stencil_op = StrToStencilOp(token->AsString()); in ParsePipelineStencil()
1794 token->AsString()); in ParsePipelineStencil()
1800 } else if (token->AsString() == "DEPTH_FAIL_OP") { in ParsePipelineStencil()
1801 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1803 if (!token->IsIdentifier()) in ParsePipelineStencil()
1806 StencilOp stencil_op = StrToStencilOp(token->AsString()); in ParsePipelineStencil()
1809 token->AsString()); in ParsePipelineStencil()
1815 } else if (token->AsString() == "COMPARE_OP") { in ParsePipelineStencil()
1816 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1818 if (!token->IsIdentifier()) in ParsePipelineStencil()
1821 CompareOp compare_op = StrToCompareOp(token->AsString()); in ParsePipelineStencil()
1824 token->AsString()); in ParsePipelineStencil()
1830 } else if (token->AsString() == "COMPARE_MASK") { in ParsePipelineStencil()
1831 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1833 if (!token->IsInteger()) in ParsePipelineStencil()
1837 pipeline->GetPipelineData()->SetFrontCompareMask(token->AsUint32()); in ParsePipelineStencil()
1839 pipeline->GetPipelineData()->SetBackCompareMask(token->AsUint32()); in ParsePipelineStencil()
1840 } else if (token->AsString() == "WRITE_MASK") { in ParsePipelineStencil()
1841 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1843 if (!token->IsInteger()) in ParsePipelineStencil()
1847 pipeline->GetPipelineData()->SetFrontWriteMask(token->AsUint32()); in ParsePipelineStencil()
1849 pipeline->GetPipelineData()->SetBackWriteMask(token->AsUint32()); in ParsePipelineStencil()
1850 } else if (token->AsString() == "REFERENCE") { in ParsePipelineStencil()
1851 token = tokenizer_->NextToken(); in ParsePipelineStencil()
1853 if (!token->IsInteger()) in ParsePipelineStencil()
1857 pipeline->GetPipelineData()->SetFrontReference(token->AsUint32()); in ParsePipelineStencil()
1859 pipeline->GetPipelineData()->SetBackReference(token->AsUint32()); in ParsePipelineStencil()
1861 return Result("STENCIL invalid value for STENCIL: " + token->AsString()); in ParsePipelineStencil()
1872 auto token = tokenizer_->NextToken(); in ParsePipelineBlend() local
1873 if (token->IsEOL()) in ParsePipelineBlend()
1875 if (token->IsEOS()) in ParsePipelineBlend()
1877 if (!token->IsIdentifier()) in ParsePipelineBlend()
1879 if (token->AsString() == "END") in ParsePipelineBlend()
1882 if (token->AsString() == "SRC_COLOR_FACTOR") { in ParsePipelineBlend()
1883 token = tokenizer_->NextToken(); in ParsePipelineBlend()
1885 if (!token->IsIdentifier()) in ParsePipelineBlend()
1888 const auto factor = NameToBlendFactor(token->AsString()); in ParsePipelineBlend()
1891 token->AsString()); in ParsePipelineBlend()
1893 NameToBlendFactor(token->AsString())); in ParsePipelineBlend()
1894 } else if (token->AsString() == "DST_COLOR_FACTOR") { in ParsePipelineBlend()
1895 token = tokenizer_->NextToken(); in ParsePipelineBlend()
1897 if (!token->IsIdentifier()) in ParsePipelineBlend()
1900 const auto factor = NameToBlendFactor(token->AsString()); in ParsePipelineBlend()
1903 token->AsString()); in ParsePipelineBlend()
1905 NameToBlendFactor(token->AsString())); in ParsePipelineBlend()
1906 } else if (token->AsString() == "SRC_ALPHA_FACTOR") { in ParsePipelineBlend()
1907 token = tokenizer_->NextToken(); in ParsePipelineBlend()
1909 if (!token->IsIdentifier()) in ParsePipelineBlend()
1912 const auto factor = NameToBlendFactor(token->AsString()); in ParsePipelineBlend()
1915 token->AsString()); in ParsePipelineBlend()
1917 NameToBlendFactor(token->AsString())); in ParsePipelineBlend()
1918 } else if (token->AsString() == "DST_ALPHA_FACTOR") { in ParsePipelineBlend()
1919 token = tokenizer_->NextToken(); in ParsePipelineBlend()
1921 if (!token->IsIdentifier()) in ParsePipelineBlend()
1924 const auto factor = NameToBlendFactor(token->AsString()); in ParsePipelineBlend()
1927 token->AsString()); in ParsePipelineBlend()
1929 NameToBlendFactor(token->AsString())); in ParsePipelineBlend()
1930 } else if (token->AsString() == "COLOR_OP") { in ParsePipelineBlend()
1931 token = tokenizer_->NextToken(); in ParsePipelineBlend()
1933 if (!token->IsIdentifier()) in ParsePipelineBlend()
1936 const auto op = NameToBlendOp(token->AsString()); in ParsePipelineBlend()
1938 return Result("BLEND invalid value for COLOR_OP: " + token->AsString()); in ParsePipelineBlend()
1940 NameToBlendOp(token->AsString())); in ParsePipelineBlend()
1941 } else if (token->AsString() == "ALPHA_OP") { in ParsePipelineBlend()
1942 token = tokenizer_->NextToken(); in ParsePipelineBlend()
1944 if (!token->IsIdentifier()) in ParsePipelineBlend()
1947 const auto op = NameToBlendOp(token->AsString()); in ParsePipelineBlend()
1949 return Result("BLEND invalid value for ALPHA_OP: " + token->AsString()); in ParsePipelineBlend()
1951 NameToBlendOp(token->AsString())); in ParsePipelineBlend()
1953 return Result("BLEND invalid value for BLEND: " + token->AsString()); in ParsePipelineBlend()
1961 auto token = tokenizer_->NextToken(); in ParseStruct() local
1962 if (!token->IsIdentifier()) in ParseStruct()
1965 auto struct_name = token->AsString(); in ParseStruct()
1976 token = tokenizer_->NextToken(); in ParseStruct()
1977 if (token->IsIdentifier()) { in ParseStruct()
1978 if (token->AsString() != "STRIDE") in ParseStruct()
1979 return Result("invalid token in STRUCT definition"); in ParseStruct()
1981 token = tokenizer_->NextToken(); in ParseStruct()
1982 if (token->IsEOL() || token->IsEOS()) in ParseStruct()
1984 if (!token->IsInteger()) in ParseStruct()
1987 type->SetStrideInBytes(token->AsUint32()); in ParseStruct()
1988 token = tokenizer_->NextToken(); in ParseStruct()
1990 if (!token->IsEOL()) { in ParseStruct()
1991 return Result("extra token " + token->ToOriginalString() + in ParseStruct()
1997 token = tokenizer_->NextToken(); in ParseStruct()
1998 if (!token->IsIdentifier()) in ParseStruct()
2000 if (token->AsString() == "END") in ParseStruct()
2003 if (token->AsString() == struct_name) in ParseStruct()
2006 type::Type* member_type = script_->GetType(token->AsString()); in ParseStruct()
2008 auto t = ToType(token->AsString()); in ParseStruct()
2010 return Result("unknown type '" + token->AsString() + in ParseStruct()
2018 token = tokenizer_->NextToken(); in ParseStruct()
2019 if (token->IsEOL()) in ParseStruct()
2021 if (!token->IsIdentifier()) in ParseStruct()
2024 auto member_name = token->AsString(); in ParseStruct()
2033 token = tokenizer_->NextToken(); in ParseStruct()
2034 while (token->IsIdentifier()) { in ParseStruct()
2035 if (token->AsString() == "OFFSET") { in ParseStruct()
2036 token = tokenizer_->NextToken(); in ParseStruct()
2037 if (token->IsEOL()) in ParseStruct()
2039 if (!token->IsInteger()) in ParseStruct()
2042 m->offset_in_bytes = token->AsInt32(); in ParseStruct()
2043 } else if (token->AsString() == "ARRAY_STRIDE") { in ParseStruct()
2044 token = tokenizer_->NextToken(); in ParseStruct()
2045 if (token->IsEOL()) in ParseStruct()
2047 if (!token->IsInteger()) in ParseStruct()
2052 m->array_stride_in_bytes = token->AsInt32(); in ParseStruct()
2053 } else if (token->AsString() == "MATRIX_STRIDE") { in ParseStruct()
2054 token = tokenizer_->NextToken(); in ParseStruct()
2055 if (token->IsEOL()) in ParseStruct()
2057 if (!token->IsInteger()) in ParseStruct()
2062 m->matrix_stride_in_bytes = token->AsInt32(); in ParseStruct()
2064 return Result("unknown param '" + token->AsString() + in ParseStruct()
2068 token = tokenizer_->NextToken(); in ParseStruct()
2071 if (!token->IsEOL()) in ParseStruct()
2079 auto token = tokenizer_->NextToken(); in ParseBuffer() local
2080 if (!token->IsIdentifier()) in ParseBuffer()
2083 auto name = token->AsString(); in ParseBuffer()
2087 token = tokenizer_->NextToken(); in ParseBuffer()
2088 if (!token->IsIdentifier()) in ParseBuffer()
2092 auto& cmd = token->AsString(); in ParseBuffer()
2100 token = tokenizer_->NextToken(); in ParseBuffer()
2101 if (!token->IsIdentifier()) in ParseBuffer()
2106 auto type = script_->ParseType(token->AsString()); in ParseBuffer()
2114 token = tokenizer_->PeekNextToken(); in ParseBuffer()
2115 while (token->IsIdentifier()) { in ParseBuffer()
2116 if (token->AsString() == "MIP_LEVELS") { in ParseBuffer()
2118 token = tokenizer_->NextToken(); in ParseBuffer()
2120 if (!token->IsInteger()) in ParseBuffer()
2123 buffer->SetMipLevels(token->AsUint32()); in ParseBuffer()
2124 } else if (token->AsString() == "FILE") { in ParseBuffer()
2130 } else if (token->AsString() == "SAMPLES") { in ParseBuffer()
2132 token = tokenizer_->NextToken(); in ParseBuffer()
2133 if (!token->IsInteger()) in ParseBuffer()
2136 const uint32_t samples = token->AsUint32(); in ParseBuffer()
2138 return Result("invalid sample count: " + token->ToOriginalString()); in ParseBuffer()
2144 token = tokenizer_->PeekNextToken(); in ParseBuffer()
2159 auto token = tokenizer_->NextToken(); in ParseImage() local
2160 if (!token->IsIdentifier()) in ParseImage()
2163 auto name = token->AsString(); in ParseImage()
2173 token = tokenizer_->PeekNextToken(); in ParseImage()
2174 while (token->IsIdentifier()) { in ParseImage()
2175 if (token->AsString() == "FILL" || token->AsString() == "SERIES_FROM" || in ParseImage()
2176 token->AsString() == "DATA") { in ParseImage()
2182 if (token->AsString() == "DATA_TYPE") { in ParseImage()
2183 token = tokenizer_->NextToken(); in ParseImage()
2184 if (!token->IsIdentifier()) in ParseImage()
2187 auto type = script_->ParseType(token->AsString()); in ParseImage()
2193 auto new_type = ToType(token->AsString()); in ParseImage()
2195 return Result("invalid data type '" + token->AsString() + in ParseImage()
2204 } else if (token->AsString() == "FORMAT") { in ParseImage()
2205 token = tokenizer_->NextToken(); in ParseImage()
2206 if (!token->IsIdentifier()) in ParseImage()
2209 auto type = script_->ParseType(token->AsString()); in ParseImage()
2216 } else if (token->AsString() == "MIP_LEVELS") { in ParseImage()
2217 token = tokenizer_->NextToken(); in ParseImage()
2219 if (!token->IsInteger()) in ParseImage()
2222 buffer->SetMipLevels(token->AsUint32()); in ParseImage()
2223 } else if (token->AsString() == "DIM_1D") { in ParseImage()
2225 } else if (token->AsString() == "DIM_2D") { in ParseImage()
2227 } else if (token->AsString() == "DIM_3D") { in ParseImage()
2229 } else if (token->AsString() == "WIDTH") { in ParseImage()
2230 token = tokenizer_->NextToken(); in ParseImage()
2231 if (!token->IsInteger() || token->AsUint32() == 0) in ParseImage()
2234 buffer->SetWidth(token->AsUint32()); in ParseImage()
2236 } else if (token->AsString() == "HEIGHT") { in ParseImage()
2237 token = tokenizer_->NextToken(); in ParseImage()
2238 if (!token->IsInteger() || token->AsUint32() == 0) in ParseImage()
2241 buffer->SetHeight(token->AsUint32()); in ParseImage()
2243 } else if (token->AsString() == "DEPTH") { in ParseImage()
2244 token = tokenizer_->NextToken(); in ParseImage()
2245 if (!token->IsInteger() || token->AsUint32() == 0) in ParseImage()
2248 buffer->SetDepth(token->AsUint32()); in ParseImage()
2250 } else if (token->AsString() == "SAMPLES") { in ParseImage()
2251 token = tokenizer_->NextToken(); in ParseImage()
2252 if (!token->IsInteger()) in ParseImage()
2255 const uint32_t samples = token->AsUint32(); in ParseImage()
2257 return Result("invalid sample count: " + token->ToOriginalString()); in ParseImage()
2262 token->ToOriginalString()); in ParseImage()
2264 token = tokenizer_->PeekNextToken(); in ParseImage()
2283 token = tokenizer_->NextToken(); in ParseImage()
2284 if (token->IsIdentifier()) { in ParseImage()
2285 if (token->AsString() == "DATA") { in ParseImage()
2296 } else if (token->AsString() == "FILL") { in ParseImage()
2300 } else if (token->AsString() == "SERIES_FROM") { in ParseImage()
2305 return Result("unexpected IMAGE token: " + token->AsString()); in ParseImage()
2307 } else if (!token->IsEOL() && !token->IsEOS()) { in ParseImage()
2308 return Result("unexpected IMAGE token: " + token->ToOriginalString()); in ParseImage()
2319 auto token = tokenizer_->NextToken(); in ParseBufferInitializer() local
2320 if (!token->IsIdentifier()) in ParseBufferInitializer()
2323 auto type = script_->ParseType(token->AsString()); in ParseBufferInitializer()
2329 auto new_type = ToType(token->AsString()); in ParseBufferInitializer()
2331 return Result("invalid data type '" + token->AsString() + "' provided"); in ParseBufferInitializer()
2340 token = tokenizer_->NextToken(); in ParseBufferInitializer()
2341 if (!token->IsIdentifier()) in ParseBufferInitializer()
2344 if (token->AsString() == "STD140") { in ParseBufferInitializer()
2346 token = tokenizer_->NextToken(); in ParseBufferInitializer()
2347 } else if (token->AsString() == "STD430") { in ParseBufferInitializer()
2349 token = tokenizer_->NextToken(); in ParseBufferInitializer()
2352 if (!token->IsIdentifier()) in ParseBufferInitializer()
2355 if (token->AsString() == "SIZE") in ParseBufferInitializer()
2357 if (token->AsString() == "WIDTH") { in ParseBufferInitializer()
2358 token = tokenizer_->NextToken(); in ParseBufferInitializer()
2359 if (!token->IsInteger()) in ParseBufferInitializer()
2361 const uint32_t width = token->AsUint32(); in ParseBufferInitializer()
2367 token = tokenizer_->NextToken(); in ParseBufferInitializer()
2368 if (token->AsString() != "HEIGHT") in ParseBufferInitializer()
2370 token = tokenizer_->NextToken(); in ParseBufferInitializer()
2371 if (!token->IsInteger()) in ParseBufferInitializer()
2373 const uint32_t height = token->AsUint32(); in ParseBufferInitializer()
2378 token = tokenizer_->NextToken(); in ParseBufferInitializer()
2381 if (token->AsString() == "FILL") in ParseBufferInitializer()
2383 if (token->AsString() == "SERIES_FROM") in ParseBufferInitializer()
2387 if (token->AsString() == "DATA") in ParseBufferInitializer()
2394 auto token = tokenizer_->NextToken(); in ParseBufferInitializerSize() local
2395 if (token->IsEOS() || token->IsEOL()) in ParseBufferInitializerSize()
2397 if (!token->IsInteger()) in ParseBufferInitializerSize()
2400 uint32_t size_in_items = token->AsUint32(); in ParseBufferInitializerSize()
2403 token = tokenizer_->NextToken(); in ParseBufferInitializerSize()
2404 if (!token->IsIdentifier()) in ParseBufferInitializerSize()
2407 if (token->AsString() == "FILL") in ParseBufferInitializerSize()
2409 if (token->AsString() == "SERIES_FROM") in ParseBufferInitializerSize()
2411 if (token->AsString() == "FILE") in ParseBufferInitializerSize()
2419 auto token = tokenizer_->NextToken(); in ParseBufferInitializerFill() local
2420 if (token->IsEOS() || token->IsEOL()) in ParseBufferInitializerFill()
2422 if (!token->IsInteger() && !token->IsDouble()) in ParseBufferInitializerFill()
2435 values[i].SetDoubleValue(token->AsDouble()); in ParseBufferInitializerFill()
2437 values[i].SetIntValue(token->AsUint64()); in ParseBufferInitializerFill()
2448 auto token = tokenizer_->NextToken(); in ParseBufferInitializerSeries() local
2449 if (token->IsEOS() || token->IsEOL()) in ParseBufferInitializerSeries()
2451 if (!token->IsInteger() && !token->IsDouble()) in ParseBufferInitializerSeries()
2465 counter.SetDoubleValue(token->AsDouble()); in ParseBufferInitializerSeries()
2467 counter.SetIntValue(token->AsUint64()); in ParseBufferInitializerSeries()
2470 token = tokenizer_->NextToken(); in ParseBufferInitializerSeries()
2471 if (!token->IsIdentifier()) in ParseBufferInitializerSeries()
2473 if (token->AsString() != "INC_BY") in ParseBufferInitializerSeries()
2476 token = tokenizer_->NextToken(); in ParseBufferInitializerSeries()
2477 if (token->IsEOS() || token->IsEOL()) in ParseBufferInitializerSeries()
2479 if (!token->IsInteger() && !token->IsDouble()) in ParseBufferInitializerSeries()
2489 counter.SetDoubleValue(value + token->AsDouble()); in ParseBufferInitializerSeries()
2493 counter.SetIntValue(value + token->AsUint64()); in ParseBufferInitializerSeries()
2513 auto token = tokenizer_->NextToken(); in ParseBufferInitializerFile() local
2515 if (!token->IsIdentifier()) in ParseBufferInitializerFile()
2520 if (token->AsString() == "TEXT") { in ParseBufferInitializerFile()
2522 token = tokenizer_->NextToken(); in ParseBufferInitializerFile()
2523 } else if (token->AsString() == "BINARY") { in ParseBufferInitializerFile()
2525 token = tokenizer_->NextToken(); in ParseBufferInitializerFile()
2526 } else if (token->AsString() == "PNG") { in ParseBufferInitializerFile()
2527 token = tokenizer_->NextToken(); in ParseBufferInitializerFile()
2530 if (!token->IsIdentifier()) in ParseBufferInitializerFile()
2537 Result r = delegate_->LoadBufferData(token->AsString(), file_type, &info); in ParseBufferInitializerFile()
2567 auto token = tokenizer_->NextToken(); in ParseRun() local
2568 if (!token->IsIdentifier()) in ParseRun()
2573 auto* pipeline = script_->GetPipeline(token->AsString()); in ParseRun()
2575 return Result("unknown pipeline for RUN command: " + token->AsString()); in ParseRun()
2577 token = tokenizer_->NextToken(); in ParseRun()
2578 if (token->IsEOL() || token->IsEOS()) in ParseRun()
2581 if (token->IsInteger()) { in ParseRun()
2587 cmd->SetX(token->AsUint32()); in ParseRun()
2589 token = tokenizer_->NextToken(); in ParseRun()
2590 if (!token->IsInteger()) { in ParseRun()
2592 token->ToOriginalString()); in ParseRun()
2594 cmd->SetY(token->AsUint32()); in ParseRun()
2596 token = tokenizer_->NextToken(); in ParseRun()
2597 if (!token->IsInteger()) { in ParseRun()
2599 token->ToOriginalString()); in ParseRun()
2601 cmd->SetZ(token->AsUint32()); in ParseRun()
2607 if (!token->IsIdentifier()) in ParseRun()
2608 return Result("invalid token in RUN command: " + token->ToOriginalString()); in ParseRun()
2610 if (token->AsString() == "DRAW_RECT") { in ParseRun()
2620 token = tokenizer_->NextToken(); in ParseRun()
2621 if (token->IsEOS() || token->IsEOL()) in ParseRun()
2624 if (!token->IsIdentifier() || token->AsString() != "POS") { in ParseRun()
2625 return Result("invalid token in RUN command: " + in ParseRun()
2626 token->ToOriginalString() + "; expected POS"); in ParseRun()
2629 token = tokenizer_->NextToken(); in ParseRun()
2630 if (!token->IsInteger()) in ParseRun()
2638 Result r = token->ConvertToDouble(); in ParseRun()
2641 cmd->SetX(token->AsFloat()); in ParseRun()
2643 token = tokenizer_->NextToken(); in ParseRun()
2644 if (!token->IsInteger()) in ParseRun()
2647 r = token->ConvertToDouble(); in ParseRun()
2650 cmd->SetY(token->AsFloat()); in ParseRun()
2652 token = tokenizer_->NextToken(); in ParseRun()
2653 if (!token->IsIdentifier() || token->AsString() != "SIZE") { in ParseRun()
2654 return Result("invalid token in RUN command: " + in ParseRun()
2655 token->ToOriginalString() + "; expected SIZE"); in ParseRun()
2658 token = tokenizer_->NextToken(); in ParseRun()
2659 if (!token->IsInteger()) in ParseRun()
2662 r = token->ConvertToDouble(); in ParseRun()
2665 cmd->SetWidth(token->AsFloat()); in ParseRun()
2667 token = tokenizer_->NextToken(); in ParseRun()
2668 if (!token->IsInteger()) in ParseRun()
2671 r = token->ConvertToDouble(); in ParseRun()
2674 cmd->SetHeight(token->AsFloat()); in ParseRun()
2680 if (token->AsString() == "DRAW_GRID") { in ParseRun()
2690 token = tokenizer_->NextToken(); in ParseRun()
2691 if (token->IsEOS() || token->IsEOL()) in ParseRun()
2694 if (!token->IsIdentifier() || token->AsString() != "POS") { in ParseRun()
2695 return Result("invalid token in RUN command: " + in ParseRun()
2696 token->ToOriginalString() + "; expected POS"); in ParseRun()
2699 token = tokenizer_->NextToken(); in ParseRun()
2700 if (!token->IsInteger()) in ParseRun()
2707 Result r = token->ConvertToDouble(); in ParseRun()
2710 cmd->SetX(token->AsFloat()); in ParseRun()
2712 token = tokenizer_->NextToken(); in ParseRun()
2713 if (!token->IsInteger()) in ParseRun()
2716 r = token->ConvertToDouble(); in ParseRun()
2719 cmd->SetY(token->AsFloat()); in ParseRun()
2721 token = tokenizer_->NextToken(); in ParseRun()
2722 if (!token->IsIdentifier() || token->AsString() != "SIZE") { in ParseRun()
2723 return Result("invalid token in RUN command: " + in ParseRun()
2724 token->ToOriginalString() + "; expected SIZE"); in ParseRun()
2727 token = tokenizer_->NextToken(); in ParseRun()
2728 if (!token->IsInteger()) in ParseRun()
2731 r = token->ConvertToDouble(); in ParseRun()
2734 cmd->SetWidth(token->AsFloat()); in ParseRun()
2736 token = tokenizer_->NextToken(); in ParseRun()
2737 if (!token->IsInteger()) in ParseRun()
2740 r = token->ConvertToDouble(); in ParseRun()
2743 cmd->SetHeight(token->AsFloat()); in ParseRun()
2745 token = tokenizer_->NextToken(); in ParseRun()
2746 if (!token->IsIdentifier() || token->AsString() != "CELLS") { in ParseRun()
2747 return Result("invalid token in RUN command: " + in ParseRun()
2748 token->ToOriginalString() + "; expected CELLS"); in ParseRun()
2751 token = tokenizer_->NextToken(); in ParseRun()
2752 if (!token->IsInteger()) in ParseRun()
2755 cmd->SetColumns(token->AsUint32()); in ParseRun()
2757 token = tokenizer_->NextToken(); in ParseRun()
2758 if (!token->IsInteger()) in ParseRun()
2761 cmd->SetRows(token->AsUint32()); in ParseRun()
2767 if (token->AsString() == "DRAW_ARRAY") { in ParseRun()
2774 token = tokenizer_->NextToken(); in ParseRun()
2775 if (!token->IsIdentifier() || token->AsString() != "AS") in ParseRun()
2778 token = tokenizer_->NextToken(); in ParseRun()
2779 if (!token->IsIdentifier()) { in ParseRun()
2781 token->ToOriginalString()); in ParseRun()
2784 Topology topo = NameToTopology(token->AsString()); in ParseRun()
2786 return Result("invalid topology for RUN command: " + token->AsString()); in ParseRun()
2794 token = tokenizer_->PeekNextToken(); in ParseRun()
2796 while (!token->IsEOS() && !token->IsEOL()) { in ParseRun()
2797 token = tokenizer_->NextToken(); in ParseRun()
2799 if (!token->IsIdentifier()) in ParseRun()
2802 if (token->AsString() == "INDEXED") { in ParseRun()
2809 } else if (token->AsString() == "START_IDX") { in ParseRun()
2810 token = tokenizer_->NextToken(); in ParseRun()
2811 if (!token->IsInteger()) { in ParseRun()
2813 token->ToOriginalString()); in ParseRun()
2815 if (token->AsInt32() < 0) in ParseRun()
2817 start_idx = token->AsUint32(); in ParseRun()
2818 } else if (token->AsString() == "COUNT") { in ParseRun()
2819 token = tokenizer_->NextToken(); in ParseRun()
2820 if (!token->IsInteger()) { in ParseRun()
2822 token->ToOriginalString()); in ParseRun()
2824 if (token->AsInt32() <= 0) in ParseRun()
2827 count = token->AsUint32(); in ParseRun()
2828 } else if (token->AsString() == "INSTANCE_COUNT") { in ParseRun()
2829 token = tokenizer_->NextToken(); in ParseRun()
2830 if (!token->IsInteger()) { in ParseRun()
2832 token->ToOriginalString()); in ParseRun()
2834 if (token->AsInt32() <= 0) in ParseRun()
2837 instance_count = token->AsUint32(); in ParseRun()
2838 } else if (token->AsString() == "START_INSTANCE") { in ParseRun()
2839 token = tokenizer_->NextToken(); in ParseRun()
2840 if (!token->IsInteger()) { in ParseRun()
2842 token->ToOriginalString()); in ParseRun()
2844 if (token->AsInt32() < 0) in ParseRun()
2846 start_instance = token->AsUint32(); in ParseRun()
2849 token->ToOriginalString()); in ParseRun()
2852 token = tokenizer_->PeekNextToken(); in ParseRun()
2887 return Result("invalid token in RUN command: " + token->AsString()); in ParseRun()
2907 for (auto token = tokenizer_->NextToken();; token = tokenizer_->NextToken()) { in ParseDebug() local
2908 if (token->IsEOL()) in ParseDebug()
2910 if (token->IsEOS()) in ParseDebug()
2912 if (token->IsIdentifier() && token->AsString() == "END") in ParseDebug()
2915 if (token->AsString() == "THREAD") { in ParseDebug()
2921 return Result("invalid token in DEBUG command: " + token->AsString()); in ParseDebug()
2931 auto token = tokenizer_->NextToken(); in ParseDebugThread() local
2932 if (token->AsString() == "GLOBAL_INVOCATION_ID") { in ParseDebugThread()
2939 token = tokenizer_->NextToken(); in ParseDebugThread()
2940 if (!token->IsInteger()) in ParseDebugThread()
2942 invocation[i] = token->AsUint32(); in ParseDebugThread()
2953 } else if (token->AsString() == "VERTEX_INDEX") { in ParseDebugThread()
2960 token = tokenizer_->NextToken(); in ParseDebugThread()
2961 if (!token->IsInteger()) in ParseDebugThread()
2963 auto vertex_index = token->AsUint32(); in ParseDebugThread()
2972 } else if (token->AsString() == "FRAGMENT_WINDOW_SPACE_POSITION") { in ParseDebugThread()
2979 token = tokenizer_->NextToken(); in ParseDebugThread()
2980 if (!token->IsInteger()) in ParseDebugThread()
2982 auto x = token->AsUint32(); in ParseDebugThread()
2984 token = tokenizer_->NextToken(); in ParseDebugThread()
2985 if (!token->IsInteger()) in ParseDebugThread()
2987 auto y = token->AsUint32(); in ParseDebugThread()
3004 for (auto token = tokenizer_->NextToken();; token = tokenizer_->NextToken()) { in ParseDebugThreadBody() local
3005 if (token->IsEOL()) { in ParseDebugThreadBody()
3008 if (token->IsEOS()) { in ParseDebugThreadBody()
3011 if (token->IsIdentifier() && token->AsString() == "END") { in ParseDebugThreadBody()
3015 if (token->AsString() == "EXPECT") { in ParseDebugThreadBody()
3016 token = tokenizer_->NextToken(); in ParseDebugThreadBody()
3017 if (token->AsString() == "LOCATION") { in ParseDebugThreadBody()
3019 token = tokenizer_->NextToken(); in ParseDebugThreadBody()
3020 if (!token->IsString()) { in ParseDebugThreadBody()
3023 location.file = token->AsString(); in ParseDebugThreadBody()
3025 token = tokenizer_->NextToken(); in ParseDebugThreadBody()
3026 if (!token->IsInteger()) { in ParseDebugThreadBody()
3029 location.line = token->AsUint32(); in ParseDebugThreadBody()
3032 token = tokenizer_->NextToken(); in ParseDebugThreadBody()
3033 if (token->IsString()) { in ParseDebugThreadBody()
3034 line_source = token->AsString(); in ParseDebugThreadBody()
3038 } else if (token->AsString() == "LOCAL") { in ParseDebugThreadBody()
3058 } else if (token->AsString() == "CALLSTACK") { in ParseDebugThreadBody()
3092 } else if (token->AsString() == "STEP_IN") { in ParseDebugThreadBody()
3094 } else if (token->AsString() == "STEP_OUT") { in ParseDebugThreadBody()
3096 } else if (token->AsString() == "STEP_OVER") { in ParseDebugThreadBody()
3098 } else if (token->AsString() == "CONTINUE") { in ParseDebugThreadBody()
3101 return Result("invalid token in THREAD block: " + token->AsString()); in ParseDebugThreadBody()
3108 auto token = tokenizer_->NextToken(); in ParseClear() local
3109 if (!token->IsIdentifier()) in ParseClear()
3114 auto* pipeline = script_->GetPipeline(token->AsString()); in ParseClear()
3116 return Result("unknown pipeline for CLEAR command: " + token->AsString()); in ParseClear()
3132 auto token = tokenizer_->NextToken(); in ParseValues() local
3135 while (!token->IsEOL() && !token->IsEOS()) { in ParseValues()
3145 if (!token->IsInteger() && !token->IsDouble() && !token->IsHex()) { in ParseValues()
3147 " command: " + token->ToOriginalString()); in ParseValues()
3150 Result r = token->ConvertToDouble(); in ParseValues()
3154 v.SetDoubleValue(token->AsDouble()); in ParseValues()
3156 if (!token->IsInteger() && !token->IsHex()) { in ParseValues()
3158 " command: " + token->ToOriginalString()); in ParseValues()
3161 uint64_t val = token->IsHex() ? token->AsHex() : token->AsUint64(); in ParseValues()
3169 token = tokenizer_->NextToken(); in ParseValues()
3175 auto token = tokenizer_->NextToken(); in ParseExpect() local
3176 if (!token->IsIdentifier()) in ParseExpect()
3179 if (token->AsString() == "IDX") in ParseExpect()
3181 if (token->AsString() == "EQ_BUFFER") in ParseExpect()
3183 if (token->AsString() == "RMSE_BUFFER") in ParseExpect()
3185 if (token->AsString() == "EQ_HISTOGRAM_EMD_BUFFER") { in ParseExpect()
3191 auto* buffer = script_->GetBuffer(token->AsString()); in ParseExpect()
3194 token->AsString()); in ParseExpect()
3196 token = tokenizer_->NextToken(); in ParseExpect()
3198 if (!token->IsIdentifier()) in ParseExpect()
3201 if (token->AsString() == "EQ_BUFFER" || token->AsString() == "RMSE_BUFFER" || in ParseExpect()
3202 token->AsString() == "EQ_HISTOGRAM_EMD_BUFFER") { in ParseExpect()
3203 auto type = token->AsString(); in ParseExpect()
3205 token = tokenizer_->NextToken(); in ParseExpect()
3206 if (!token->IsIdentifier()) in ParseExpect()
3209 auto* buffer_2 = script_->GetBuffer(token->AsString()); in ParseExpect()
3212 " command: " + token->AsString()); in ParseExpect()
3238 token = tokenizer_->NextToken(); in ParseExpect()
3239 if (!token->IsIdentifier() && token->AsString() == "TOLERANCE") in ParseExpect()
3242 token = tokenizer_->NextToken(); in ParseExpect()
3243 if (!token->IsInteger() && !token->IsDouble()) in ParseExpect()
3246 Result r = token->ConvertToDouble(); in ParseExpect()
3250 cmd->SetTolerance(token->AsFloat()); in ParseExpect()
3254 token = tokenizer_->NextToken(); in ParseExpect()
3255 if (!token->IsIdentifier() && token->AsString() == "TOLERANCE") in ParseExpect()
3258 token = tokenizer_->NextToken(); in ParseExpect()
3259 if (!token->IsInteger() && !token->IsDouble()) in ParseExpect()
3262 Result r = token->ConvertToDouble(); in ParseExpect()
3266 cmd->SetTolerance(token->AsFloat()); in ParseExpect()
3275 if (token->AsString() != "IDX") in ParseExpect()
3278 token = tokenizer_->NextToken(); in ParseExpect()
3279 if (!token->IsInteger() || token->AsInt32() < 0) in ParseExpect()
3281 token->ConvertToDouble(); in ParseExpect()
3282 float x = token->AsFloat(); in ParseExpect()
3286 token = tokenizer_->NextToken(); in ParseExpect()
3287 if (token->IsInteger()) { in ParseExpect()
3290 if (token->AsInt32() < 0) in ParseExpect()
3292 token->ConvertToDouble(); in ParseExpect()
3293 y = token->AsFloat(); in ParseExpect()
3295 token = tokenizer_->NextToken(); in ParseExpect()
3298 if (token->IsIdentifier() && token->AsString() == "SIZE") { in ParseExpect()
3308 token = tokenizer_->NextToken(); in ParseExpect()
3309 if (!token->IsInteger() || token->AsInt32() <= 0) in ParseExpect()
3311 token->ConvertToDouble(); in ParseExpect()
3312 probe->SetWidth(token->AsFloat()); in ParseExpect()
3314 token = tokenizer_->NextToken(); in ParseExpect()
3315 if (!token->IsInteger() || token->AsInt32() <= 0) in ParseExpect()
3317 token->ConvertToDouble(); in ParseExpect()
3318 probe->SetHeight(token->AsFloat()); in ParseExpect()
3320 token = tokenizer_->NextToken(); in ParseExpect()
3321 if (!token->IsIdentifier()) { in ParseExpect()
3322 return Result("invalid token in EXPECT command:" + in ParseExpect()
3323 token->ToOriginalString()); in ParseExpect()
3326 if (token->AsString() == "EQ_RGBA") { in ParseExpect()
3328 } else if (token->AsString() != "EQ_RGB") { in ParseExpect()
3330 token->ToOriginalString()); in ParseExpect()
3333 token = tokenizer_->NextToken(); in ParseExpect()
3334 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) in ParseExpect()
3336 token->ConvertToDouble(); in ParseExpect()
3337 probe->SetR(token->AsFloat() / 255.f); in ParseExpect()
3339 token = tokenizer_->NextToken(); in ParseExpect()
3340 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) in ParseExpect()
3342 token->ConvertToDouble(); in ParseExpect()
3343 probe->SetG(token->AsFloat() / 255.f); in ParseExpect()
3345 token = tokenizer_->NextToken(); in ParseExpect()
3346 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) in ParseExpect()
3348 token->ConvertToDouble(); in ParseExpect()
3349 probe->SetB(token->AsFloat() / 255.f); in ParseExpect()
3352 token = tokenizer_->NextToken(); in ParseExpect()
3353 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) in ParseExpect()
3355 token->ConvertToDouble(); in ParseExpect()
3356 probe->SetA(token->AsFloat() / 255.f); in ParseExpect()
3359 token = tokenizer_->NextToken(); in ParseExpect()
3360 if (token->IsIdentifier() && token->AsString() == "TOLERANCE") { in ParseExpect()
3382 token = tokenizer_->NextToken(); in ParseExpect()
3385 if (!token->IsEOL() && !token->IsEOS()) { in ParseExpect()
3387 token->ToOriginalString()); in ParseExpect()
3398 if (token->IsIdentifier() && token->AsString() == "TOLERANCE") { in ParseExpect()
3412 token = tokenizer_->NextToken(); in ParseExpect()
3415 if (!token->IsIdentifier() || !IsComparator(token->AsString())) { in ParseExpect()
3416 return Result("unexpected token in EXPECT command: " + in ParseExpect()
3417 token->ToOriginalString()); in ParseExpect()
3423 auto cmp = ToComparator(token->AsString()); in ParseExpect()
3450 auto token = tokenizer_->NextToken(); in ParseCopy() local
3451 if (token->IsEOL() || token->IsEOS()) in ParseCopy()
3453 if (!token->IsIdentifier()) in ParseCopy()
3458 auto name = token->AsString(); in ParseCopy()
3466 token = tokenizer_->NextToken(); in ParseCopy()
3467 if (token->IsEOL() || token->IsEOS()) in ParseCopy()
3469 if (!token->IsIdentifier()) in ParseCopy()
3472 name = token->AsString(); in ParseCopy()
3476 token = tokenizer_->NextToken(); in ParseCopy()
3477 if (token->IsEOL() || token->IsEOS()) in ParseCopy()
3479 if (!token->IsIdentifier()) in ParseCopy()
3482 name = token->AsString(); in ParseCopy()
3503 auto token = tokenizer_->NextToken(); in ParseClearColor() local
3504 if (!token->IsIdentifier()) in ParseClearColor()
3509 auto* pipeline = script_->GetPipeline(token->AsString()); in ParseClearColor()
3512 token->AsString()); in ParseClearColor()
3521 token = tokenizer_->NextToken(); in ParseClearColor()
3522 if (token->IsEOL() || token->IsEOS()) in ParseClearColor()
3524 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) { in ParseClearColor()
3526 token->ToOriginalString()); in ParseClearColor()
3528 token->ConvertToDouble(); in ParseClearColor()
3529 cmd->SetR(token->AsFloat() / 255.f); in ParseClearColor()
3531 token = tokenizer_->NextToken(); in ParseClearColor()
3532 if (token->IsEOL() || token->IsEOS()) in ParseClearColor()
3534 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) { in ParseClearColor()
3536 token->ToOriginalString()); in ParseClearColor()
3538 token->ConvertToDouble(); in ParseClearColor()
3539 cmd->SetG(token->AsFloat() / 255.f); in ParseClearColor()
3541 token = tokenizer_->NextToken(); in ParseClearColor()
3542 if (token->IsEOL() || token->IsEOS()) in ParseClearColor()
3544 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) { in ParseClearColor()
3546 token->ToOriginalString()); in ParseClearColor()
3548 token->ConvertToDouble(); in ParseClearColor()
3549 cmd->SetB(token->AsFloat() / 255.f); in ParseClearColor()
3551 token = tokenizer_->NextToken(); in ParseClearColor()
3552 if (token->IsEOL() || token->IsEOS()) in ParseClearColor()
3554 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) { in ParseClearColor()
3556 token->ToOriginalString()); in ParseClearColor()
3558 token->ConvertToDouble(); in ParseClearColor()
3559 cmd->SetA(token->AsFloat() / 255.f); in ParseClearColor()
3566 auto token = tokenizer_->NextToken(); in ParseClearDepth() local
3567 if (!token->IsIdentifier()) in ParseClearDepth()
3572 auto* pipeline = script_->GetPipeline(token->AsString()); in ParseClearDepth()
3575 token->AsString()); in ParseClearDepth()
3584 token = tokenizer_->NextToken(); in ParseClearDepth()
3585 if (token->IsEOL() || token->IsEOS()) in ParseClearDepth()
3587 if (!token->IsDouble()) { in ParseClearDepth()
3589 token->ToOriginalString()); in ParseClearDepth()
3591 cmd->SetValue(token->AsFloat()); in ParseClearDepth()
3598 auto token = tokenizer_->NextToken(); in ParseClearStencil() local
3599 if (!token->IsIdentifier()) in ParseClearStencil()
3604 auto* pipeline = script_->GetPipeline(token->AsString()); in ParseClearStencil()
3607 token->AsString()); in ParseClearStencil()
3616 token = tokenizer_->NextToken(); in ParseClearStencil()
3617 if (token->IsEOL() || token->IsEOS()) in ParseClearStencil()
3619 if (!token->IsInteger() || token->AsInt32() < 0 || token->AsInt32() > 255) { in ParseClearStencil()
3621 token->ToOriginalString()); in ParseClearStencil()
3623 cmd->SetValue(token->AsUint32()); in ParseClearStencil()
3630 auto token = tokenizer_->NextToken(); in ParseDeviceFeature() local
3631 if (token->IsEOS() || token->IsEOL()) in ParseDeviceFeature()
3633 if (!token->IsIdentifier()) in ParseDeviceFeature()
3635 if (!script_->IsKnownFeature(token->AsString())) in ParseDeviceFeature()
3638 script_->AddRequiredFeature(token->AsString()); in ParseDeviceFeature()
3644 auto token = tokenizer_->NextToken(); in ParseRepeat() local
3645 if (token->IsEOL() || token->IsEOL()) in ParseRepeat()
3647 if (!token->IsInteger()) { in ParseRepeat()
3649 token->ToOriginalString()); in ParseRepeat()
3651 if (token->AsInt32() <= 0) in ParseRepeat()
3654 uint32_t count = token->AsUint32(); in ParseRepeat()
3659 for (token = tokenizer_->NextToken(); !token->IsEOS(); in ParseRepeat()
3660 token = tokenizer_->NextToken()) { in ParseRepeat()
3661 if (token->IsEOL()) in ParseRepeat()
3663 if (!token->IsIdentifier()) in ParseRepeat()
3666 std::string tok = token->AsString(); in ParseRepeat()
3670 return Result("unknown token: " + tok); in ParseRepeat()
3676 if (!token->IsIdentifier() || token->AsString() != "END") in ParseRepeat()
3689 auto token = tokenizer_->NextToken(); in ParseDerivePipelineBlock() local
3690 if (!token->IsIdentifier() || token->AsString() == "FROM") in ParseDerivePipelineBlock()
3693 std::string name = token->AsString(); in ParseDerivePipelineBlock()
3697 token = tokenizer_->NextToken(); in ParseDerivePipelineBlock()
3698 if (!token->IsIdentifier() || token->AsString() != "FROM") in ParseDerivePipelineBlock()
3701 token = tokenizer_->NextToken(); in ParseDerivePipelineBlock()
3702 if (!token->IsIdentifier()) in ParseDerivePipelineBlock()
3705 Pipeline* parent = script_->GetPipeline(token->AsString()); in ParseDerivePipelineBlock()
3720 auto token = tokenizer_->NextToken(); in ParseDeviceExtension() local
3721 if (token->IsEOL() || token->IsEOS()) in ParseDeviceExtension()
3723 if (!token->IsIdentifier()) { in ParseDeviceExtension()
3725 token->ToOriginalString()); in ParseDeviceExtension()
3728 script_->AddRequiredDeviceExtension(token->AsString()); in ParseDeviceExtension()
3734 auto token = tokenizer_->NextToken(); in ParseInstanceExtension() local
3735 if (token->IsEOL() || token->IsEOS()) in ParseInstanceExtension()
3737 if (!token->IsIdentifier()) { in ParseInstanceExtension()
3739 token->ToOriginalString()); in ParseInstanceExtension()
3742 script_->AddRequiredInstanceExtension(token->AsString()); in ParseInstanceExtension()
3748 auto token = tokenizer_->NextToken(); in ParseSet() local
3749 if (!token->IsIdentifier() || token->AsString() != "ENGINE_DATA") in ParseSet()
3752 token = tokenizer_->NextToken(); in ParseSet()
3753 if (token->IsEOS() || token->IsEOL()) in ParseSet()
3756 if (!token->IsIdentifier()) in ParseSet()
3757 return Result("SET invalid variable to set: " + token->ToOriginalString()); in ParseSet()
3759 if (token->AsString() != "fence_timeout_ms") in ParseSet()
3760 return Result("SET unknown variable provided: " + token->AsString()); in ParseSet()
3762 token = tokenizer_->NextToken(); in ParseSet()
3763 if (token->IsEOS() || token->IsEOL()) in ParseSet()
3765 if (!token->IsInteger()) in ParseSet()
3768 script_->GetEngineData().fence_timeout_ms = token->AsUint32(); in ParseSet()
3774 auto token = tokenizer_->NextToken(); in ParseSampler() local
3775 if (!token->IsIdentifier()) in ParseSampler()
3776 return Result("invalid token when looking for sampler name"); in ParseSampler()
3779 sampler->SetName(token->AsString()); in ParseSampler()
3781 token = tokenizer_->NextToken(); in ParseSampler()
3782 while (!token->IsEOS() && !token->IsEOL()) { in ParseSampler()
3783 if (!token->IsIdentifier()) in ParseSampler()
3784 return Result("invalid token when looking for sampler parameters"); in ParseSampler()
3786 auto param = token->AsString(); in ParseSampler()
3788 token = tokenizer_->NextToken(); in ParseSampler()
3790 if (!token->IsIdentifier()) in ParseSampler()
3791 return Result("invalid token when looking for MAG_FILTER value"); in ParseSampler()
3793 auto filter = token->AsString(); in ParseSampler()
3802 token = tokenizer_->NextToken(); in ParseSampler()
3804 if (!token->IsIdentifier()) in ParseSampler()
3805 return Result("invalid token when looking for MIN_FILTER value"); in ParseSampler()
3807 auto filter = token->AsString(); in ParseSampler()
3816 token = tokenizer_->NextToken(); in ParseSampler()
3818 if (!token->IsIdentifier()) in ParseSampler()
3819 return Result("invalid token when looking for ADDRESS_MODE_U value"); in ParseSampler()
3821 auto mode_str = token->AsString(); in ParseSampler()
3829 token = tokenizer_->NextToken(); in ParseSampler()
3831 if (!token->IsIdentifier()) in ParseSampler()
3832 return Result("invalid token when looking for ADDRESS_MODE_V value"); in ParseSampler()
3834 auto mode_str = token->AsString(); in ParseSampler()
3842 token = tokenizer_->NextToken(); in ParseSampler()
3844 if (!token->IsIdentifier()) in ParseSampler()
3845 return Result("invalid token when looking for ADDRESS_MODE_W value"); in ParseSampler()
3847 auto mode_str = token->AsString(); in ParseSampler()
3855 token = tokenizer_->NextToken(); in ParseSampler()
3857 if (!token->IsIdentifier()) in ParseSampler()
3858 return Result("invalid token when looking for BORDER_COLOR value"); in ParseSampler()
3860 auto color_str = token->AsString(); in ParseSampler()
3877 token = tokenizer_->NextToken(); in ParseSampler()
3879 if (!token->IsDouble()) in ParseSampler()
3880 return Result("invalid token when looking for MIN_LOD value"); in ParseSampler()
3882 sampler->SetMinLOD(token->AsFloat()); in ParseSampler()
3884 token = tokenizer_->NextToken(); in ParseSampler()
3886 if (!token->IsDouble()) in ParseSampler()
3887 return Result("invalid token when looking for MAX_LOD value"); in ParseSampler()
3889 sampler->SetMaxLOD(token->AsFloat()); in ParseSampler()
3897 token = tokenizer_->NextToken(); in ParseSampler()
3899 if (!token->IsIdentifier()) in ParseSampler()
3902 if (token->AsString() == "on") in ParseSampler()
3904 else if (token->AsString() == "off") in ParseSampler()
3907 return Result("invalid value for COMPARE: " + token->AsString()); in ParseSampler()
3909 token = tokenizer_->NextToken(); in ParseSampler()
3911 if (!token->IsIdentifier()) in ParseSampler()
3914 CompareOp compare_op = StrToCompareOp(token->AsString()); in ParseSampler()
3918 return Result("invalid value for COMPARE_OP: " + token->AsString()); in ParseSampler()
3924 token = tokenizer_->NextToken(); in ParseSampler()
3935 auto token = tokenizer_->PeekNextToken(); in ParseTolerances() local
3936 while (!token->IsEOL() && !token->IsEOS()) { in ParseTolerances()
3937 if (!token->IsInteger() && !token->IsDouble()) in ParseTolerances()
3940 token = tokenizer_->NextToken(); in ParseTolerances()
3941 Result r = token->ConvertToDouble(); in ParseTolerances()
3945 double value = token->AsDouble(); in ParseTolerances()
3946 token = tokenizer_->PeekNextToken(); in ParseTolerances()
3947 if (token->IsIdentifier() && token->AsString() == "%") { in ParseTolerances()
3950 token = tokenizer_->PeekNextToken(); in ParseTolerances()
3960 auto token = tokenizer_->NextToken(); in ParseVirtualFile() local
3961 if (!token->IsIdentifier() && !token->IsString()) in ParseVirtualFile()
3964 auto path = token->AsString(); in ParseVirtualFile()
3972 token = tokenizer_->NextToken(); in ParseVirtualFile()
3973 if (!token->IsIdentifier() || token->AsString() != "END") in ParseVirtualFile()