mirror of
https://github.com/yuzu-emu/FasTC.git
synced 2024-11-24 04:25:41 +01:00
Add command line flags to choose between whether or not to use PVRTexLib or FasTC
This commit is contained in:
parent
219777687f
commit
ce7bb8e891
@ -101,6 +101,7 @@ int main(int argc, char **argv) {
|
||||
bool bUseSIMD = false;
|
||||
bool bSaveLog = false;
|
||||
bool bUseAtomics = false;
|
||||
bool bUsePVRTexLib = false;
|
||||
ECompressionFormat format = eCompressionFormat_BPTC;
|
||||
|
||||
bool knowArg = false;
|
||||
@ -129,6 +130,9 @@ int main(int argc, char **argv) {
|
||||
} else {
|
||||
if(!strcmp(argv[fileArg], "PVRTC")) {
|
||||
format = eCompressionFormat_PVRTC;
|
||||
} else if(!strcmp(argv[fileArg], "PVRTCLib")) {
|
||||
format = eCompressionFormat_PVRTC;
|
||||
bUsePVRTexLib = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -235,6 +239,7 @@ int main(int argc, char **argv) {
|
||||
settings.iQuality = quality;
|
||||
settings.iNumCompressions = numCompressions;
|
||||
settings.iJobSize = numJobs;
|
||||
settings.bUsePVRTexLib = bUsePVRTexLib;
|
||||
if(bSaveLog) {
|
||||
settings.logStream = &logStream;
|
||||
} else {
|
||||
|
@ -105,12 +105,26 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
bool bUseSIMD = false;
|
||||
bool bSaveLog = false;
|
||||
bool bUseAtomics = false;
|
||||
bool bUsePVRTexLib = false;
|
||||
ECompressionFormat format = eCompressionFormat_BPTC;
|
||||
|
||||
|
||||
bool knowArg = false;
|
||||
do {
|
||||
knowArg = false;
|
||||
|
||||
if(strcmp(argv[fileArg], "-n") == 0) {
|
||||
fileArg++;
|
||||
|
||||
if(fileArg == argc || (numCompressions = atoi(argv[fileArg])) < 0) {
|
||||
PrintUsage();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fileArg++;
|
||||
knowArg = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(strcmp(argv[fileArg], "-f") == 0) {
|
||||
fileArg++;
|
||||
|
||||
@ -120,6 +134,9 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
} else {
|
||||
if(!strcmp(argv[fileArg], "PVRTC")) {
|
||||
format = eCompressionFormat_PVRTC;
|
||||
} else if(!strcmp(argv[fileArg], "PVRTCLib")) {
|
||||
format = eCompressionFormat_PVRTC;
|
||||
bUsePVRTexLib = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -128,19 +145,6 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
continue;
|
||||
}
|
||||
|
||||
if(strcmp(argv[fileArg], "-n") == 0) {
|
||||
fileArg++;
|
||||
|
||||
if(fileArg == argc || (numCompressions = atoi(argv[fileArg])) < 0) {
|
||||
PrintUsage();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fileArg++;
|
||||
knowArg = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(strcmp(argv[fileArg], "-l") == 0) {
|
||||
fileArg++;
|
||||
bSaveLog = true;
|
||||
@ -200,6 +204,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
knowArg = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
} while(knowArg && fileArg < argc);
|
||||
|
||||
if(fileArg == argc) {
|
||||
@ -238,10 +243,12 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
settings.iQuality = quality;
|
||||
settings.iNumCompressions = numCompressions;
|
||||
settings.iJobSize = numJobs;
|
||||
if(bSaveLog)
|
||||
settings.bUsePVRTexLib = bUsePVRTexLib;
|
||||
if(bSaveLog) {
|
||||
settings.logStream = &logStream;
|
||||
else
|
||||
} else {
|
||||
settings.logStream = NULL;
|
||||
}
|
||||
|
||||
CompressedImage *ci = CompressImage(&img, settings);
|
||||
if(NULL == ci) {
|
||||
@ -268,8 +275,8 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
|
||||
// Cleanup
|
||||
delete ci;
|
||||
if(bSaveLog)
|
||||
if(bSaveLog) {
|
||||
logFile.close();
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -86,6 +86,11 @@ struct SCompressionSettings {
|
||||
// in the platform and compiler will provide synchronization.
|
||||
bool bUseAtomics;
|
||||
|
||||
// This flag instructs the infrastructure to use the compression routine from
|
||||
// PVRTexLib. If no such lib is found during configuration then this flag is
|
||||
// ignored. The quality being used is the fastest compression quality.
|
||||
bool bUsePVRTexLib;
|
||||
|
||||
// This is the output stream with which we should output the logs for the
|
||||
// compression functions.
|
||||
std::ostream *logStream;
|
||||
|
@ -73,6 +73,15 @@ static void CompressPVRTC(const CompressionJob &cj) {
|
||||
PVRTCC::Compress(cj);
|
||||
}
|
||||
|
||||
static void CompressPVRTCLib(const CompressionJob &cj) {
|
||||
#ifdef PVRTEXLIB_FOUND
|
||||
PVRTCC::CompressPVRLib(cj);
|
||||
#else
|
||||
fprintf(stderr, "WARNING: PVRTexLib not found, defaulting to FasTC implementation.\n");
|
||||
PVRTCC::Compress(cj);
|
||||
#endif
|
||||
}
|
||||
|
||||
SCompressionSettings:: SCompressionSettings()
|
||||
: format(eCompressionFormat_BPTC)
|
||||
, bUseSIMD(false)
|
||||
@ -122,7 +131,11 @@ static CompressionFunc ChooseFuncFromSettings(const SCompressionSettings &s) {
|
||||
|
||||
case eCompressionFormat_PVRTC:
|
||||
{
|
||||
return CompressPVRTC;
|
||||
if(s.bUsePVRTexLib) {
|
||||
return CompressPVRTCLib;
|
||||
} else {
|
||||
return CompressPVRTC;
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user