blob: 0839f83f6938501c9aba027c8a73b37d9e211a46 [file] [log] [blame]
/**
* Copyright 2018 The ANGLE Project Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
* This script is meant to be executed agaisnt the vulkan spec 31.3.3 tables.
* Instructions: Copy all the tables from the HTML source to a plain document
* and add a textarea at the bottom with ID='result'. Execute this JS on load
* of the document and you should have a JSON string in the textarea with the
* mandatory specs included. If the spec changes format / CSS in any way, the
* selectors will need to be modified.
**/
var indexToFeatureMap = [];
var index = 12;
var outputJson = {};
// Map all features to indexes of squares.
$("#features-formats-mandatory-features-subbyte td").each(function() {
$this = $(this);
$this.find("code").each(function() {
if ($(this).text().startsWith("VK_FORMAT_FEATURE")) {
indexToFeatureMap[index--] = $(this).text();
}
});
});
var allTableIds =
["features-formats-mandatory-features-subbyte",
"features-formats-mandatory-features-2byte",
"features-formats-mandatory-features-4byte",
"features-formats-mandatory-features-10bit",
"features-formats-mandatory-features-16bit",
"features-formats-mandatory-features-32bit",
"features-formats-mandatory-features-64bit",
"features-formats-mandatory-features-depth-stencil",
"features-formats-mandatory-features-features-bcn",
"features-formats-mandatory-features-features-etc",
"features-formats-mandatory-features-features-astc"];
for (var i = 0; i < allTableIds.length; i++) {
$("#" + allTableIds[i] + " td").each(function() {
$this = $(this);
$this.find("code").each(function() {
if (!$(this).text().startsWith("VK_FORMAT_FEATURE") &&
$(this).text().startsWith("VK_FORMAT")) {
// Found one vkFormat to features line.
var vkFormat = $(this).text();
var squareIndex = 0;
var features = [];
var skipEntry = false;
$(this).closest("tr").find("td.halign-center").each(function() {
// Find all squares with features.
if ($(this).text() === "✓") {
features.push(indexToFeatureMap[squareIndex]);
}
if ($(this).text() === "†") {
skipEntry = true;
return false; // Break;
}
squareIndex++;
});
if (!skipEntry &&
(features.length > 0)) {
Object.defineProperty(outputJson, vkFormat, {
value: features,
enumerable: true,
readable: true,
writable: false
});
}
}
});
});
}
$("#result").text(JSON.stringify(outputJson));