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

Function basis_compress

engine/dlib/src/basis/encoder/basisu_comp.cpp:2261–2381  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2259 }
2260
2261 void* basis_compress(
2262 const basisu::vector<image>& source_images,
2263 uint32_t flags_and_quality, float uastc_rdo_quality,
2264 size_t* pSize,
2265 image_stats* pStats)
2266 {
2267 // Check input parameters
2268 if ((!source_images.size()) || (!pSize))
2269 {
2270 error_printf("basis_compress: Invalid parameter\n");
2271 assert(0);
2272 return nullptr;
2273 }
2274
2275 *pSize = 0;
2276
2277 // Initialize a job pool
2278 uint32_t num_threads = 1;
2279 if (flags_and_quality & cFlagThreaded)
2280 num_threads = basisu::maximum<uint32_t>(1, std::thread::hardware_concurrency());
2281
2282 job_pool jp(num_threads);
2283
2284 // Initialize the compressor parameter struct
2285 basis_compressor_params comp_params;
2286 comp_params.m_pJob_pool = &jp;
2287
2288 comp_params.m_y_flip = (flags_and_quality & cFlagYFlip) != 0;
2289 comp_params.m_debug = (flags_and_quality & cFlagDebug) != 0;
2290
2291 // Copy the largest mipmap level
2292 comp_params.m_source_images.resize(1);
2293 comp_params.m_source_images[0] = source_images[0];
2294
2295 // Copy the smaller mipmap levels, if any
2296 if (source_images.size() > 1)
2297 {
2298 comp_params.m_source_mipmap_images.resize(1);
2299 comp_params.m_source_mipmap_images[0].resize(source_images.size() - 1);
2300
2301 for (uint32_t i = 1; i < source_images.size(); i++)
2302 comp_params.m_source_mipmap_images[0][i - 1] = source_images[i];
2303 }
2304
2305 comp_params.m_multithreading = (flags_and_quality & cFlagThreaded) != 0;
2306 comp_params.m_use_opencl = (flags_and_quality & cFlagUseOpenCL) != 0;
2307
2308 comp_params.m_write_output_basis_files = false;
2309
2310 comp_params.m_perceptual = (flags_and_quality & cFlagSRGB) != 0;
2311 comp_params.m_mip_srgb = comp_params.m_perceptual;
2312 comp_params.m_mip_gen = (flags_and_quality & (cFlagGenMipsWrap | cFlagGenMipsClamp)) != 0;
2313 comp_params.m_mip_wrapping = (flags_and_quality & cFlagGenMipsWrap) != 0;
2314
2315 comp_params.m_uastc = (flags_and_quality & cFlagUASTC) != 0;
2316 if (comp_params.m_uastc)
2317 {
2318 comp_params.m_pack_uastc_flags = flags_and_quality & cPackUASTCLevelMask;

Callers 1

Calls 9

error_printfFunction · 0.85
mallocFunction · 0.85
initMethod · 0.65
assertFunction · 0.50
sizeMethod · 0.45
resizeMethod · 0.45
processMethod · 0.45
get_opencl_failedMethod · 0.45
get_ptrMethod · 0.45

Tested by

no test coverage detected