MCPcopy Create free account
hub / github.com/defold/defold / BasisUEncodeInternal

Function BasisUEncodeInternal

engine/texc/src/texc_enc_basis.cpp:78–161  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76 }
77
78 static bool BasisUEncodeInternal(int num_threads, basisu::basis_compressor_params& comp_params, PixelFormat pixel_format, dmArray<uint8_t>& out, int debug)
79 {
80 basisu::enable_debug_printf(debug);
81
82 basisu::job_pool jpool(num_threads);
83
84 comp_params.m_pJob_pool = &jpool;
85 comp_params.m_multithreading = num_threads > 1;
86
87 comp_params.m_read_source_images = false;
88 comp_params.m_write_output_basis_files = false;
89 comp_params.m_status_output = debug;
90 comp_params.m_debug = debug;
91
92 basisu::basis_compressor compressor;
93 if (!compressor.init(comp_params))
94 {
95 dmLogError("basis_compressor::init() failed!\n");
96 return false;
97 }
98
99 basisu::interval_timer tm;
100 tm.start();
101
102 basisu::basis_compressor::error_code ec = compressor.process();
103
104 tm.stop();
105
106 if (ec == basisu::basis_compressor::cECSuccess)
107 {
108 dmLogDebug("Compression succeeded in %3.3f secs\n", tm.get_elapsed_secs());
109 }
110 else
111 {
112 switch (ec)
113 {
114 case basisu::basis_compressor::cECFailedReadingSourceImages: dmLogError("Compressor failed reading a source image!\n"); break;
115 case basisu::basis_compressor::cECFailedValidating: dmLogError("Compressor failed 2darray/cubemap/video validation checks!\n"); break;
116 case basisu::basis_compressor::cECFailedEncodeUASTC: dmLogError("Compressor UASTC encode failed!\n"); break;
117 case basisu::basis_compressor::cECFailedFrontEnd: dmLogError("Compressor frontend stage failed!\n"); break;
118 case basisu::basis_compressor::cECFailedFontendExtract: dmLogError("Compressor frontend data extraction failed!\n"); break;
119 case basisu::basis_compressor::cECFailedBackend: dmLogError("Compressor backend stage failed!\n"); break;
120 case basisu::basis_compressor::cECFailedCreateBasisFile: dmLogError("Compressor failed creating Basis file data!\n"); break;
121 case basisu::basis_compressor::cECFailedWritingOutput: dmLogError("Compressor failed writing to output Basis file!\n"); break;
122 case basisu::basis_compressor::cECFailedUASTCRDOPostProcess: dmLogError("Compressor failed during the UASTC post process step!\n"); break;
123 default: dmLogError("basis_compress::process() failed!\n"); break;
124 }
125
126 return false;
127 }
128
129 //const std::vector<basisu::image_stats>& stats = compressor.get_stats();
130 //double bits_per_texel = compressor.get_basis_bits_per_texel();
131 // Statistics:
132
133 // basisu::image_metrics im;
134 // im.calc(a, b, 0, 3);
135 // im.print("RGB ");

Callers 1

BasisUEncodeFunction · 0.85

Calls 10

enable_debug_printfFunction · 0.85
get_elapsed_secsMethod · 0.80
initMethod · 0.65
startMethod · 0.45
processMethod · 0.45
stopMethod · 0.45
SetCapacityMethod · 0.45
sizeMethod · 0.45
SetSizeMethod · 0.45
BeginMethod · 0.45

Tested by

no test coverage detected