MCPcopy Create free account
hub / github.com/GPUOpen-Tools/compressonator / SaveDataBlock

Function SaveDataBlock

cmp_core/shaders/bc6_encode_kernel.cpp:2391–2718  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2389
2390#ifndef ASPM_GPU
2391void SaveDataBlock(BC6H_Encode_local* bc6h_format, CMP_GLOBAL CGU_UINT8 cmpout[COMPRESSED_BLOCK_SIZE])
2392{
2393 BitHeader header(NULL, COMPRESSED_BLOCK_SIZE);
2394
2395 // Save the RGB end point values
2396 switch (bc6h_format->m_mode)
2397 {
2398 case 1: //0x00
2399 header.setvalue(0, 2, 0x00);
2400 header.setvalue(2, 1, bc6h_format->gy, 4); // gy[4]
2401 header.setvalue(3, 1, bc6h_format->by, 4); // by[4]
2402 header.setvalue(4, 1, bc6h_format->bz, 4); // bz[4]
2403 header.setvalue(5, 10, bc6h_format->rw); // 10: rw[9:0]
2404 header.setvalue(15, 10, bc6h_format->gw); // 10: gw[9:0]
2405 header.setvalue(25, 10, bc6h_format->bw); // 10: bw[9:0]
2406 header.setvalue(35, 5, bc6h_format->rx); // 5: rx[4:0]
2407 header.setvalue(40, 1, bc6h_format->gz, 4); // gz[4]
2408 header.setvalue(41, 4, bc6h_format->gy); // 5: gy[3:0]
2409 header.setvalue(45, 5, bc6h_format->gx); // 5: gx[4:0]
2410 header.setvalue(50, 1, bc6h_format->bz); // 5: bz[0]
2411 header.setvalue(51, 4, bc6h_format->gz); // 5: gz[3:0]
2412 header.setvalue(55, 5, bc6h_format->bx); // 5: bx[4:0]
2413 header.setvalue(60, 1, bc6h_format->bz, 1); // bz[1]
2414 header.setvalue(61, 4, bc6h_format->by); // 5: by[3:0]
2415 header.setvalue(65, 5, bc6h_format->ry); // 5: ry[4:0]
2416 header.setvalue(70, 1, bc6h_format->bz, 2); // bz[2]
2417 header.setvalue(71, 5, bc6h_format->rz); // 5: rz[4:0]
2418 header.setvalue(76, 1, bc6h_format->bz, 3); // bz[3]
2419 break;
2420 case 2: // 0x01
2421 header.setvalue(0, 2, 0x01);
2422 header.setvalue(2, 1, bc6h_format->gy, 5); // gy[5]
2423 header.setvalue(3, 1, bc6h_format->gz, 4); // gz[4]
2424 header.setvalue(4, 1, bc6h_format->gz, 5); // gz[5]
2425 header.setvalue(5, 7, bc6h_format->rw); // rw[6:0]
2426 header.setvalue(12, 1, bc6h_format->bz); // bz[0]
2427 header.setvalue(13, 1, bc6h_format->bz, 1); // bz[1]
2428 header.setvalue(14, 1, bc6h_format->by, 4); // by[4]
2429 header.setvalue(15, 7, bc6h_format->gw); // gw[6:0]
2430 header.setvalue(22, 1, bc6h_format->by, 5); // by[5]
2431 header.setvalue(23, 1, bc6h_format->bz, 2); // bz[2]
2432 header.setvalue(24, 1, bc6h_format->gy, 4); // gy[4]
2433 header.setvalue(25, 7, bc6h_format->bw); // 7: bw[6:0]
2434 header.setvalue(32, 1, bc6h_format->bz, 3); // bz[3]
2435 header.setvalue(33, 1, bc6h_format->bz, 5); // bz[5]
2436 header.setvalue(34, 1, bc6h_format->bz, 4); // bz[4]
2437 header.setvalue(35, 6, bc6h_format->rx); // 6: rx[5:0]
2438 header.setvalue(41, 4, bc6h_format->gy); // 6: gy[3:0]
2439 header.setvalue(45, 6, bc6h_format->gx); // 6: gx[5:0]
2440 header.setvalue(51, 4, bc6h_format->gz); // 6: gz[3:0]
2441 header.setvalue(55, 6, bc6h_format->bx); // 6: bx[5:0]
2442 header.setvalue(61, 4, bc6h_format->by); // 6: by[3:0]
2443 header.setvalue(65, 6, bc6h_format->ry); // 6: ry[5:0]
2444 header.setvalue(71, 6, bc6h_format->rz); // 6: rz[5:0]
2445 break;
2446 case 3: // 0x02
2447 header.setvalue(0, 5, 0x02);
2448 header.setvalue(5, 10, bc6h_format->rw); // 11: rw[9:0]

Callers 1

Calls 2

setvalueMethod · 0.45
transferbitsMethod · 0.45

Tested by

no test coverage detected