Home | History | Annotate | Download | only in main

Lines Matching refs:block

121  * The size of the source data must be a multiple of the ETC1 block size,
127 * found in the upper left part of the block(s), and the rest of the
129 * placed in the upper half of a 4x4 block, and the lower half of the
130 * pixels in the block will not be accessed.
307 etc2_get_pixel_index(const struct etc2_block *block, int x, int y)
310 int idx = (block->pixel_indices[1] >> bit) & 0x7;
336 etc2_rgb8_parse_block(struct etc2_block *block,
349 block->is_ind_mode = false;
350 block->is_diff_mode = false;
351 block->is_t_mode = false;
352 block->is_h_mode = false;
353 block->is_planar_mode = false;
356 block->opaque = src[3] & 0x2;
362 block->is_ind_mode = true;
368 block->base_colors[0][i] = etc1_base_color_ind_hi(src[i]);
369 block->base_colors[1][i] = etc1_base_color_ind_lo(src[i]);
374 block->is_t_mode = true;
377 block->base_colors[0][i] = etc2_base_color1_t_mode(src, i);
378 block->base_colors[1][i] = etc2_base_color2_t_mode(src, i);
381 block->distance =
386 block->paint_colors[0][i] = etc2_clamp(block->base_colors[0][i]);
387 block->paint_colors[1][i] = etc2_clamp(block->base_colors[1][i] +
388 block->distance);
389 block->paint_colors[2][i] = etc2_clamp(block->base_colors[1][i]);
390 block->paint_colors[3][i] = etc2_clamp(block->base_colors[1][i] -
391 block->distance);
398 block->is_h_mode = true;
401 block->base_colors[0][i] = etc2_base_color1_h_mode(src, i);
402 block->base_colors[1][i] = etc2_base_color2_h_mode(src, i);
405 base_color_1_value = (block->base_colors[0][0] << 16) +
406 (block->base_colors[0][1] << 8) +
407 block->base_colors[0][2];
408 base_color_2_value = (block->base_colors[1][0] << 16) +
409 (block->base_colors[1][1] << 8) +
410 block->base_colors[1][2];
412 block->distance =
418 block->paint_colors[0][i] = etc2_clamp(block->base_colors[0][i] +
419 block->distance);
420 block->paint_colors[1][i] = etc2_clamp(block->base_colors[0][i] -
421 block->distance);
422 block->paint_colors[2][i] = etc2_clamp(block->base_colors[1][i] +
423 block->distance);
424 block->paint_colors[3][i] = etc2_clamp(block->base_colors[1][i] -
425 block->distance);
430 block->is_planar_mode = true;
433 block->opaque = true;
436 block->base_colors[0][i] = etc2_base_color_o_planar(src, i);
437 block->base_colors[1][i] = etc2_base_color_h_planar(src, i);
438 block->base_colors[2][i] = etc2_base_color_v_planar(src, i);
443 block->is_diff_mode = true;
449 block->base_colors[0][i] = etc1_base_color_diff_hi(src[i]);
450 block->base_colors[1][i] = etc1_base_color_diff_lo(src[i]);
454 if (block->is_ind_mode || block->is_diff_mode) {
461 block->modifier_tables[0] = (!punchthrough_alpha || block->opaque) ?
464 block->modifier_tables[1] = (!punchthrough_alpha || block->opaque) ?
468 block->flipped = (src[3] & 0x1);
471 block->pixel_indices[0] =
476 etc2_rgb8_fetch_texel(const struct etc2_block *block,
485 idx = ((block->pixel_indices[0] >> (15 + bit)) & 0x2) |
486 ((block->pixel_indices[0] >> (bit)) & 0x1);
488 if (block->is_ind_mode || block->is_diff_mode) {
491 if (!block->opaque && idx == 2) {
500 blk = (block->flipped) ? (y >= 2) : (x >= 2);
501 base_color = block->base_colors[blk];
502 modifier = block->modifier_tables[blk][idx];
508 else if (block->is_t_mode || block->is_h_mode) {
511 if (!block->opaque && idx == 2) {
520 dst[0] = block->paint_colors[idx][0];
521 dst[1] = block->paint_colors[idx][1];
522 dst[2] = block->paint_colors[idx][2];
524 else if (block->is_planar_mode) {
530 red = (x * (block->base_colors[1][0] - block->base_colors[0][0]) +
531 y * (block->base_colors[2][0] - block->base_colors[0][0]) +
532 block->base_colors[0][0] + 2) >> 2;
534 green = (x * (block->base_colors[1][1] - block->base_colors[0][1]) +
535 y * (block->base_colors[2][1] - block->base_colors[0][1]) +
536 4 * block->base_colors[0][1] + 2) >> 2;
538 blue = (x * (block->base_colors[1][2] - block->base_colors[0][2]) +
539 y * (block->base_colors[2][2] - block->base_colors[0][2]) +
540 4 * block->base_colors[0][2] + 2) >> 2;
553 etc2_alpha8_fetch_texel(const struct etc2_block *block,
558 idx = etc2_get_pixel_index(block, x, y);
559 modifier = etc2_modifier_tables[block->table_index][idx];
560 alpha = block->base_codeword + modifier * block->multiplier;
565 etc2_r11_fetch_texel(const struct etc2_block *block,
571 idx = etc2_get_pixel_index(block, x, y);
572 modifier = etc2_modifier_tables[block->table_index][idx];
574 if (block->multiplier != 0)
576 color = etc2_clamp2(((block->base_codeword << 3) | 0x4) +
577 ((modifier * block->multiplier) << 3));
579 color = etc2_clamp2(((block->base_codeword << 3) | 0x4) + modifier);
591 etc2_signed_r11_fetch_texel(const struct etc2_block *block,
596 GLbyte base_codeword = (GLbyte) block->base_codeword;
602 idx = etc2_get_pixel_index(block, x, y);
603 modifier = etc2_modifier_tables[block->table_index][idx];
605 if (block->multiplier != 0)
608 ((modifier * block->multiplier) << 3));
629 etc2_alpha8_parse_block(struct etc2_block *block, const uint8_t *src)
631 block->base_codeword = src[0];
632 block->multiplier = (src[1] >> 4) & 0xf;
633 block->table_index = src[1] & 0xf;
634 block->pixel_indices[1] = (((uint64_t)src[2] << 40) |
643 etc2_r11_parse_block(struct etc2_block *block, const uint8_t *src)
646 etc2_alpha8_parse_block(block, src);
650 etc2_rgba8_parse_block(struct etc2_block *block, const uint8_t *src)
653 etc2_rgb8_parse_block(block, src + 8,
656 etc2_alpha8_parse_block(block, src);
660 etc2_rgba8_fetch_texel(const struct etc2_block *block,
663 etc2_rgb8_fetch_texel(block, x, y, dst,
665 etc2_alpha8_fetch_texel(block, x, y, dst);
677 struct etc2_block block;
695 etc2_rgb8_parse_block(&block, src,
701 etc2_rgb8_fetch_texel(&block, i, j, dst,
724 struct etc2_block block;
734 etc2_rgb8_parse_block(&block, src,
741 etc2_rgb8_fetch_texel(&block, i, j, dst,
767 /* If internalformat is COMPRESSED_RGBA8_ETC2_EAC, each 4 × 4 block of
768 * RGBA8888 information is compressed to 128 bits. To decode a block, the
772 struct etc2_block block;
781 etc2_rgba8_parse_block(&block, src);
786 etc2_rgba8_fetch_texel(&block, i, j, dst);
805 /* If internalformat is COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, each 4 × 4 block
806 * of RGBA8888 information is compressed to 128 bits. To decode a block, the
810 struct etc2_block block;
820 etc2_rgba8_parse_block(&block, src);
825 etc2_rgba8_fetch_texel(&block, i, j, dst);
851 /* If internalformat is COMPRESSED_R11_EAC, each 4 × 4 block of
855 struct etc2_block block;
864 etc2_r11_parse_block(&block, src);
869 etc2_r11_fetch_texel(&block, i, j, dst);
888 /* If internalformat is COMPRESSED_RG11_EAC, each 4 × 4 block of
892 struct etc2_block block;
902 etc2_r11_parse_block(&block, src);
908 etc2_r11_fetch_texel(&block, i, j, dst);
913 etc2_r11_parse_block(&block, src + 8);
919 etc2_r11_fetch_texel(&block, i, j, dst + comp_size);
938 /* If internalformat is COMPRESSED_SIGNED_R11_EAC, each 4 × 4 block of
942 struct etc2_block block;
951 etc2_r11_parse_block(&block, src);
957 etc2_signed_r11_fetch_texel(&block, i, j, dst);
976 /* If internalformat is COMPRESSED_SIGNED_RG11_EAC, each 4 × 4 block of
980 struct etc2_block block;
990 etc2_r11_parse_block(&block, src);
996 etc2_signed_r11_fetch_texel(&block, i, j, dst);
1001 etc2_r11_parse_block(&block, src + 8);
1007 etc2_signed_r11_fetch_texel(&block, i, j, dst + comp_size);
1027 struct etc2_block block;
1036 etc2_rgb8_parse_block(&block, src,
1041 etc2_rgb8_fetch_texel(&block, i, j, dst,
1063 struct etc2_block block;
1073 etc2_rgb8_parse_block(&block, src,
1078 etc2_rgb8_fetch_texel(&block, i, j, dst,
1193 * The size of the source data must be a multiple of the ETC2 block size
1259 struct etc1_block block;
1265 etc1_parse_block(&block, src);
1266 etc1_fetch_texel(&block, i % 4, j % 4, dst);
1279 struct etc2_block block;
1285 etc2_rgb8_parse_block(&block, src,
1287 etc2_rgb8_fetch_texel(&block, i % 4, j % 4, dst,
1300 struct etc2_block block;
1306 etc2_rgb8_parse_block(&block, src,
1308 etc2_rgb8_fetch_texel(&block, i % 4, j % 4, dst,
1321 struct etc2_block block;
1327 etc2_rgba8_parse_block(&block, src);
1328 etc2_rgba8_fetch_texel(&block, i % 4, j % 4, dst);
1340 struct etc2_block block;
1346 etc2_rgba8_parse_block(&block, src);
1347 etc2_rgba8_fetch_texel(&block, i % 4, j % 4, dst);
1359 struct etc2_block block;
1365 etc2_r11_parse_block(&block, src);
1366 etc2_r11_fetch_texel(&block, i % 4, j % 4, (uint8_t *)&dst);
1378 struct etc2_block block;
1385 etc2_r11_parse_block(&block, src);
1386 etc2_r11_fetch_texel(&block, i % 4, j % 4, (uint8_t *)dst);
1389 etc2_r11_parse_block(&block, src + 8);
1390 etc2_r11_fetch_texel(&block, i % 4, j % 4, (uint8_t *)(dst + 1));
1402 struct etc2_block block;
1408 etc2_r11_parse_block(&block, src);
1409 etc2_signed_r11_fetch_texel(&block, i % 4, j % 4, (uint8_t *)&dst);
1421 struct etc2_block block;
1428 etc2_r11_parse_block(&block, src);
1429 etc2_signed_r11_fetch_texel(&block, i % 4, j % 4, (uint8_t *)dst);
1432 etc2_r11_parse_block(&block, src + 8);
1433 etc2_signed_r11_fetch_texel(&block, i % 4, j % 4, (uint8_t *)(dst + 1));
1446 struct etc2_block block;
1452 etc2_rgb8_parse_block(&block, src,
1454 etc2_rgb8_fetch_texel(&block, i % 4, j % 4, dst,
1467 struct etc2_block block;
1473 etc2_rgb8_parse_block(&block, src,
1475 etc2_rgb8_fetch_texel(&block, i % 4, j % 4, dst,