18-05-26 result
This commit is contained in:
+670
-24
@@ -1,14 +1,313 @@
|
||||
#include "AppConfig.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <iterator>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
std::optional<PresentModeConfig> parsePresentMode(
|
||||
std::string_view text);
|
||||
|
||||
namespace
|
||||
{
|
||||
struct JsonValue
|
||||
{
|
||||
using Object = std::map<std::string, JsonValue>;
|
||||
using Array = std::vector<JsonValue>;
|
||||
|
||||
std::variant<
|
||||
std::nullptr_t,
|
||||
bool,
|
||||
double,
|
||||
std::string,
|
||||
Object,
|
||||
Array> value;
|
||||
};
|
||||
|
||||
class JsonParser
|
||||
{
|
||||
public:
|
||||
explicit JsonParser(std::string_view text)
|
||||
: mText(text)
|
||||
{
|
||||
}
|
||||
|
||||
std::optional<JsonValue> parse()
|
||||
{
|
||||
JsonValue result;
|
||||
if (!parseValue(result))
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
skipWhitespace();
|
||||
if (mPos != mText.size())
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
void skipWhitespace()
|
||||
{
|
||||
while (mPos < mText.size() &&
|
||||
std::isspace(
|
||||
static_cast<unsigned char>(mText[mPos])))
|
||||
{
|
||||
++mPos;
|
||||
}
|
||||
}
|
||||
|
||||
bool consume(char expected)
|
||||
{
|
||||
skipWhitespace();
|
||||
if (mPos >= mText.size() ||
|
||||
mText[mPos] != expected)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
++mPos;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool parseValue(JsonValue& out)
|
||||
{
|
||||
skipWhitespace();
|
||||
if (mPos >= mText.size())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const char c = mText[mPos];
|
||||
if (c == '{')
|
||||
{
|
||||
return parseObject(out);
|
||||
}
|
||||
if (c == '[')
|
||||
{
|
||||
return parseArray(out);
|
||||
}
|
||||
if (c == '"')
|
||||
{
|
||||
std::string s;
|
||||
if (!parseString(s))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
out.value = std::move(s);
|
||||
return true;
|
||||
}
|
||||
if (c == '-' || (c >= '0' && c <= '9'))
|
||||
{
|
||||
return parseNumber(out);
|
||||
}
|
||||
if (mText.substr(mPos, 4) == "true")
|
||||
{
|
||||
mPos += 4;
|
||||
out.value = true;
|
||||
return true;
|
||||
}
|
||||
if (mText.substr(mPos, 5) == "false")
|
||||
{
|
||||
mPos += 5;
|
||||
out.value = false;
|
||||
return true;
|
||||
}
|
||||
if (mText.substr(mPos, 4) == "null")
|
||||
{
|
||||
mPos += 4;
|
||||
out.value = nullptr;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool parseObject(JsonValue& out)
|
||||
{
|
||||
if (!consume('{'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
JsonValue::Object object;
|
||||
skipWhitespace();
|
||||
if (mPos < mText.size() && mText[mPos] == '}')
|
||||
{
|
||||
++mPos;
|
||||
out.value = std::move(object);
|
||||
return true;
|
||||
}
|
||||
|
||||
while (true)
|
||||
{
|
||||
std::string key;
|
||||
if (!parseString(key) || !consume(':'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
JsonValue value;
|
||||
if (!parseValue(value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
object[std::move(key)] = std::move(value);
|
||||
|
||||
skipWhitespace();
|
||||
if (mPos < mText.size() && mText[mPos] == '}')
|
||||
{
|
||||
++mPos;
|
||||
out.value = std::move(object);
|
||||
return true;
|
||||
}
|
||||
if (!consume(','))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool parseArray(JsonValue& out)
|
||||
{
|
||||
if (!consume('['))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
JsonValue::Array array;
|
||||
skipWhitespace();
|
||||
if (mPos < mText.size() && mText[mPos] == ']')
|
||||
{
|
||||
++mPos;
|
||||
out.value = std::move(array);
|
||||
return true;
|
||||
}
|
||||
|
||||
while (true)
|
||||
{
|
||||
JsonValue value;
|
||||
if (!parseValue(value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
array.push_back(std::move(value));
|
||||
|
||||
skipWhitespace();
|
||||
if (mPos < mText.size() && mText[mPos] == ']')
|
||||
{
|
||||
++mPos;
|
||||
out.value = std::move(array);
|
||||
return true;
|
||||
}
|
||||
if (!consume(','))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool parseString(std::string& out)
|
||||
{
|
||||
skipWhitespace();
|
||||
if (mPos >= mText.size() || mText[mPos] != '"')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
++mPos;
|
||||
out.clear();
|
||||
|
||||
while (mPos < mText.size())
|
||||
{
|
||||
const char c = mText[mPos++];
|
||||
if (c == '"')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (c != '\\')
|
||||
{
|
||||
out.push_back(c);
|
||||
continue;
|
||||
}
|
||||
if (mPos >= mText.size())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const char esc = mText[mPos++];
|
||||
switch (esc)
|
||||
{
|
||||
case '"': out.push_back('"'); break;
|
||||
case '\\': out.push_back('\\'); break;
|
||||
case '/': out.push_back('/'); break;
|
||||
case 'b': out.push_back('\b'); break;
|
||||
case 'f': out.push_back('\f'); break;
|
||||
case 'n': out.push_back('\n'); break;
|
||||
case 'r': out.push_back('\r'); break;
|
||||
case 't': out.push_back('\t'); break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool parseNumber(JsonValue& out)
|
||||
{
|
||||
skipWhitespace();
|
||||
const size_t start = mPos;
|
||||
|
||||
if (mPos < mText.size() && mText[mPos] == '-')
|
||||
{
|
||||
++mPos;
|
||||
}
|
||||
while (mPos < mText.size() &&
|
||||
mText[mPos] >= '0' && mText[mPos] <= '9')
|
||||
{
|
||||
++mPos;
|
||||
}
|
||||
if (mPos < mText.size() && mText[mPos] == '.')
|
||||
{
|
||||
++mPos;
|
||||
while (mPos < mText.size() &&
|
||||
mText[mPos] >= '0' && mText[mPos] <= '9')
|
||||
{
|
||||
++mPos;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
out.value = std::stod(
|
||||
std::string(mText.substr(start, mPos - start))
|
||||
);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string_view mText;
|
||||
size_t mPos = 0;
|
||||
};
|
||||
|
||||
bool parseUint32(
|
||||
const char* text,
|
||||
uint32_t& value)
|
||||
@@ -94,6 +393,278 @@ void applyDefaultFeeds(AppConfig& config)
|
||||
{
|
||||
config.feeds.assign(feedCount(config), FeedConfig{});
|
||||
}
|
||||
|
||||
void resizeFeedsForGrid(AppConfig& config)
|
||||
{
|
||||
config.feeds.resize(feedCount(config));
|
||||
}
|
||||
|
||||
const JsonValue* objectField(
|
||||
const JsonValue::Object& object,
|
||||
const char* key)
|
||||
{
|
||||
const auto it = object.find(key);
|
||||
if (it == object.end())
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
return &it->second;
|
||||
}
|
||||
|
||||
const std::string* jsonString(const JsonValue* value)
|
||||
{
|
||||
if (value == nullptr)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
return std::get_if<std::string>(&value->value);
|
||||
}
|
||||
|
||||
const JsonValue::Array* jsonArray(const JsonValue* value)
|
||||
{
|
||||
if (value == nullptr)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
return std::get_if<JsonValue::Array>(&value->value);
|
||||
}
|
||||
|
||||
bool jsonBool(const JsonValue* value, bool& out)
|
||||
{
|
||||
if (value == nullptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool* parsed = std::get_if<bool>(&value->value);
|
||||
if (parsed == nullptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
out = *parsed;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jsonUint32(const JsonValue* value, uint32_t& out)
|
||||
{
|
||||
if (value == nullptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const double* parsed = std::get_if<double>(&value->value);
|
||||
if (parsed == nullptr ||
|
||||
*parsed < 0.0 ||
|
||||
*parsed > 4294967295.0 ||
|
||||
*parsed != static_cast<uint32_t>(*parsed))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
out = static_cast<uint32_t>(*parsed);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool applyConfigFile(
|
||||
AppConfig& config,
|
||||
const char* path,
|
||||
std::string& error)
|
||||
{
|
||||
std::ifstream file(path);
|
||||
if (!file)
|
||||
{
|
||||
error = "failed to open config file";
|
||||
return false;
|
||||
}
|
||||
|
||||
const std::string text(
|
||||
(std::istreambuf_iterator<char>(file)),
|
||||
std::istreambuf_iterator<char>());
|
||||
|
||||
std::optional<JsonValue> rootValue =
|
||||
JsonParser(text).parse();
|
||||
if (!rootValue.has_value())
|
||||
{
|
||||
error = "invalid JSON";
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto* root =
|
||||
std::get_if<JsonValue::Object>(&rootValue->value);
|
||||
if (root == nullptr)
|
||||
{
|
||||
error = "config root must be an object";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (const std::string* grid =
|
||||
jsonString(objectField(*root, "grid")))
|
||||
{
|
||||
if (!parseGrid(
|
||||
*grid,
|
||||
config.gridCols,
|
||||
config.gridRows))
|
||||
{
|
||||
error = "grid must be <cols>x<rows> with 1-16 total feeds";
|
||||
return false;
|
||||
}
|
||||
resizeFeedsForGrid(config);
|
||||
}
|
||||
|
||||
uint32_t cols = 0;
|
||||
uint32_t rows = 0;
|
||||
const bool hasCols =
|
||||
jsonUint32(objectField(*root, "cols"), cols);
|
||||
const bool hasRows =
|
||||
jsonUint32(objectField(*root, "rows"), rows);
|
||||
if (hasCols || hasRows)
|
||||
{
|
||||
if (!hasCols || !hasRows ||
|
||||
cols == 0 || rows == 0 ||
|
||||
cols > MaxFeedCount / rows)
|
||||
{
|
||||
error = "cols and rows must describe 1-16 total feeds";
|
||||
return false;
|
||||
}
|
||||
|
||||
config.gridCols = cols;
|
||||
config.gridRows = rows;
|
||||
resizeFeedsForGrid(config);
|
||||
}
|
||||
|
||||
uint32_t fpsCap = 0;
|
||||
if (jsonUint32(objectField(*root, "fpsCap"), fpsCap))
|
||||
{
|
||||
if (fpsCap == 0 || fpsCap > 240)
|
||||
{
|
||||
error = "fpsCap must be 1-240";
|
||||
return false;
|
||||
}
|
||||
config.fpsCap = fpsCap;
|
||||
}
|
||||
|
||||
uint32_t maxV210UploadsPerFrame = 0;
|
||||
if (jsonUint32(
|
||||
objectField(*root, "maxV210UploadsPerFrame"),
|
||||
maxV210UploadsPerFrame))
|
||||
{
|
||||
if (maxV210UploadsPerFrame > MaxFeedCount)
|
||||
{
|
||||
error = "maxV210UploadsPerFrame must be 0-16";
|
||||
return false;
|
||||
}
|
||||
config.maxV210UploadsPerFrame = maxV210UploadsPerFrame;
|
||||
}
|
||||
|
||||
bool boolValue = false;
|
||||
if (jsonBool(objectField(*root, "noFps"), boolValue))
|
||||
{
|
||||
config.logFps = !boolValue;
|
||||
}
|
||||
if (jsonBool(objectField(*root, "perf"), boolValue))
|
||||
{
|
||||
config.logPerf = boolValue;
|
||||
}
|
||||
if (jsonBool(objectField(*root, "verbose"), boolValue))
|
||||
{
|
||||
config.verbose = boolValue;
|
||||
}
|
||||
if (jsonBool(objectField(*root, "paceUploads"), boolValue))
|
||||
{
|
||||
config.paceUploads = boolValue;
|
||||
}
|
||||
|
||||
if (const std::string* present =
|
||||
jsonString(objectField(*root, "present")))
|
||||
{
|
||||
const std::optional<PresentModeConfig> mode =
|
||||
parsePresentMode(*present);
|
||||
if (!mode.has_value())
|
||||
{
|
||||
error = "present must be fifo, mailbox, or immediate";
|
||||
return false;
|
||||
}
|
||||
config.presentMode = mode.value();
|
||||
}
|
||||
|
||||
const JsonValue::Array* feeds =
|
||||
jsonArray(objectField(*root, "feeds"));
|
||||
if (feeds == nullptr)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (feeds->size() > MaxFeedCount)
|
||||
{
|
||||
error = "feeds array exceeds 16 entries";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (feeds->size() > config.feeds.size())
|
||||
{
|
||||
uint32_t side = 1;
|
||||
while (side * side < feeds->size())
|
||||
{
|
||||
++side;
|
||||
}
|
||||
|
||||
config.gridCols = side;
|
||||
config.gridRows =
|
||||
static_cast<uint32_t>(
|
||||
(feeds->size() + side - 1) / side);
|
||||
resizeFeedsForGrid(config);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < feeds->size(); ++i)
|
||||
{
|
||||
const auto* feedObject =
|
||||
std::get_if<JsonValue::Object>(
|
||||
&(*feeds)[i].value);
|
||||
if (feedObject == nullptr)
|
||||
{
|
||||
error = "each feed must be an object";
|
||||
return false;
|
||||
}
|
||||
|
||||
FeedConfig feed;
|
||||
|
||||
if (const std::string* kind =
|
||||
jsonString(objectField(*feedObject, "kind")))
|
||||
{
|
||||
const std::optional<FeedKind> parsed =
|
||||
parseFeedKind(*kind);
|
||||
if (!parsed.has_value())
|
||||
{
|
||||
error = "unknown feed kind: " + *kind;
|
||||
return false;
|
||||
}
|
||||
feed.kind = parsed.value();
|
||||
}
|
||||
|
||||
if (const std::string* domain =
|
||||
jsonString(objectField(*feedObject, "domain")))
|
||||
{
|
||||
feed.mxlDomain = *domain;
|
||||
}
|
||||
|
||||
const std::string* flow =
|
||||
jsonString(objectField(*feedObject, "flow"));
|
||||
if (flow == nullptr)
|
||||
{
|
||||
flow = jsonString(objectField(*feedObject, "flowId"));
|
||||
}
|
||||
if (flow != nullptr)
|
||||
{
|
||||
feed.mxlFlowId = *flow;
|
||||
feed.kind = FeedKind::MxlSdk;
|
||||
}
|
||||
|
||||
config.feeds[i] = std::move(feed);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
std::optional<FeedKind> parseFeedKind(std::string_view text)
|
||||
@@ -172,8 +743,11 @@ void printUsage(const char* executableName)
|
||||
<< " --no-fps Disable FPS logging\n"
|
||||
<< " --perf Log per-frame CPU timing breakdown\n"
|
||||
<< " --verbose Enable detailed startup and SDK logs\n"
|
||||
<< " --pace-uploads Pace v210 uploads by feed frame rate\n"
|
||||
<< " --config <path> Load JSON feed configuration\n"
|
||||
<< " --grid <cols>x<rows> Set multiview grid (default 2x2, max 16 feeds)\n"
|
||||
<< " --fps-cap <fps> Limit render loop FPS (default 60)\n"
|
||||
<< " --max-v210-uploads <n> Limit v210 uploads per frame (0 = unlimited)\n"
|
||||
<< " --present <mode> Present mode: fifo, mailbox, immediate (default mailbox)\n"
|
||||
<< " --feed <idx> <kind> Set feed slot kind explicitly\n"
|
||||
<< " --domain <idx> <path> Set MXL domain for feed slot\n"
|
||||
@@ -191,30 +765,6 @@ ConfigParseResult parseAppConfig(
|
||||
{
|
||||
ConfigParseResult result;
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
{
|
||||
if (std::string_view(argv[i]) != "--grid")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i + 1 >= argc ||
|
||||
!parseGrid(
|
||||
argv[i + 1],
|
||||
result.config.gridCols,
|
||||
result.config.gridRows))
|
||||
{
|
||||
std::cerr << "--grid must be <cols>x<rows> with 1-"
|
||||
<< MaxFeedCount << " total feeds"
|
||||
<< std::endl;
|
||||
result.shouldExit = true;
|
||||
result.exitCode = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
applyDefaultFeeds(result.config);
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
@@ -252,6 +802,63 @@ ConfigParseResult parseAppConfig(
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
{
|
||||
if (std::string_view(argv[i]) != "--config")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i + 1 >= argc)
|
||||
{
|
||||
std::cerr << "--config requires <path>"
|
||||
<< std::endl;
|
||||
result.shouldExit = true;
|
||||
result.exitCode = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string error;
|
||||
if (!applyConfigFile(
|
||||
result.config,
|
||||
argv[i + 1],
|
||||
error))
|
||||
{
|
||||
std::cerr << "--config " << argv[i + 1]
|
||||
<< ": " << error << std::endl;
|
||||
result.shouldExit = true;
|
||||
result.exitCode = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
{
|
||||
if (std::string_view(argv[i]) != "--grid")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i + 1 >= argc ||
|
||||
!parseGrid(
|
||||
argv[i + 1],
|
||||
result.config.gridCols,
|
||||
result.config.gridRows))
|
||||
{
|
||||
std::cerr << "--grid must be <cols>x<rows> with 1-"
|
||||
<< MaxFeedCount << " total feeds"
|
||||
<< std::endl;
|
||||
result.shouldExit = true;
|
||||
result.exitCode = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
++i;
|
||||
resizeFeedsForGrid(result.config);
|
||||
}
|
||||
|
||||
std::vector<std::string_view> feedArgs;
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
@@ -276,12 +883,24 @@ ConfigParseResult parseAppConfig(
|
||||
continue;
|
||||
}
|
||||
|
||||
if (arg == "--pace-uploads")
|
||||
{
|
||||
result.config.paceUploads = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (arg == "--grid")
|
||||
{
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (arg == "--config")
|
||||
{
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (arg == "--fps-cap")
|
||||
{
|
||||
if (i + 1 >= argc)
|
||||
@@ -310,6 +929,33 @@ ConfigParseResult parseAppConfig(
|
||||
continue;
|
||||
}
|
||||
|
||||
if (arg == "--max-v210-uploads")
|
||||
{
|
||||
if (i + 1 >= argc)
|
||||
{
|
||||
std::cerr << "--max-v210-uploads requires <count>"
|
||||
<< std::endl;
|
||||
result.shouldExit = true;
|
||||
result.exitCode = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
uint32_t maxUploads = 0;
|
||||
if (!parseUint32(argv[i + 1], maxUploads) ||
|
||||
maxUploads > MaxFeedCount)
|
||||
{
|
||||
std::cerr << "--max-v210-uploads must be 0-"
|
||||
<< MaxFeedCount << std::endl;
|
||||
result.shouldExit = true;
|
||||
result.exitCode = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
result.config.maxV210UploadsPerFrame = maxUploads;
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (arg == "--present")
|
||||
{
|
||||
if (i + 1 >= argc)
|
||||
|
||||
@@ -41,7 +41,9 @@ struct AppConfig
|
||||
bool logFps = true;
|
||||
bool logPerf = false;
|
||||
bool verbose = false;
|
||||
bool paceUploads = false;
|
||||
uint32_t fpsCap = 60;
|
||||
uint32_t maxV210UploadsPerFrame = 0;
|
||||
uint32_t gridCols = DefaultGridCols;
|
||||
uint32_t gridRows = DefaultGridRows;
|
||||
PresentModeConfig presentMode = PresentModeConfig::Mailbox;
|
||||
|
||||
@@ -41,6 +41,8 @@ public:
|
||||
virtual uint64_t frameVersion() const { return 0; }
|
||||
virtual bool hasGrainIndex() const { return false; }
|
||||
virtual uint64_t grainIndex() const { return 0; }
|
||||
virtual bool hasFrameRate() const { return false; }
|
||||
virtual double frameRate() const { return 0.0; }
|
||||
|
||||
virtual float srcAspectRatio() const
|
||||
{
|
||||
|
||||
@@ -576,6 +576,21 @@ std::string MxlSdkFeed::sourceInfo() const
|
||||
uint64_t MxlSdkFeed::frameVersion() const { return mFrameVersion; }
|
||||
bool MxlSdkFeed::hasGrainIndex() const { return mFlowOpened; }
|
||||
uint64_t MxlSdkFeed::grainIndex() const { return mLastDisplayedIndex; }
|
||||
bool MxlSdkFeed::hasFrameRate() const
|
||||
{
|
||||
return mGrainRate.denominator > 0 &&
|
||||
mGrainRate.numerator > 0;
|
||||
}
|
||||
double MxlSdkFeed::frameRate() const
|
||||
{
|
||||
if (!hasFrameRate())
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
return static_cast<double>(mGrainRate.numerator) /
|
||||
static_cast<double>(mGrainRate.denominator);
|
||||
}
|
||||
|
||||
float MxlSdkFeed::srcAspectRatio() const
|
||||
{
|
||||
@@ -604,6 +619,8 @@ std::string MxlSdkFeed::sourceInfo() const { return ""; }
|
||||
uint64_t MxlSdkFeed::frameVersion() const { return 0; }
|
||||
bool MxlSdkFeed::hasGrainIndex() const { return false; }
|
||||
uint64_t MxlSdkFeed::grainIndex() const { return 0; }
|
||||
bool MxlSdkFeed::hasFrameRate() const { return false; }
|
||||
double MxlSdkFeed::frameRate() const { return 0.0; }
|
||||
float MxlSdkFeed::srcAspectRatio() const { return 16.0f / 9.0f; }
|
||||
bool MxlSdkFeed::hasV210() const { return false; }
|
||||
const uint8_t* MxlSdkFeed::v210Data() const { return nullptr; }
|
||||
|
||||
@@ -38,6 +38,8 @@ public:
|
||||
uint64_t frameVersion() const override;
|
||||
bool hasGrainIndex() const override;
|
||||
uint64_t grainIndex() const override;
|
||||
bool hasFrameRate() const override;
|
||||
double frameRate() const override;
|
||||
|
||||
float srcAspectRatio() const override;
|
||||
|
||||
|
||||
@@ -26,6 +26,60 @@ uint32_t findMemoryType(
|
||||
throw std::runtime_error("Failed to find suitable memory type");
|
||||
}
|
||||
|
||||
uint32_t findMemoryTypeWithPreferred(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t typeFilter,
|
||||
VkMemoryPropertyFlags requiredProperties,
|
||||
VkMemoryPropertyFlags preferredProperties,
|
||||
VkMemoryPropertyFlags& selectedProperties)
|
||||
{
|
||||
VkPhysicalDeviceMemoryProperties memProperties;
|
||||
|
||||
vkGetPhysicalDeviceMemoryProperties(
|
||||
physicalDevice,
|
||||
&memProperties
|
||||
);
|
||||
|
||||
uint32_t fallbackIndex = UINT32_MAX;
|
||||
VkMemoryPropertyFlags fallbackProperties = 0;
|
||||
|
||||
for (uint32_t i = 0; i < memProperties.memoryTypeCount; ++i)
|
||||
{
|
||||
if ((typeFilter & (1 << i)) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const VkMemoryPropertyFlags flags =
|
||||
memProperties.memoryTypes[i].propertyFlags;
|
||||
|
||||
if ((flags & requiredProperties) != requiredProperties)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((flags & preferredProperties) == preferredProperties)
|
||||
{
|
||||
selectedProperties = flags;
|
||||
return i;
|
||||
}
|
||||
|
||||
if (fallbackIndex == UINT32_MAX)
|
||||
{
|
||||
fallbackIndex = i;
|
||||
fallbackProperties = flags;
|
||||
}
|
||||
}
|
||||
|
||||
if (fallbackIndex != UINT32_MAX)
|
||||
{
|
||||
selectedProperties = fallbackProperties;
|
||||
return fallbackIndex;
|
||||
}
|
||||
|
||||
throw std::runtime_error("Failed to find suitable memory type");
|
||||
}
|
||||
|
||||
void createBuffer(
|
||||
VkDevice device,
|
||||
VkPhysicalDevice physicalDevice,
|
||||
@@ -66,6 +120,50 @@ void createBuffer(
|
||||
vkBindBufferMemory(device, buffer, bufferMemory, 0);
|
||||
}
|
||||
|
||||
void createBufferWithPreferredMemory(
|
||||
VkDevice device,
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkDeviceSize size,
|
||||
VkBufferUsageFlags usage,
|
||||
VkMemoryPropertyFlags requiredProperties,
|
||||
VkMemoryPropertyFlags preferredProperties,
|
||||
VkBuffer& buffer,
|
||||
VkDeviceMemory& bufferMemory,
|
||||
VkMemoryPropertyFlags& selectedProperties)
|
||||
{
|
||||
VkBufferCreateInfo bufferInfo{};
|
||||
bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
bufferInfo.size = size;
|
||||
bufferInfo.usage = usage;
|
||||
bufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||
|
||||
if (vkCreateBuffer(device, &bufferInfo, nullptr, &buffer) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to create buffer");
|
||||
}
|
||||
|
||||
VkMemoryRequirements memRequirements;
|
||||
vkGetBufferMemoryRequirements(device, buffer, &memRequirements);
|
||||
|
||||
VkMemoryAllocateInfo allocInfo{};
|
||||
allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
||||
allocInfo.allocationSize = memRequirements.size;
|
||||
allocInfo.memoryTypeIndex = findMemoryTypeWithPreferred(
|
||||
physicalDevice,
|
||||
memRequirements.memoryTypeBits,
|
||||
requiredProperties,
|
||||
preferredProperties,
|
||||
selectedProperties
|
||||
);
|
||||
|
||||
if (vkAllocateMemory(device, &allocInfo, nullptr, &bufferMemory) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to allocate buffer memory");
|
||||
}
|
||||
|
||||
vkBindBufferMemory(device, buffer, bufferMemory, 0);
|
||||
}
|
||||
|
||||
VkCommandBuffer beginSingleTimeCommands(
|
||||
VkDevice device,
|
||||
VkCommandPool commandPool)
|
||||
|
||||
@@ -9,6 +9,13 @@ uint32_t findMemoryType(
|
||||
uint32_t typeFilter,
|
||||
VkMemoryPropertyFlags properties);
|
||||
|
||||
uint32_t findMemoryTypeWithPreferred(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t typeFilter,
|
||||
VkMemoryPropertyFlags requiredProperties,
|
||||
VkMemoryPropertyFlags preferredProperties,
|
||||
VkMemoryPropertyFlags& selectedProperties);
|
||||
|
||||
void createBuffer(
|
||||
VkDevice device,
|
||||
VkPhysicalDevice physicalDevice,
|
||||
@@ -18,6 +25,17 @@ void createBuffer(
|
||||
VkBuffer& buffer,
|
||||
VkDeviceMemory& bufferMemory);
|
||||
|
||||
void createBufferWithPreferredMemory(
|
||||
VkDevice device,
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkDeviceSize size,
|
||||
VkBufferUsageFlags usage,
|
||||
VkMemoryPropertyFlags requiredProperties,
|
||||
VkMemoryPropertyFlags preferredProperties,
|
||||
VkBuffer& buffer,
|
||||
VkDeviceMemory& bufferMemory,
|
||||
VkMemoryPropertyFlags& selectedProperties);
|
||||
|
||||
VkCommandBuffer beginSingleTimeCommands(
|
||||
VkDevice device,
|
||||
VkCommandPool commandPool);
|
||||
|
||||
Binary file not shown.
@@ -132,10 +132,9 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: \
|
||||
/usr/include/c++/15/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/15/bits/stl_vector.h \
|
||||
/usr/include/c++/15/bits/stl_bvector.h \
|
||||
/usr/include/c++/15/bits/vector.tcc /usr/include/c++/15/iostream \
|
||||
/usr/include/c++/15/ostream /usr/include/c++/15/bits/ostream.h \
|
||||
/usr/include/c++/15/ios /usr/include/c++/15/bits/ios_base.h \
|
||||
/usr/include/c++/15/ext/atomicity.h \
|
||||
/usr/include/c++/15/bits/vector.tcc /usr/include/c++/15/fstream \
|
||||
/usr/include/c++/15/istream /usr/include/c++/15/ios \
|
||||
/usr/include/c++/15/bits/ios_base.h /usr/include/c++/15/ext/atomicity.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/gthr.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/sched.h \
|
||||
@@ -173,6 +172,18 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: \
|
||||
/usr/include/c++/15/bits/streambuf_iterator.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/ctype_inline.h \
|
||||
/usr/include/c++/15/bits/locale_facets.tcc \
|
||||
/usr/include/c++/15/bits/basic_ios.tcc \
|
||||
/usr/include/c++/15/bits/ostream.tcc /usr/include/c++/15/istream \
|
||||
/usr/include/c++/15/bits/istream.tcc
|
||||
/usr/include/c++/15/bits/basic_ios.tcc /usr/include/c++/15/ostream \
|
||||
/usr/include/c++/15/bits/ostream.h /usr/include/c++/15/bits/ostream.tcc \
|
||||
/usr/include/c++/15/bits/istream.tcc /usr/include/c++/15/bits/codecvt.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/basic_file.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++io.h \
|
||||
/usr/include/c++/15/bits/fstream.tcc /usr/include/c++/15/iostream \
|
||||
/usr/include/c++/15/iterator /usr/include/c++/15/bits/stream_iterator.h \
|
||||
/usr/include/c++/15/map /usr/include/c++/15/bits/stl_tree.h \
|
||||
/usr/include/c++/15/ext/aligned_buffer.h \
|
||||
/usr/include/c++/15/bits/node_handle.h \
|
||||
/usr/include/c++/15/bits/stl_map.h \
|
||||
/usr/include/c++/15/bits/stl_multimap.h \
|
||||
/usr/include/c++/15/bits/erase_if.h /usr/include/c++/15/variant \
|
||||
/usr/include/c++/15/bits/monostate.h \
|
||||
/usr/include/c++/15/bits/parse_numbers.h
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -21,14 +21,17 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o
|
||||
/usr/include/c++/15/bits/basic_string.tcc
|
||||
/usr/include/c++/15/bits/char_traits.h
|
||||
/usr/include/c++/15/bits/charconv.h
|
||||
/usr/include/c++/15/bits/codecvt.h
|
||||
/usr/include/c++/15/bits/concept_check.h
|
||||
/usr/include/c++/15/bits/cpp_type_traits.h
|
||||
/usr/include/c++/15/bits/cxxabi_forced.h
|
||||
/usr/include/c++/15/bits/cxxabi_init_exception.h
|
||||
/usr/include/c++/15/bits/enable_special_members.h
|
||||
/usr/include/c++/15/bits/erase_if.h
|
||||
/usr/include/c++/15/bits/exception.h
|
||||
/usr/include/c++/15/bits/exception_defines.h
|
||||
/usr/include/c++/15/bits/exception_ptr.h
|
||||
/usr/include/c++/15/bits/fstream.tcc
|
||||
/usr/include/c++/15/bits/functexcept.h
|
||||
/usr/include/c++/15/bits/functional_hash.h
|
||||
/usr/include/c++/15/bits/hash_bytes.h
|
||||
@@ -44,12 +47,15 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o
|
||||
/usr/include/c++/15/bits/max_size_type.h
|
||||
/usr/include/c++/15/bits/memory_resource.h
|
||||
/usr/include/c++/15/bits/memoryfwd.h
|
||||
/usr/include/c++/15/bits/monostate.h
|
||||
/usr/include/c++/15/bits/move.h
|
||||
/usr/include/c++/15/bits/nested_exception.h
|
||||
/usr/include/c++/15/bits/new_allocator.h
|
||||
/usr/include/c++/15/bits/node_handle.h
|
||||
/usr/include/c++/15/bits/ostream.h
|
||||
/usr/include/c++/15/bits/ostream.tcc
|
||||
/usr/include/c++/15/bits/ostream_insert.h
|
||||
/usr/include/c++/15/bits/parse_numbers.h
|
||||
/usr/include/c++/15/bits/postypes.h
|
||||
/usr/include/c++/15/bits/predefined_ops.h
|
||||
/usr/include/c++/15/bits/ptr_traits.h
|
||||
@@ -67,9 +73,13 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o
|
||||
/usr/include/c++/15/bits/stl_iterator.h
|
||||
/usr/include/c++/15/bits/stl_iterator_base_funcs.h
|
||||
/usr/include/c++/15/bits/stl_iterator_base_types.h
|
||||
/usr/include/c++/15/bits/stl_map.h
|
||||
/usr/include/c++/15/bits/stl_multimap.h
|
||||
/usr/include/c++/15/bits/stl_pair.h
|
||||
/usr/include/c++/15/bits/stl_tree.h
|
||||
/usr/include/c++/15/bits/stl_uninitialized.h
|
||||
/usr/include/c++/15/bits/stl_vector.h
|
||||
/usr/include/c++/15/bits/stream_iterator.h
|
||||
/usr/include/c++/15/bits/streambuf.tcc
|
||||
/usr/include/c++/15/bits/streambuf_iterator.h
|
||||
/usr/include/c++/15/bits/string_view.tcc
|
||||
@@ -93,16 +103,20 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o
|
||||
/usr/include/c++/15/debug/assertions.h
|
||||
/usr/include/c++/15/debug/debug.h
|
||||
/usr/include/c++/15/exception
|
||||
/usr/include/c++/15/ext/aligned_buffer.h
|
||||
/usr/include/c++/15/ext/alloc_traits.h
|
||||
/usr/include/c++/15/ext/atomicity.h
|
||||
/usr/include/c++/15/ext/numeric_traits.h
|
||||
/usr/include/c++/15/ext/string_conversions.h
|
||||
/usr/include/c++/15/ext/type_traits.h
|
||||
/usr/include/c++/15/fstream
|
||||
/usr/include/c++/15/initializer_list
|
||||
/usr/include/c++/15/ios
|
||||
/usr/include/c++/15/iosfwd
|
||||
/usr/include/c++/15/iostream
|
||||
/usr/include/c++/15/istream
|
||||
/usr/include/c++/15/iterator
|
||||
/usr/include/c++/15/map
|
||||
/usr/include/c++/15/new
|
||||
/usr/include/c++/15/numbers
|
||||
/usr/include/c++/15/optional
|
||||
@@ -116,6 +130,7 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o
|
||||
/usr/include/c++/15/tuple
|
||||
/usr/include/c++/15/type_traits
|
||||
/usr/include/c++/15/typeinfo
|
||||
/usr/include/c++/15/variant
|
||||
/usr/include/c++/15/vector
|
||||
/usr/include/ctype.h
|
||||
/usr/include/endian.h
|
||||
@@ -204,8 +219,10 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o
|
||||
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h
|
||||
/usr/include/x86_64-linux-gnu/bits/wordsize.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/atomic_word.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/basic_file.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++allocator.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++config.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++io.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++locale.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/cpu_defines.h
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/ctype_base.h
|
||||
|
||||
@@ -20,14 +20,17 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: /home/itten/mxl-multiviewer/AppC
|
||||
/usr/include/c++/15/bits/basic_string.tcc \
|
||||
/usr/include/c++/15/bits/char_traits.h \
|
||||
/usr/include/c++/15/bits/charconv.h \
|
||||
/usr/include/c++/15/bits/codecvt.h \
|
||||
/usr/include/c++/15/bits/concept_check.h \
|
||||
/usr/include/c++/15/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/15/bits/cxxabi_forced.h \
|
||||
/usr/include/c++/15/bits/cxxabi_init_exception.h \
|
||||
/usr/include/c++/15/bits/enable_special_members.h \
|
||||
/usr/include/c++/15/bits/erase_if.h \
|
||||
/usr/include/c++/15/bits/exception.h \
|
||||
/usr/include/c++/15/bits/exception_defines.h \
|
||||
/usr/include/c++/15/bits/exception_ptr.h \
|
||||
/usr/include/c++/15/bits/fstream.tcc \
|
||||
/usr/include/c++/15/bits/functexcept.h \
|
||||
/usr/include/c++/15/bits/functional_hash.h \
|
||||
/usr/include/c++/15/bits/hash_bytes.h \
|
||||
@@ -43,12 +46,15 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: /home/itten/mxl-multiviewer/AppC
|
||||
/usr/include/c++/15/bits/max_size_type.h \
|
||||
/usr/include/c++/15/bits/memory_resource.h \
|
||||
/usr/include/c++/15/bits/memoryfwd.h \
|
||||
/usr/include/c++/15/bits/monostate.h \
|
||||
/usr/include/c++/15/bits/move.h \
|
||||
/usr/include/c++/15/bits/nested_exception.h \
|
||||
/usr/include/c++/15/bits/new_allocator.h \
|
||||
/usr/include/c++/15/bits/node_handle.h \
|
||||
/usr/include/c++/15/bits/ostream.h \
|
||||
/usr/include/c++/15/bits/ostream.tcc \
|
||||
/usr/include/c++/15/bits/ostream_insert.h \
|
||||
/usr/include/c++/15/bits/parse_numbers.h \
|
||||
/usr/include/c++/15/bits/postypes.h \
|
||||
/usr/include/c++/15/bits/predefined_ops.h \
|
||||
/usr/include/c++/15/bits/ptr_traits.h \
|
||||
@@ -66,9 +72,13 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: /home/itten/mxl-multiviewer/AppC
|
||||
/usr/include/c++/15/bits/stl_iterator.h \
|
||||
/usr/include/c++/15/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/15/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/15/bits/stl_map.h \
|
||||
/usr/include/c++/15/bits/stl_multimap.h \
|
||||
/usr/include/c++/15/bits/stl_pair.h \
|
||||
/usr/include/c++/15/bits/stl_tree.h \
|
||||
/usr/include/c++/15/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/15/bits/stl_vector.h \
|
||||
/usr/include/c++/15/bits/stream_iterator.h \
|
||||
/usr/include/c++/15/bits/streambuf.tcc \
|
||||
/usr/include/c++/15/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/15/bits/string_view.tcc \
|
||||
@@ -92,16 +102,20 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: /home/itten/mxl-multiviewer/AppC
|
||||
/usr/include/c++/15/debug/assertions.h \
|
||||
/usr/include/c++/15/debug/debug.h \
|
||||
/usr/include/c++/15/exception \
|
||||
/usr/include/c++/15/ext/aligned_buffer.h \
|
||||
/usr/include/c++/15/ext/alloc_traits.h \
|
||||
/usr/include/c++/15/ext/atomicity.h \
|
||||
/usr/include/c++/15/ext/numeric_traits.h \
|
||||
/usr/include/c++/15/ext/string_conversions.h \
|
||||
/usr/include/c++/15/ext/type_traits.h \
|
||||
/usr/include/c++/15/fstream \
|
||||
/usr/include/c++/15/initializer_list \
|
||||
/usr/include/c++/15/ios \
|
||||
/usr/include/c++/15/iosfwd \
|
||||
/usr/include/c++/15/iostream \
|
||||
/usr/include/c++/15/istream \
|
||||
/usr/include/c++/15/iterator \
|
||||
/usr/include/c++/15/map \
|
||||
/usr/include/c++/15/new \
|
||||
/usr/include/c++/15/numbers \
|
||||
/usr/include/c++/15/optional \
|
||||
@@ -115,6 +129,7 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: /home/itten/mxl-multiviewer/AppC
|
||||
/usr/include/c++/15/tuple \
|
||||
/usr/include/c++/15/type_traits \
|
||||
/usr/include/c++/15/typeinfo \
|
||||
/usr/include/c++/15/variant \
|
||||
/usr/include/c++/15/vector \
|
||||
/usr/include/ctype.h \
|
||||
/usr/include/endian.h \
|
||||
@@ -203,8 +218,10 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o: /home/itten/mxl-multiviewer/AppC
|
||||
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/atomic_word.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/basic_file.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++allocator.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++config.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++io.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++locale.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/cpu_defines.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/ctype_base.h \
|
||||
@@ -4918,8 +4935,6 @@ CMakeFiles/mxl_multiviewer.dir/TileLayout.cpp.o:
|
||||
|
||||
/usr/include/c++/15/filesystem:
|
||||
|
||||
/usr/include/c++/15/bits/node_handle.h:
|
||||
|
||||
/usr/include/c++/15/bits/fs_path.h:
|
||||
|
||||
/usr/include/c++/15/bits/fs_fwd.h:
|
||||
@@ -5010,42 +5025,28 @@ CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/bmi2intrin.h:
|
||||
|
||||
/usr/include/c++/15/pstl/glue_memory_defs.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/fxsrintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxvnniintrin.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxvnniint16intrin.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++locale.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/movdirintrin.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vpopcntdqvlintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/mm_malloc.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vpopcntdqintrin.h:
|
||||
|
||||
/usr/include/SDL3/SDL_power.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vnnivlintrin.h:
|
||||
|
||||
/usr/include/c++/15/bits/ranges_util.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vp2intersectintrin.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/asm/unistd_64.h:
|
||||
|
||||
/usr/include/c++/15/bits/shared_ptr_base.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/SDL3/SDL_endian.h:
|
||||
|
||||
/usr/include/c++/15/bits/shared_ptr_atomic.h:
|
||||
/usr/include/c++/15/backward/auto_ptr.h:
|
||||
|
||||
/usr/include/c++/15/bits/exception_defines.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_construct.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/NoSignalFeed.hpp:
|
||||
|
||||
/usr/include/c++/15/bits/ptr_traits.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/TileLayout.cpp:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libXtst.so.6:
|
||||
|
||||
/usr/include/c++/15/ext/numeric_traits.h:
|
||||
@@ -5066,20 +5067,28 @@ CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/error_constants.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/IVideoFeed.hpp:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxvnniintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/stddef.h:
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++locale.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_vp9std.h:
|
||||
/usr/include/c++/15/pstl/glue_memory_defs.h:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libdecor-0.so.0:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/movdirintrin.h:
|
||||
|
||||
/usr/include/c++/15/pstl/execution_defs.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/mm_malloc.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/uio_lim.h:
|
||||
/usr/include/SDL3/SDL_power.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/Swapchain.cpp:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_h264std_decode.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h:
|
||||
@@ -5092,6 +5101,12 @@ CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/imgui/imgui_widgets.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++io.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:
|
||||
|
||||
/usr/include/c++/15/bits/functexcept.h:
|
||||
@@ -5106,14 +5121,6 @@ CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
|
||||
|
||||
/usr/include/c++/15/bits/erase_if.h:
|
||||
|
||||
/usr/include/c++/15/bits/std_mutex.h:
|
||||
|
||||
/usr/include/c++/15/charconv:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/cpu_defines.h:
|
||||
|
||||
/usr/include/c++/15/tr1/special_function_util.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_iterator_base_funcs.h:
|
||||
@@ -5138,14 +5145,12 @@ CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/sys/select.h:
|
||||
|
||||
/usr/include/c++/15/bits/stream_iterator.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/Swapchain.cpp:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-least.h:
|
||||
@@ -5176,12 +5181,6 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/ctype_inline.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/hresetintrin.h:
|
||||
|
||||
/usr/include/c++/15/bits/unique_ptr.h:
|
||||
|
||||
/usr/include/c++/15/bits/move.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/MxlFeed.hpp:
|
||||
|
||||
/usr/include/SDL3/SDL_messagebox.h:
|
||||
@@ -5200,47 +5199,47 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/cpu-set.h:
|
||||
|
||||
/usr/include/SDL3/SDL_mutex.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/asm/posix_types_64.h:
|
||||
|
||||
/usr/include/c++/15/bits/this_thread_sleep.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/time64.h:
|
||||
|
||||
/usr/include/c++/15/ext/aligned_buffer.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/asm/types.h:
|
||||
|
||||
/usr/include/SDL3/SDL_log.h:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/ia32intrin.h:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/15/bits/exception.h:
|
||||
/usr/include/x86_64-linux-gnu/bits/setjmp.h:
|
||||
|
||||
/usr/include/strings.h:
|
||||
|
||||
/usr/include/asm-generic/bitsperlong.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
|
||||
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
|
||||
|
||||
/usr/include/c++/15/debug/assertions.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++config.h:
|
||||
/usr/include/linux/stddef.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/asm/bitsperlong.h:
|
||||
/usr/include/SDL3/SDL_dlopennote.h:
|
||||
|
||||
/usr/include/SDL3/SDL_surface.h:
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/gthr-default.h:
|
||||
|
||||
/usr/include/c++/15/typeinfo:
|
||||
/usr/include/linux/posix_types.h:
|
||||
|
||||
/usr/include/features.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
|
||||
|
||||
/usr/include/features-time64.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/mwaitxintrin.h:
|
||||
|
||||
/usr/include/errno.h:
|
||||
|
||||
/usr/include/c++/15/cstddef:
|
||||
|
||||
/usr/include/endian.h:
|
||||
|
||||
/usr/include/stdint.h:
|
||||
|
||||
/usr/include/c++/15/bits/ranges_algo.h:
|
||||
|
||||
@@ -5252,12 +5251,6 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/home/itten/mxl-multiviewer/NoSignalFeed.cpp:
|
||||
|
||||
/usr/include/c++/15/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/15/bits/ostream.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512ifmavlintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/libgcc_s.so:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/long-double.h:
|
||||
@@ -5276,6 +5269,12 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512cdintrin.h:
|
||||
|
||||
/usr/include/c++/15/bits/monostate.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/waitpkgintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/limits.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/imgui/imgui_tables.cpp:
|
||||
|
||||
/home/itten/mxl-multiviewer/SmpteBarsFeed.hpp:
|
||||
@@ -5284,6 +5283,10 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vbmiintrin.h:
|
||||
|
||||
/usr/include/SDL3/SDL_oldnames.h:
|
||||
|
||||
/usr/include/c++/15/bits/parse_numbers.h:
|
||||
|
||||
/usr/include/c++/15/bits/max_size_type.h:
|
||||
|
||||
/usr/include/c++/15/bits/localefwd.h:
|
||||
@@ -5292,6 +5295,8 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_av1std_decode.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/uio_lim.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
@@ -5308,6 +5313,20 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/usr/include/c++/15/bits/alloc_traits.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h:
|
||||
|
||||
/usr/include/linux/errno.h:
|
||||
|
||||
/usr/include/c++/15/bits/invoke.h:
|
||||
|
||||
/usr/include/SDL3/SDL_thread.h:
|
||||
|
||||
/usr/include/c++/15/bits/fstream.tcc:
|
||||
|
||||
/usr/include/c++/15/bits/nested_exception.h:
|
||||
|
||||
/usr/include/c++/15/bits/memoryfwd.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/MxlSdkFeed.hpp:
|
||||
|
||||
/usr/include/linux/close_range.h:
|
||||
@@ -5320,59 +5339,31 @@ CMakeFiles/mxl_multiviewer.dir/main.cpp.o:
|
||||
|
||||
/home/itten/mxl-multiviewer/imgui/backends/imgui_impl_vulkan.cpp:
|
||||
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/platform.h:
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/c++/15/bits/range_access.h:
|
||||
/usr/include/c++/15/bits/allocated_ptr.h:
|
||||
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/rational.h:
|
||||
/lib64/ld-linux-x86-64.so.2:
|
||||
|
||||
/usr/include/c++/15/bits/cxxabi_init_exception.h:
|
||||
/usr/include/c++/15/bits/istream.tcc:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/syscall.h:
|
||||
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
|
||||
|
||||
/usr/include/asm-generic/bitsperlong.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/imgui/imgui_tables.cpp.o:
|
||||
|
||||
/usr/include/c++/15/iostream:
|
||||
|
||||
/usr/include/c++/15/climits:
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/platform.h:
|
||||
|
||||
/usr/include/c++/15/bits/vector.tcc:
|
||||
/usr/include/c++/15/bits/range_access.h:
|
||||
|
||||
/usr/include/c++/15/bits/cxxabi_forced.h:
|
||||
CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o:
|
||||
|
||||
/usr/include/c++/15/compare:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxvnniint8intrin.h:
|
||||
|
||||
/usr/include/SDL3/SDL_rect.h:
|
||||
|
||||
/usr/include/c++/15/bits/specfun.h:
|
||||
|
||||
/usr/include/c++/15/cstddef:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/mwaitxintrin.h:
|
||||
|
||||
/usr/include/errno.h:
|
||||
|
||||
/usr/include/c++/15/ostream:
|
||||
|
||||
/usr/include/c++/15/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/15/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/15/bits/ranges_cmp.h:
|
||||
|
||||
/usr/include/SDL3/SDL_thread.h:
|
||||
|
||||
/usr/include/c++/15/bits/fstream.tcc:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h:
|
||||
|
||||
/usr/include/math.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h:
|
||||
|
||||
/usr/include/c++/15/bits/locale_classes.h:
|
||||
|
||||
/usr/include/linux/stddef.h:
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/wmmintrin.h:
|
||||
|
||||
@@ -5382,20 +5373,152 @@ CMakeFiles/mxl_multiviewer.dir/imgui/imgui_tables.cpp.o:
|
||||
|
||||
/usr/include/asm-generic/posix_types.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o:
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/rational.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxvnniint8intrin.h:
|
||||
/home/itten/mxl-multiviewer/IVideoFeed.hpp:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/stddef.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/asm/bitsperlong.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++config.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_vp9std.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o:
|
||||
|
||||
/home/itten/mxl-multiviewer/Swapchain.hpp:
|
||||
|
||||
/usr/include/c++/15/bits/cxxabi_init_exception.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/syscall.h:
|
||||
|
||||
/usr/include/c++/15/bits/enable_special_members.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512ifmavlintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/sgxintrin.h:
|
||||
|
||||
/usr/include/c++/15/fstream:
|
||||
|
||||
/usr/include/c++/15/bits/postypes.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/PixelFormat.hpp:
|
||||
|
||||
/home/itten/mxl-multiviewer/VulkanContext.cpp:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/FILE.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
|
||||
|
||||
/usr/include/c++/15/bits/ranges_base.h:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libX11.so.6:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/sys/single_threaded.h:
|
||||
|
||||
/usr/include/c++/15/bits/specfun.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/cpu_defines.h:
|
||||
|
||||
/usr/include/c++/15/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/15/bits/locale_classes.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h:
|
||||
|
||||
/usr/include/math.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
|
||||
|
||||
/usr/include/asm-generic/errno-base.h:
|
||||
|
||||
/usr/include/c++/15/bits/codecvt.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxneconvertintrin.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/local_lim.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vbmi2vlintrin.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/imgui/backends/imgui_impl_sdl3.cpp.o:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libXext.so.6:
|
||||
|
||||
/home/itten/mxl-multiviewer/VulkanUtils.hpp:
|
||||
|
||||
/usr/include/c++/15/initializer_list:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/adxintrin.h:
|
||||
|
||||
/usr/include/c++/15/bits/exception.h:
|
||||
|
||||
/usr/include/c++/15/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/15/ostream:
|
||||
|
||||
/usr/include/strings.h:
|
||||
|
||||
/usr/include/c++/15/typeinfo:
|
||||
|
||||
/usr/include/SDL3/SDL_surface.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/AppConfig.cpp:
|
||||
|
||||
/usr/include/c++/15/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_h265std_encode.h:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/c++/15/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/SDL3/SDL_dialog.h:
|
||||
|
||||
/usr/include/c++/15/bits/locale_facets_nonio.h:
|
||||
|
||||
/usr/include/c++/15/bits/ranges_util.h:
|
||||
|
||||
/usr/include/c++/15/bits/ostream.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/15/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/15/bits/version.h:
|
||||
|
||||
/usr/include/c++/15/bits/node_handle.h:
|
||||
|
||||
/usr/include/c++/15/bits/fs_ops.h:
|
||||
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/flowinfo.h:
|
||||
|
||||
/usr/include/c++/15/bits/charconv.h:
|
||||
|
||||
/usr/include/c++/15/pstl/glue_algorithm_defs.h:
|
||||
|
||||
/usr/include/c++/15/tr1/poly_laguerre.tcc:
|
||||
|
||||
/usr/include/SDL3/SDL_begin_code.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/TileLayout.cpp:
|
||||
|
||||
/usr/include/c++/15/bits/ptr_traits.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_construct.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/asm/posix_types_64.h:
|
||||
|
||||
/usr/include/SDL3/SDL_mutex.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/FeedCreate.cpp:
|
||||
|
||||
/usr/include/c++/15/bits/predefined_ops.h:
|
||||
@@ -5408,81 +5531,39 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o:
|
||||
|
||||
/home/itten/mxl-multiviewer/V210ComputeDecoder.cpp:
|
||||
|
||||
/home/itten/mxl-multiviewer/AppConfig.cpp:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libX11.so.6:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/sys/single_threaded.h:
|
||||
|
||||
/usr/include/c++/15/bits/ranges_base.h:
|
||||
|
||||
/usr/include/c++/15/bits/shared_ptr.h:
|
||||
|
||||
/usr/include/c++/15/iomanip:
|
||||
|
||||
/usr/include/c++/15/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_h265std_encode.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxintrin.h:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/c++/15/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/features.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/stdint.h:
|
||||
|
||||
/usr/include/endian.h:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libmpg123.so.0:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/15/bits/uses_allocator.h:
|
||||
|
||||
/usr/include/c++/15/bits/concept_check.h:
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/c++/15/bits/version.h:
|
||||
/usr/include/c++/15/vector:
|
||||
|
||||
/usr/include/c++/15/bits/fs_ops.h:
|
||||
/usr/include/c++/15/bits/stl_bvector.h:
|
||||
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/flowinfo.h:
|
||||
/usr/include/x86_64-linux-gnu/bits/fp-fast.h:
|
||||
|
||||
/lib64/ld-linux-x86-64.so.2:
|
||||
/usr/include/x86_64-linux-gnu/asm/types.h:
|
||||
|
||||
/usr/include/c++/15/bits/istream.tcc:
|
||||
/usr/include/x86_64-linux-gnu/bits/time64.h:
|
||||
|
||||
/usr/include/c++/15/bits/charconv.h:
|
||||
/usr/include/c++/15/ext/aligned_buffer.h:
|
||||
|
||||
/usr/include/c++/15/pstl/glue_algorithm_defs.h:
|
||||
|
||||
/usr/include/c++/15/tr1/poly_laguerre.tcc:
|
||||
|
||||
/usr/include/SDL3/SDL_begin_code.h:
|
||||
/usr/include/c++/15/bits/ranges_cmp.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/sys/wait.h:
|
||||
|
||||
/usr/include/c++/15/type_traits:
|
||||
|
||||
/usr/include/c++/15/map:
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/15/bits/refwrap.h:
|
||||
/usr/include/c++/15/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/FILE.h:
|
||||
/usr/include/c++/15/bits/shared_ptr_base.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
|
||||
|
||||
/usr/include/c++/15/bits/memoryfwd.h:
|
||||
|
||||
/usr/include/c++/15/bits/nested_exception.h:
|
||||
|
||||
/usr/include/SDL3/SDL_dlopennote.h:
|
||||
/usr/include/SDL3/SDL_endian.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/pconfigintrin.h:
|
||||
|
||||
@@ -5512,12 +5593,6 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o:
|
||||
|
||||
/home/itten/mxl-multiviewer/imgui/imgui.h:
|
||||
|
||||
/usr/include/c++/15/bits/ranges_uninitialized.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/fp-fast.h:
|
||||
|
||||
/usr/include/c++/15/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/15/cctype:
|
||||
@@ -5528,6 +5603,12 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o:
|
||||
|
||||
/usr/include/SDL3/SDL_sensor.h:
|
||||
|
||||
/usr/include/c++/15/compare:
|
||||
|
||||
/usr/include/c++/15/bits/cxxabi_forced.h:
|
||||
|
||||
/usr/include/SDL3/SDL_rect.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
|
||||
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/dataformat.h:
|
||||
@@ -5578,15 +5659,17 @@ CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o:
|
||||
|
||||
/usr/include/c++/15/exception:
|
||||
|
||||
/usr/include/c++/15/bits/enable_special_members.h:
|
||||
/usr/lib/x86_64-linux-gnu/libc.so.6:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/imgui/backends/imgui_impl_sdl3.cpp.o:
|
||||
/usr/include/linux/types.h:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libXext.so.6:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/amxbf16intrin.h:
|
||||
|
||||
/usr/include/c++/15/initializer_list:
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/mxl.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/VulkanUtils.hpp:
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
|
||||
|
||||
/usr/include/c++/15/ext/alloc_traits.h:
|
||||
|
||||
/usr/include/c++/15/ext/concurrence.h:
|
||||
|
||||
@@ -5598,11 +5681,9 @@ CMakeFiles/mxl_multiviewer.dir/imgui/backends/imgui_impl_sdl3.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h:
|
||||
|
||||
/usr/include/linux/errno.h:
|
||||
/usr/include/c++/15/bits/refwrap.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h:
|
||||
|
||||
/usr/include/c++/15/bits/invoke.h:
|
||||
/usr/include/c++/15/map:
|
||||
|
||||
/usr/include/c++/15/bits/basic_ios.tcc:
|
||||
|
||||
@@ -5622,48 +5703,48 @@ CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o:
|
||||
|
||||
/usr/include/c++/15/string:
|
||||
|
||||
/usr/include/c++/15/bits/stl_tempbuf.h:
|
||||
/usr/include/c++/15/bits/ranges_uninitialized.h:
|
||||
|
||||
/usr/include/c++/15/iomanip:
|
||||
|
||||
/usr/include/c++/15/bits/shared_ptr.h:
|
||||
|
||||
/usr/include/c++/15/bits/shared_ptr_atomic.h:
|
||||
|
||||
/usr/include/c++/15/charconv:
|
||||
|
||||
/usr/include/c++/15/bits/erase_if.h:
|
||||
|
||||
/usr/include/c++/15/bits/std_mutex.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/asm/unistd_64.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512dqintrin.h:
|
||||
|
||||
/usr/include/c++/15/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/hresetintrin.h:
|
||||
|
||||
/usr/include/c++/15/bits/move.h:
|
||||
|
||||
/usr/include/c++/15/bits/unique_ptr.h:
|
||||
|
||||
/usr/include/c++/15/bits/vector.tcc:
|
||||
|
||||
/usr/include/c++/15/climits:
|
||||
|
||||
/usr/include/c++/15/memory:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h:
|
||||
|
||||
/usr/include/c++/15/vector:
|
||||
/usr/lib/x86_64-linux-gnu/libdecor-0.so.0:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
|
||||
|
||||
/usr/include/features-time64.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/gthr-default.h:
|
||||
|
||||
/usr/include/linux/posix_types.h:
|
||||
|
||||
/home/itten/dmf-mxl/mxl-1.0.1/lib/include/mxl/mxl.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
|
||||
|
||||
/usr/include/c++/15/ext/alloc_traits.h:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libc.so.6:
|
||||
|
||||
/usr/include/linux/types.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/amxbf16intrin.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/setjmp.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
|
||||
|
||||
/usr/include/c++/15/bits/allocated_ptr.h:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/c++/15/bits/semaphore_base.h:
|
||||
/usr/include/c++/15/pstl/execution_defs.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/basic_file.h:
|
||||
|
||||
/usr/include/c++/15/bits/semaphore_base.h:
|
||||
|
||||
/usr/include/linux/limits.h:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libopus.so.0:
|
||||
@@ -5686,10 +5767,6 @@ CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o:
|
||||
|
||||
/usr/include/SDL3/SDL_keyboard.h:
|
||||
|
||||
/usr/include/c++/15/bits/codecvt.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vbmi2vlintrin.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/locale.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
|
||||
@@ -5704,20 +5781,14 @@ CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/posix_opt.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/waitpkgintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/limits.h:
|
||||
|
||||
/usr/include/c++/15/bits/monostate.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/syslimits.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/FeedTexture.cpp:
|
||||
|
||||
/usr/include/c++/15/cwctype:
|
||||
|
||||
/usr/include/SDL3/SDL_hints.h:
|
||||
|
||||
/usr/include/c++/15/cwctype:
|
||||
|
||||
/home/itten/mxl-multiviewer/FeedTexture.hpp:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_av1std.h:
|
||||
@@ -5732,22 +5803,12 @@ CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_h264std.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_h264std_decode.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/imgui/imgui_widgets.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/c++/15/bits/c++io.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_h264std_encode.h:
|
||||
|
||||
/usr/include/c++/15/bits/exception_ptr.h:
|
||||
|
||||
/usr/include/SDL3/SDL_storage.h:
|
||||
|
||||
/usr/include/c++/15/bits/exception_ptr.h:
|
||||
|
||||
/usr/include/vk_video/vulkan_video_codec_h265std.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o:
|
||||
@@ -5766,18 +5827,6 @@ CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o:
|
||||
|
||||
/usr/include/SDL3/SDL_pen.h:
|
||||
|
||||
/usr/include/c++/15/bits/postypes.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/PixelFormat.hpp:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/sgxintrin.h:
|
||||
|
||||
/usr/include/c++/15/fstream:
|
||||
|
||||
/home/itten/mxl-multiviewer/VulkanContext.cpp:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/MxlInstanceCache.cpp:
|
||||
|
||||
/usr/include/SDL3/SDL_loadso.h:
|
||||
@@ -5822,14 +5871,6 @@ CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o:
|
||||
|
||||
/usr/include/c++/15/bits/locale_facets_nonio.tcc:
|
||||
|
||||
/usr/include/SDL3/SDL_oldnames.h:
|
||||
|
||||
/usr/include/c++/15/bits/parse_numbers.h:
|
||||
|
||||
/usr/include/c++/15/bits/locale_facets_nonio.h:
|
||||
|
||||
/usr/include/SDL3/SDL_dialog.h:
|
||||
|
||||
/usr/include/c++/15/bits/quoted_string.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/sigstack.h:
|
||||
@@ -5860,8 +5901,6 @@ CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/sigstksz.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vpopcntdqintrin.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
|
||||
|
||||
/usr/include/c++/15/thread:
|
||||
@@ -5886,8 +5925,6 @@ CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/sys/time.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vnnivlintrin.h:
|
||||
|
||||
/home/itten/mxl-multiviewer/RenderPipeline.cpp:
|
||||
|
||||
/home/itten/mxl-multiviewer/RenderPipeline.hpp:
|
||||
@@ -5898,10 +5935,6 @@ CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o:
|
||||
|
||||
/usr/include/SDL3/SDL_platform.h:
|
||||
|
||||
CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o:
|
||||
|
||||
/home/itten/mxl-multiviewer/Swapchain.hpp:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/xopen_lim.h:
|
||||
|
||||
/usr/include/c++/15/bits/atomic_wait.h:
|
||||
@@ -5998,6 +6031,8 @@ CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o:
|
||||
|
||||
/usr/include/c++/15/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/15/variant:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/amxtransposeintrin.h:
|
||||
|
||||
/usr/include/SDL3/SDL_misc.h:
|
||||
@@ -6064,10 +6099,6 @@ CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o:
|
||||
|
||||
/usr/include/SDL3/SDL_version.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/fxsrintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxvnniint16intrin.h:
|
||||
|
||||
/usr/lib/x86_64-linux-gnu/libmvec.so.1:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/sys/types.h:
|
||||
@@ -6132,6 +6163,8 @@ CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h:
|
||||
|
||||
/usr/include/c++/15/iterator:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/types/stack_t.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/amxavx512intrin.h:
|
||||
@@ -6211,13 +6244,3 @@ CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o:
|
||||
/usr/include/c++/15/bits/unicode-data.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vldqintrin.h:
|
||||
|
||||
/usr/include/c++/15/backward/auto_ptr.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vp2intersectintrin.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avx512vpopcntdqvlintrin.h:
|
||||
|
||||
/usr/include/x86_64-linux-gnu/bits/local_lim.h:
|
||||
|
||||
/usr/lib/gcc/x86_64-linux-gnu/15/include/avxneconvertintrin.h:
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"grid": "2x2",
|
||||
"fpsCap": 60,
|
||||
"present": "mailbox",
|
||||
"feeds": [
|
||||
{
|
||||
"domain": "/tmp/mxl",
|
||||
"flow": "aac7b492-fc2f-4869-a8a7-711ba10ee4bf"
|
||||
},
|
||||
{
|
||||
"domain": "/tmp/mxl",
|
||||
"flow": "511f7ea0-9a48-45df-b258-f403e4deb810"
|
||||
},
|
||||
{
|
||||
"domain": "/tmp/mxl",
|
||||
"flow": "fe28bb88-b503-4e16-9c51-894504fe7df8"
|
||||
},
|
||||
{
|
||||
"domain": "/tmp/mxl",
|
||||
"flow": "fdd8346e-216d-4992-9586-31f4a916a951"
|
||||
},
|
||||
{
|
||||
"domain": "/tmp/mxl",
|
||||
"flow": "64a8fe9a-8a89-441a-94b5-637c23fd6964"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
+46
-64
@@ -6,75 +6,57 @@
|
||||
2 1397 1778927333260233960 CMakeFiles/multiview_test.dir/imgui/imgui_widgets.cpp.o fd62c43f9b0da4fb
|
||||
1 1509 1778927333259086969 CMakeFiles/multiview_test.dir/imgui/imgui.cpp.o 184c54d1d7f8da34
|
||||
3 593 1778927572649246506 CMakeFiles/multiview_test.dir/main.cpp.o b6b27a2b15f1d256
|
||||
3 1753 1779007423070775331 CMakeFiles/mxl_multiviewer.dir/main.cpp.o 74ec6e8ad51ac778
|
||||
1753 1929 1779007424820737076 mxl_multiviewer cdec97a9a3fabbaf
|
||||
1 76 1779007718320780480 build.ninja 6c533b4704507e25
|
||||
1 76 1779007718319320950 /home/itten/mxl-multiviewer/build/cmake_install.cmake 6c533b4704507e25
|
||||
4 301 1778983233967716048 CMakeFiles/mxl_multiviewer.dir/FakeFeed.cpp.o 5e0b3d1cb566d05a
|
||||
4 529 1779007423072713130 CMakeFiles/mxl_multiviewer.dir/MxlFeed.cpp.o 93407c7ad5167d54
|
||||
4 718 1779007423073204668 CMakeFiles/mxl_multiviewer.dir/SmpteBarsFeed.cpp.o 69d711f0c48f92ec
|
||||
2 697 1778977198978521832 CMakeFiles/mxl_multiviewer.dir/FeedFactory.cpp.o 6eef4c3632622be1
|
||||
10 702 1779007013771260189 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 970034ac264b5657
|
||||
2 555 1778979545142358597 CMakeFiles/mxl_multiviewer.dir/TileLayout.cpp.o a2065395257d96dd
|
||||
3 416 1778981452702032549 CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o c4af20d1203eab69
|
||||
4 556 1778981355664862320 CMakeFiles/mxl_multiviewer.dir/FeedTexture.cpp.o 37993e8dd95f73ed
|
||||
4 684 1779007189118962700 CMakeFiles/mxl_multiviewer.dir/RenderPipeline.cpp.o f6bae6695ad450e3
|
||||
2 843 1778977328847325588 CMakeFiles/mxl_multiviewer.dir/VulkanContext.cpp.o e40207fe55f6123f
|
||||
4 886 1778983008534577859 CMakeFiles/mxl_multiviewer.dir/Swapchain.cpp.o 9b30fbbe9a04c9f3
|
||||
4 1664 1779007423072928867 CMakeFiles/mxl_multiviewer.dir/MxlSdkFeed.cpp.o d76d11a126fb2fc3
|
||||
11 452 1779007013771846780 CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o 9ea093f5f6628b8f
|
||||
3 844 1779007423072250645 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 40e954a9c2dbd11f
|
||||
1 445 1778980407712453965 CMakeFiles/v210_test.dir/v210_test.cpp.o 682a0bc85afb62d1
|
||||
445 523 1778980408156444438 v210_test 4225e54a48d1d5e7
|
||||
4 789 1778981355665094260 CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o f17de5555db36a7c
|
||||
4 533 1779007423072479652 CMakeFiles/mxl_multiviewer.dir/NoSignalFeed.cpp.o 54ed93bfc21c9ce4
|
||||
9 3997 1779054776007096538 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3998 4649 1779054779996013156 mxl_multiviewer 205aad974c69f886
|
||||
1 73 1779007718320780480 build.ninja 6c533b4704507e25
|
||||
1 73 1779007718320780480 /home/itten/mxl-multiviewer/build/cmake_install.cmake 6c533b4704507e25
|
||||
4 301 1778983233967716048 CMakeFiles/mxl_multiviewer.dir/FakeFeed.cpp.o 5e0b3d1cb566d05a
|
||||
12 905 1779007718338349519 CMakeFiles/mxl_multiviewer.dir/MxlFeed.cpp.o cd8f13ea68566562
|
||||
330 1484 1779007718656313583 CMakeFiles/mxl_multiviewer.dir/SmpteBarsFeed.cpp.o 9f5909ef338d6f84
|
||||
2 697 1778977198978521832 CMakeFiles/mxl_multiviewer.dir/FeedFactory.cpp.o 6eef4c3632622be1
|
||||
12 2727 1779054312183791887 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 8761582270eea4c9
|
||||
5 774 1779009114556786973 CMakeFiles/mxl_multiviewer.dir/TileLayout.cpp.o 92548a3beaf6cc2a
|
||||
10 1100 1779054776009391713 CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o 94922b0abaec7af0
|
||||
10 1303 1779054776008096517 CMakeFiles/mxl_multiviewer.dir/FeedTexture.cpp.o 465574e8abbc9d5d
|
||||
5 803 1779009114557038260 CMakeFiles/mxl_multiviewer.dir/RenderPipeline.cpp.o 25f2e2a829e624ca
|
||||
809 2567 1779007719135303112 CMakeFiles/mxl_multiviewer.dir/VulkanContext.cpp.o 24d381eb6627ff86
|
||||
1447 3074 1779007719773289165 CMakeFiles/mxl_multiviewer.dir/Swapchain.cpp.o 836fd7034af2b687
|
||||
13 3795 1779054312186396526 CMakeFiles/mxl_multiviewer.dir/MxlSdkFeed.cpp.o 351bcf65838bfc2a
|
||||
13 809 1779007718339320513 CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o 57a3a622c77e76d2
|
||||
13 1859 1779054312184791866 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 4db48c69f1f95087
|
||||
1 445 1778980407712453965 CMakeFiles/v210_test.dir/v210_test.cpp.o 682a0bc85afb62d1
|
||||
445 523 1778980408156444438 v210_test 4225e54a48d1d5e7
|
||||
12 1679 1779054776010096476 CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o e19e2ad84bfeb27f
|
||||
5 466 1779009941332887356 CMakeFiles/mxl_multiviewer.dir/NoSignalFeed.cpp.o 60fdc117eb712bfb
|
||||
5 330 1779007718331633644 CMakeFiles/mxl_multiviewer.dir/imgui/backends/imgui_impl_sdl3.cpp.o 2c9f9be8bffd084e
|
||||
5 741 1779007718331977818 CMakeFiles/mxl_multiviewer.dir/imgui/backends/imgui_impl_vulkan.cpp.o 8c0e4a436c69f5e7
|
||||
13 809 1779007718339320513 CMakeFiles/mxl_multiviewer.dir/MxlInstanceCache.cpp.o 57a3a622c77e76d2
|
||||
12 905 1779007718338349519 CMakeFiles/mxl_multiviewer.dir/MxlFeed.cpp.o cd8f13ea68566562
|
||||
7 1447 1779007718333978263 CMakeFiles/mxl_multiviewer.dir/FeedTexture.cpp.o 465574e8abbc9d5d
|
||||
330 1484 1779007718656313583 CMakeFiles/mxl_multiviewer.dir/SmpteBarsFeed.cpp.o 9f5909ef338d6f84
|
||||
6 1501 1779007718332320666 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 8761582270eea4c9
|
||||
7 1503 1779007718333320644 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 4db48c69f1f95087
|
||||
10 1623 1779007718336320578 CMakeFiles/mxl_multiviewer.dir/NoSignalFeed.cpp.o 60fdc117eb712bfb
|
||||
905 1869 1779007719231301013 CMakeFiles/mxl_multiviewer.dir/VulkanUtils.cpp.o 94922b0abaec7af0
|
||||
741 2467 1779007719067304598 CMakeFiles/mxl_multiviewer.dir/TileLayout.cpp.o 92548a3beaf6cc2a
|
||||
809 2567 1779007719135303112 CMakeFiles/mxl_multiviewer.dir/VulkanContext.cpp.o 24d381eb6627ff86
|
||||
4 2605 1779007718331033084 CMakeFiles/mxl_multiviewer.dir/imgui/imgui_tables.cpp.o a09d10ce44cb3e25
|
||||
1484 2927 1779007719810288356 CMakeFiles/mxl_multiviewer.dir/RenderPipeline.cpp.o 25f2e2a829e624ca
|
||||
1447 3074 1779007719773289165 CMakeFiles/mxl_multiviewer.dir/Swapchain.cpp.o 836fd7034af2b687
|
||||
3 3125 1779007718330030033 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
1501 3139 1779007719827287985 CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o e19e2ad84bfeb27f
|
||||
4 3229 1779007718330752185 CMakeFiles/mxl_multiviewer.dir/imgui/imgui_draw.cpp.o 1a20a9661d6284ca
|
||||
14 3290 1779007718341320469 CMakeFiles/mxl_multiviewer.dir/MxlSdkFeed.cpp.o 351bcf65838bfc2a
|
||||
4 3443 1779007718331330396 CMakeFiles/mxl_multiviewer.dir/imgui/imgui_widgets.cpp.o bdac470fb57774d5
|
||||
3 3611 1779007718330343966 CMakeFiles/mxl_multiviewer.dir/imgui/imgui.cpp.o f1eaf5c81331737a
|
||||
3611 3867 1779007721937241859 mxl_multiviewer 205aad974c69f886
|
||||
5 1543 1779008117816579924 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
5 1582 1779008117818216500 CMakeFiles/mxl_multiviewer.dir/MxlSdkFeed.cpp.o 351bcf65838bfc2a
|
||||
1582 1829 1779008119393545416 mxl_multiviewer 205aad974c69f886
|
||||
4 730 1779008283108962935 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 4db48c69f1f95087
|
||||
5 1517 1779008283109962913 CMakeFiles/mxl_multiviewer.dir/MxlSdkFeed.cpp.o 351bcf65838bfc2a
|
||||
1517 1756 1779008284621929827 mxl_multiviewer 205aad974c69f886
|
||||
4 699 1779008561069442869 CMakeFiles/mxl_multiviewer.dir/RenderPipeline.cpp.o 25f2e2a829e624ca
|
||||
4 1494 1779008561067880534 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
1494 1736 1779008562557847930 mxl_multiviewer 205aad974c69f886
|
||||
4 555 1779008749414207666 CMakeFiles/mxl_multiviewer.dir/TileLayout.cpp.o 92548a3beaf6cc2a
|
||||
4 729 1779008749414419772 CMakeFiles/mxl_multiviewer.dir/RenderPipeline.cpp.o 25f2e2a829e624ca
|
||||
4 1523 1779008749412759102 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
1523 1764 1779008750931725863 mxl_multiviewer 205aad974c69f886
|
||||
5 774 1779009114556786973 CMakeFiles/mxl_multiviewer.dir/TileLayout.cpp.o 92548a3beaf6cc2a
|
||||
5 803 1779009114557038260 CMakeFiles/mxl_multiviewer.dir/RenderPipeline.cpp.o 25f2e2a829e624ca
|
||||
5 840 1779009114556529890 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 4db48c69f1f95087
|
||||
4 900 1779009114556313105 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 8761582270eea4c9
|
||||
4 1724 1779009114554768928 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
1724 1975 1779009116274731292 mxl_multiviewer 205aad974c69f886
|
||||
4 622 1779009150878974069 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 8761582270eea4c9
|
||||
622 872 1779009151496960546 mxl_multiviewer 205aad974c69f886
|
||||
4 1574 1779009183315264286 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
1574 1833 1779009184885229931 mxl_multiviewer 205aad974c69f886
|
||||
5 466 1779009941332887356 CMakeFiles/mxl_multiviewer.dir/NoSignalFeed.cpp.o 60fdc117eb712bfb
|
||||
5 662 1779009941331679183 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 8761582270eea4c9
|
||||
662 919 1779009941988664817 mxl_multiviewer 205aad974c69f886
|
||||
6 1567 1779054848235586712 CMakeFiles/mxl_multiviewer.dir/V210ComputeDecoder.cpp.o e19e2ad84bfeb27f
|
||||
5 3876 1779054848233586753 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3876 4531 1779054852104505838 mxl_multiviewer 205aad974c69f886
|
||||
14 1616 1779055038103617809 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 4db48c69f1f95087
|
||||
12 2722 1779055038101617851 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 8761582270eea4c9
|
||||
11 3707 1779055055333257650 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3708 4394 1779055059030180371 mxl_multiviewer 205aad974c69f886
|
||||
8 3819 1779055227410660634 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3820 4512 1779055231222580951 mxl_multiviewer 205aad974c69f886
|
||||
13 1066 1779055934426291311 CMakeFiles/mxl_multiviewer.dir/MxlFeed.cpp.o cd8f13ea68566562
|
||||
13 1203 1779055934424881577 CMakeFiles/mxl_multiviewer.dir/NoSignalFeed.cpp.o 60fdc117eb712bfb
|
||||
16 1233 1779055934427881514 CMakeFiles/mxl_multiviewer.dir/SmpteBarsFeed.cpp.o 9f5909ef338d6f84
|
||||
12 1900 1779055934423881598 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 4db48c69f1f95087
|
||||
14 3929 1779055934426881535 CMakeFiles/mxl_multiviewer.dir/MxlSdkFeed.cpp.o 351bcf65838bfc2a
|
||||
10 4326 1779055934421881640 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
4326 5010 1779055938737791422 mxl_multiviewer 205aad974c69f886
|
||||
12 1766 1779056220053910937 CMakeFiles/mxl_multiviewer.dir/FeedCreate.cpp.o 4db48c69f1f95087
|
||||
10 2486 1779056220051910978 CMakeFiles/mxl_multiviewer.dir/AppConfig.cpp.o 8761582270eea4c9
|
||||
6 3931 1779056220047911062 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3932 4606 1779056223973828997 mxl_multiviewer 205aad974c69f886
|
||||
10 3933 1779056371682741367 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3934 4592 1779056375606659343 mxl_multiviewer 205aad974c69f886
|
||||
10 3775 1779056501994010048 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3775 4452 1779056505758931079 mxl_multiviewer 205aad974c69f886
|
||||
13 3972 1779056635253214966 CMakeFiles/mxl_multiviewer.dir/main.cpp.o cfdc8d343a283e56
|
||||
3972 4674 1779056639212131929 mxl_multiviewer 205aad974c69f886
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"grid": "2x2",
|
||||
"fpsCap": 60,
|
||||
"paceUploads": false,
|
||||
"maxV210UploadsPerFrame": 0,
|
||||
"present": "mailbox",
|
||||
"feeds": [
|
||||
{
|
||||
"domain": "/tmp/mxl",
|
||||
"flow": "853a9cda-0f7a-4b48-b2df-b3f628440150"
|
||||
},
|
||||
{
|
||||
"domain": "/tmp/mxl",
|
||||
"flow": "fab60e17-f721-4e12-a7dd-312f5f6e502d"
|
||||
},
|
||||
{
|
||||
"kind": "nosignal"
|
||||
},
|
||||
{
|
||||
"kind": "smpte"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -45,17 +45,46 @@ struct PerfStats
|
||||
uint64_t frames = 0;
|
||||
uint64_t feedReadTicks = 0;
|
||||
uint64_t uploadDecodeTicks = 0;
|
||||
uint64_t stageCopyTicks = 0;
|
||||
uint64_t uploadRecordTicks = 0;
|
||||
uint64_t submitPresentTicks = 0;
|
||||
uint64_t idleDelayTicks = 0;
|
||||
uint64_t frameTicks = 0;
|
||||
};
|
||||
|
||||
struct FramePerfStats
|
||||
{
|
||||
uint64_t eventTicks = 0;
|
||||
uint64_t fenceWaitTicks = 0;
|
||||
uint64_t feedReadTicks = 0;
|
||||
uint64_t stageCopyTicks = 0;
|
||||
uint64_t maxStageCopyTicks = 0;
|
||||
uint64_t maxStageCopyBytes = 0;
|
||||
uint32_t maxStageCopyFeed = 0;
|
||||
uint32_t stageCopies = 0;
|
||||
uint32_t v210StageCopies = 0;
|
||||
uint64_t uploadRecordTicks = 0;
|
||||
uint64_t layoutTicks = 0;
|
||||
uint64_t imguiTicks = 0;
|
||||
uint64_t drawRecordTicks = 0;
|
||||
uint64_t acquireTicks = 0;
|
||||
uint64_t submitPresentTicks = 0;
|
||||
uint64_t idleDelayTicks = 0;
|
||||
};
|
||||
|
||||
struct FeedPerfStats
|
||||
{
|
||||
uint64_t updates = 0;
|
||||
uint64_t uploads = 0;
|
||||
uint64_t deferredUploads = 0;
|
||||
uint64_t repeats = 0;
|
||||
uint64_t skippedGrains = 0;
|
||||
uint64_t lastGrain = 0;
|
||||
uint64_t lastUploadTicks = 0;
|
||||
uint64_t uploadIntervalTicks = 0;
|
||||
uint64_t minUploadIntervalTicks = UINT64_MAX;
|
||||
uint64_t maxUploadIntervalTicks = 0;
|
||||
uint64_t uploadIntervals = 0;
|
||||
bool hasLastGrain = false;
|
||||
};
|
||||
|
||||
@@ -721,6 +750,11 @@ int main(int argc, char* argv[])
|
||||
std::vector<bool> v210FeedReady(feedCount);
|
||||
std::vector<uint64_t> uploadedVersions(feedCount);
|
||||
std::vector<bool> feedUploadNeeded(feedCount);
|
||||
std::vector<const VideoFrame*> pendingFrames(feedCount);
|
||||
std::vector<uint64_t> pendingVersions(feedCount);
|
||||
std::vector<bool> pendingUploadNeeded(feedCount);
|
||||
std::vector<double> feedUploadCredits(feedCount, 1.0);
|
||||
uint64_t lastUploadPaceTicks = SDL_GetPerformanceCounter();
|
||||
|
||||
std::fill(
|
||||
uploadedVersions.begin(),
|
||||
@@ -1026,9 +1060,14 @@ int main(int argc, char* argv[])
|
||||
const Uint64 frameStartTicks = SDL_GetTicks();
|
||||
const uint64_t perfFrameStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
FramePerfStats framePerf;
|
||||
uint64_t perfSectionStartTicks = 0;
|
||||
|
||||
SDL_Event event;
|
||||
|
||||
perfSectionStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
|
||||
while (SDL_PollEvent(&event))
|
||||
{
|
||||
ImGui_ImplSDL3_ProcessEvent(&event);
|
||||
@@ -1048,11 +1087,18 @@ int main(int argc, char* argv[])
|
||||
if (event.key.key == SDLK_ESCAPE)
|
||||
{
|
||||
g_running = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
framePerf.eventTicks +=
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
}
|
||||
|
||||
// ---- resize handling ----
|
||||
|
||||
if (framebufferResized)
|
||||
@@ -1124,7 +1170,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
// ---- frame timing ----
|
||||
|
||||
uint64_t perfSectionStartTicks =
|
||||
perfSectionStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
|
||||
vkWaitForFences(
|
||||
@@ -1142,9 +1188,12 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
perfStats.submitPresentTicks +=
|
||||
const uint64_t elapsed =
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
perfStats.submitPresentTicks += elapsed;
|
||||
framePerf.fenceWaitTicks += elapsed;
|
||||
framePerf.submitPresentTicks += elapsed;
|
||||
}
|
||||
|
||||
++frameCounter;
|
||||
@@ -1178,6 +1227,47 @@ int main(int argc, char* argv[])
|
||||
feedUploadNeeded.end(),
|
||||
false
|
||||
);
|
||||
std::fill(
|
||||
pendingFrames.begin(),
|
||||
pendingFrames.end(),
|
||||
nullptr
|
||||
);
|
||||
std::fill(
|
||||
pendingUploadNeeded.begin(),
|
||||
pendingUploadNeeded.end(),
|
||||
false
|
||||
);
|
||||
|
||||
const uint64_t uploadPaceTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
const double uploadPaceDeltaSeconds =
|
||||
static_cast<double>(
|
||||
uploadPaceTicks - lastUploadPaceTicks) /
|
||||
static_cast<double>(perfFrequency);
|
||||
lastUploadPaceTicks = uploadPaceTicks;
|
||||
|
||||
if (config.paceUploads)
|
||||
{
|
||||
for (uint32_t i = 0; i < feedCount; ++i)
|
||||
{
|
||||
if (!feeds[i]->hasFrameRate())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const double rate =
|
||||
std::min(
|
||||
feeds[i]->frameRate(),
|
||||
static_cast<double>(config.fpsCap)
|
||||
);
|
||||
feedUploadCredits[i] =
|
||||
std::min(
|
||||
2.0,
|
||||
feedUploadCredits[i] +
|
||||
rate * uploadPaceDeltaSeconds
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < feedCount; ++i)
|
||||
{
|
||||
@@ -1193,9 +1283,11 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
perfStats.feedReadTicks +=
|
||||
const uint64_t elapsed =
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
perfStats.feedReadTicks += elapsed;
|
||||
framePerf.feedReadTicks += elapsed;
|
||||
|
||||
if (uploadNeeded)
|
||||
{
|
||||
@@ -1231,10 +1323,55 @@ int main(int argc, char* argv[])
|
||||
continue;
|
||||
}
|
||||
|
||||
pendingFrames[i] = &frame;
|
||||
pendingVersions[i] = version;
|
||||
pendingUploadNeeded[i] = true;
|
||||
}
|
||||
|
||||
const uint32_t maxV210Uploads =
|
||||
config.maxV210UploadsPerFrame == 0
|
||||
? feedCount
|
||||
: config.maxV210UploadsPerFrame;
|
||||
uint32_t v210UploadsThisFrame = 0;
|
||||
const uint32_t uploadStart =
|
||||
feedCount == 0 ? 0 : frameCounter % feedCount;
|
||||
|
||||
for (uint32_t offset = 0; offset < feedCount; ++offset)
|
||||
{
|
||||
const uint32_t i =
|
||||
(uploadStart + offset) % feedCount;
|
||||
|
||||
if (!pendingUploadNeeded[i])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const bool isV210 = feeds[i]->hasV210();
|
||||
if (config.paceUploads &&
|
||||
isV210 &&
|
||||
feeds[i]->hasFrameRate() &&
|
||||
feedUploadCredits[i] < 1.0)
|
||||
{
|
||||
if (config.logPerf)
|
||||
{
|
||||
++feedPerfStats[i].deferredUploads;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isV210 && v210UploadsThisFrame >= maxV210Uploads)
|
||||
{
|
||||
if (config.logPerf)
|
||||
{
|
||||
++feedPerfStats[i].deferredUploads;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
perfSectionStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
|
||||
if (feeds[i]->hasV210())
|
||||
if (isV210)
|
||||
{
|
||||
if (!v210FeedReady[i])
|
||||
{
|
||||
@@ -1284,7 +1421,7 @@ int main(int argc, char* argv[])
|
||||
else
|
||||
{
|
||||
copyFrameToFeedTextureStaging(
|
||||
frame,
|
||||
*pendingFrames[i],
|
||||
imageSize,
|
||||
feedTextures[i]
|
||||
);
|
||||
@@ -1292,17 +1429,79 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
perfStats.uploadDecodeTicks +=
|
||||
const uint64_t elapsed =
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
perfStats.stageCopyTicks += elapsed;
|
||||
perfStats.uploadDecodeTicks += elapsed;
|
||||
framePerf.stageCopyTicks += elapsed;
|
||||
++framePerf.stageCopies;
|
||||
if (isV210)
|
||||
{
|
||||
++framePerf.v210StageCopies;
|
||||
}
|
||||
if (elapsed > framePerf.maxStageCopyTicks)
|
||||
{
|
||||
framePerf.maxStageCopyTicks = elapsed;
|
||||
framePerf.maxStageCopyFeed = i + 1;
|
||||
framePerf.maxStageCopyBytes =
|
||||
isV210
|
||||
? static_cast<uint64_t>(
|
||||
feeds[i]->v210Stride()) *
|
||||
feeds[i]->v210Height()
|
||||
: static_cast<uint64_t>(imageSize);
|
||||
}
|
||||
}
|
||||
|
||||
uploadedVersions[i] = version;
|
||||
uploadedVersions[i] = pendingVersions[i];
|
||||
if (isV210)
|
||||
{
|
||||
++v210UploadsThisFrame;
|
||||
if (config.paceUploads &&
|
||||
feeds[i]->hasFrameRate())
|
||||
{
|
||||
feedUploadCredits[i] =
|
||||
std::max(
|
||||
0.0,
|
||||
feedUploadCredits[i] - 1.0
|
||||
);
|
||||
}
|
||||
}
|
||||
if (config.logPerf)
|
||||
{
|
||||
++feedPerfStats[i].uploads;
|
||||
|
||||
const uint64_t uploadTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
if (feedPerfStats[i].lastUploadTicks != 0)
|
||||
{
|
||||
const uint64_t interval =
|
||||
uploadTicks -
|
||||
feedPerfStats[i].lastUploadTicks;
|
||||
feedPerfStats[i].uploadIntervalTicks +=
|
||||
interval;
|
||||
feedPerfStats[i].minUploadIntervalTicks =
|
||||
std::min(
|
||||
feedPerfStats[i].minUploadIntervalTicks,
|
||||
interval
|
||||
);
|
||||
feedPerfStats[i].maxUploadIntervalTicks =
|
||||
std::max(
|
||||
feedPerfStats[i].maxUploadIntervalTicks,
|
||||
interval
|
||||
);
|
||||
++feedPerfStats[i].uploadIntervals;
|
||||
}
|
||||
feedPerfStats[i].lastUploadTicks = uploadTicks;
|
||||
}
|
||||
feedUploadNeeded[i] = true;
|
||||
}
|
||||
|
||||
// ---- update vertex UVs for aspect ratio ----
|
||||
|
||||
perfSectionStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
|
||||
VkExtent2D swapExtent = swapchain.extent();
|
||||
const float gapX =
|
||||
2.0f * TILE_GAP_PIXELS /
|
||||
@@ -1349,8 +1548,18 @@ int main(int argc, char* argv[])
|
||||
static_cast<size_t>(vbSize)
|
||||
);
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
framePerf.layoutTicks +=
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
}
|
||||
|
||||
// ---- ImGui frame ----
|
||||
|
||||
perfSectionStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
|
||||
ImGui_ImplVulkan_NewFrame();
|
||||
ImGui_ImplSDL3_NewFrame();
|
||||
ImGui::NewFrame();
|
||||
@@ -1364,6 +1573,13 @@ int main(int argc, char* argv[])
|
||||
ImGui::Render();
|
||||
ImDrawData* imguiDrawData = ImGui::GetDrawData();
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
framePerf.imguiTicks +=
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
}
|
||||
|
||||
// ---- record upload commands ----
|
||||
|
||||
perfSectionStartTicks =
|
||||
@@ -1431,9 +1647,12 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
perfStats.uploadDecodeTicks +=
|
||||
const uint64_t elapsed =
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
perfStats.uploadRecordTicks += elapsed;
|
||||
perfStats.uploadDecodeTicks += elapsed;
|
||||
framePerf.uploadRecordTicks += elapsed;
|
||||
}
|
||||
|
||||
// ---- acquire swapchain image ----
|
||||
@@ -1453,6 +1672,13 @@ int main(int argc, char* argv[])
|
||||
&imageIndex
|
||||
);
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
framePerf.acquireTicks +=
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
}
|
||||
|
||||
if (acquireResult == VK_ERROR_OUT_OF_DATE_KHR)
|
||||
{
|
||||
std::cout
|
||||
@@ -1471,14 +1697,27 @@ int main(int argc, char* argv[])
|
||||
);
|
||||
}
|
||||
|
||||
perfSectionStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
|
||||
recordDrawCmdBuf(
|
||||
drawCmdBufs[imageIndex],
|
||||
imageIndex,
|
||||
imguiDrawData
|
||||
);
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
framePerf.drawRecordTicks +=
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
}
|
||||
|
||||
// ---- submit ----
|
||||
|
||||
perfSectionStartTicks =
|
||||
SDL_GetPerformanceCounter();
|
||||
|
||||
VkPipelineStageFlags waitStage =
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
|
||||
@@ -1554,9 +1793,11 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
perfStats.submitPresentTicks +=
|
||||
const uint64_t elapsed =
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
perfStats.submitPresentTicks += elapsed;
|
||||
framePerf.submitPresentTicks += elapsed;
|
||||
}
|
||||
|
||||
const Uint64 frameElapsedTicks =
|
||||
@@ -1575,9 +1816,11 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (config.logPerf)
|
||||
{
|
||||
perfStats.idleDelayTicks +=
|
||||
const uint64_t elapsed =
|
||||
SDL_GetPerformanceCounter() -
|
||||
perfSectionStartTicks;
|
||||
perfStats.idleDelayTicks += elapsed;
|
||||
framePerf.idleDelayTicks += elapsed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1586,7 +1829,76 @@ int main(int argc, char* argv[])
|
||||
++perfStats.frames;
|
||||
|
||||
const uint64_t now = SDL_GetPerformanceCounter();
|
||||
perfStats.frameTicks += now - perfFrameStartTicks;
|
||||
const uint64_t currentFrameTicks =
|
||||
now - perfFrameStartTicks;
|
||||
perfStats.frameTicks += currentFrameTicks;
|
||||
|
||||
const double invMs =
|
||||
1000.0 /
|
||||
static_cast<double>(perfFrequency);
|
||||
|
||||
if (currentFrameTicks * invMs > 25.0)
|
||||
{
|
||||
const uint64_t accountedTicks =
|
||||
framePerf.eventTicks +
|
||||
framePerf.fenceWaitTicks +
|
||||
framePerf.feedReadTicks +
|
||||
framePerf.stageCopyTicks +
|
||||
framePerf.uploadRecordTicks +
|
||||
framePerf.layoutTicks +
|
||||
framePerf.imguiTicks +
|
||||
framePerf.drawRecordTicks +
|
||||
framePerf.acquireTicks +
|
||||
framePerf.submitPresentTicks +
|
||||
framePerf.idleDelayTicks;
|
||||
const uint64_t otherTicks =
|
||||
currentFrameTicks > accountedTicks
|
||||
? currentFrameTicks - accountedTicks
|
||||
: 0;
|
||||
|
||||
std::cout
|
||||
<< "SPIKE frame="
|
||||
<< (currentFrameTicks * invMs)
|
||||
<< "ms event="
|
||||
<< (framePerf.eventTicks * invMs)
|
||||
<< "ms fence="
|
||||
<< (framePerf.fenceWaitTicks * invMs)
|
||||
<< "ms feedRead="
|
||||
<< (framePerf.feedReadTicks * invMs)
|
||||
<< "ms stageCopy="
|
||||
<< (framePerf.stageCopyTicks * invMs)
|
||||
<< "ms stageCopies="
|
||||
<< framePerf.stageCopies
|
||||
<< " v210Copies="
|
||||
<< framePerf.v210StageCopies
|
||||
<< " maxCopy=f"
|
||||
<< framePerf.maxStageCopyFeed
|
||||
<< ":"
|
||||
<< (framePerf.maxStageCopyTicks * invMs)
|
||||
<< "ms/"
|
||||
<< (static_cast<double>(
|
||||
framePerf.maxStageCopyBytes) /
|
||||
(1024.0 * 1024.0))
|
||||
<< "MiB"
|
||||
<< " uploadRecord="
|
||||
<< (framePerf.uploadRecordTicks * invMs)
|
||||
<< "ms layout="
|
||||
<< (framePerf.layoutTicks * invMs)
|
||||
<< "ms imgui="
|
||||
<< (framePerf.imguiTicks * invMs)
|
||||
<< "ms drawRecord="
|
||||
<< (framePerf.drawRecordTicks * invMs)
|
||||
<< "ms acquire="
|
||||
<< (framePerf.acquireTicks * invMs)
|
||||
<< "ms submitPresent="
|
||||
<< (framePerf.submitPresentTicks * invMs)
|
||||
<< "ms idleDelay="
|
||||
<< (framePerf.idleDelayTicks * invMs)
|
||||
<< "ms other="
|
||||
<< (otherTicks * invMs)
|
||||
<< "ms"
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
const uint64_t elapsedTicks = now - lastPerfLogTicks;
|
||||
|
||||
@@ -1595,9 +1907,6 @@ int main(int argc, char* argv[])
|
||||
const double elapsedSeconds =
|
||||
static_cast<double>(elapsedTicks) /
|
||||
static_cast<double>(perfFrequency);
|
||||
const double invMs =
|
||||
1000.0 /
|
||||
static_cast<double>(perfFrequency);
|
||||
const double frames =
|
||||
static_cast<double>(perfStats.frames);
|
||||
|
||||
@@ -1607,6 +1916,10 @@ int main(int argc, char* argv[])
|
||||
<< (perfStats.feedReadTicks * invMs / frames)
|
||||
<< "ms uploadDecode="
|
||||
<< (perfStats.uploadDecodeTicks * invMs / frames)
|
||||
<< "ms stageCopy="
|
||||
<< (perfStats.stageCopyTicks * invMs / frames)
|
||||
<< "ms uploadRecord="
|
||||
<< (perfStats.uploadRecordTicks * invMs / frames)
|
||||
<< "ms submitPresent="
|
||||
<< (perfStats.submitPresentTicks * invMs / frames)
|
||||
<< "ms idleDelay="
|
||||
@@ -1625,6 +1938,8 @@ int main(int argc, char* argv[])
|
||||
<< feedRuntimeStatusName(
|
||||
feeds[i]->status())
|
||||
<< ":upd=" << feedPerfStats[i].updates
|
||||
<< ",upl=" << feedPerfStats[i].uploads
|
||||
<< ",def=" << feedPerfStats[i].deferredUploads
|
||||
<< ",rep=" << feedPerfStats[i].repeats;
|
||||
|
||||
if (feedPerfStats[i].hasLastGrain)
|
||||
@@ -1638,6 +1953,44 @@ int main(int argc, char* argv[])
|
||||
}
|
||||
std::cout << std::endl;
|
||||
|
||||
std::cout << "JITTER";
|
||||
for (uint32_t i = 0; i < feedCount; ++i)
|
||||
{
|
||||
std::cout << " f" << (i + 1)
|
||||
<< ":upl=" << feedPerfStats[i].uploads;
|
||||
|
||||
if (feedPerfStats[i].uploadIntervals > 0)
|
||||
{
|
||||
const double avgMs =
|
||||
feedPerfStats[i].uploadIntervalTicks *
|
||||
invMs /
|
||||
static_cast<double>(
|
||||
feedPerfStats[i].uploadIntervals);
|
||||
const double minMs =
|
||||
feedPerfStats[i].minUploadIntervalTicks *
|
||||
invMs;
|
||||
const double maxMs =
|
||||
feedPerfStats[i].maxUploadIntervalTicks *
|
||||
invMs;
|
||||
|
||||
std::cout
|
||||
<< ",avg=" << avgMs
|
||||
<< "ms,min=" << minMs
|
||||
<< "ms,max=" << maxMs
|
||||
<< "ms";
|
||||
}
|
||||
|
||||
if (feeds[i]->hasFrameRate() &&
|
||||
feeds[i]->frameRate() > 0.0)
|
||||
{
|
||||
std::cout
|
||||
<< ",exp="
|
||||
<< (1000.0 / feeds[i]->frameRate())
|
||||
<< "ms";
|
||||
}
|
||||
}
|
||||
std::cout << std::endl;
|
||||
|
||||
ThreadCpuSamples currentThreadCpuSamples =
|
||||
collectThreadCpuSamples();
|
||||
printThreadCpuPerf(
|
||||
|
||||
Reference in New Issue
Block a user