From 98d52c1efa7a05ff92aba66dc2660123ac6713b5 Mon Sep 17 00:00:00 2001 From: Daniel Rakos Date: Thu, 30 Nov 2023 15:54:22 +0100 Subject: [PATCH] Disallow ASTC options when format is not ASTC --- tests/cts | 2 +- tools/ktx/command_create.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/cts b/tests/cts index 9b7ab7fe0e..a48547df0f 160000 --- a/tests/cts +++ b/tests/cts @@ -1 +1 @@ -Subproject commit 9b7ab7fe0e64aa40ec6aed1ef1b847dfca2eea7f +Subproject commit a48547df0f8246575f176c4e6b317b4156013b59 diff --git a/tools/ktx/command_create.cpp b/tools/ktx/command_create.cpp index 8a7580ec37..2c5810a655 100644 --- a/tools/ktx/command_create.cpp +++ b/tools/ktx/command_create.cpp @@ -555,6 +555,11 @@ struct OptionsASTC : public ktxAstcParams { inline static const char* kAstcQuality = "astc-quality"; inline static const char* kAstcPerceptual = "astc-perceptual"; + inline static const char* kAstcOptions[] = { + kAstcQuality, + kAstcPerceptual + }; + std::string astcOptions{}; bool encodeASTC = false; ClampedOption qualityLevel{ktxAstcParams::qualityLevel, 0, KTX_PACK_ASTC_QUALITY_LEVEL_MAX}; @@ -902,6 +907,12 @@ void CommandCreate::processOptions(cxxopts::Options& opts, cxxopts::ParseResult& options.inputFilepaths.size(), expectedInputImages); } + if (!isFormatAstc(options.vkFormat)) { + for (const char* astcOption : OptionsASTC::kAstcOptions) + if (args[astcOption].count()) + fatal_usage("--{} can only be used with ASTC formats.", astcOption); + } + if (options.codec == EncodeCodec::BasisLZ) { if (options.zstd.has_value()) fatal_usage("Cannot encode to BasisLZ and supercompress with Zstd.");