浏览代码

mesa/formats: define the 2D ASTC formats

Define the mesa formats and make changes necessary for compilation
without errors. Also add support for _mesa_get_srgb_format_linear().

v2. conform the ASTC MESA_FORMAT enums to the existing naming convention.
v3. remove ASTC cases for _mesa_get_uncompressed_format(). This function is
    only used for generating mipmaps - something ASTC formats do not support
    due to lack of online compression.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
tags/11.1-branchpoint
Nanley Chery 10 年前
父节点
当前提交
8ae37365f3
共有 5 个文件被更改,包括 139 次插入1 次删除
  1. 3
    0
      src/mesa/main/format_info.py
  2. 43
    0
      src/mesa/main/formats.c
  3. 31
    0
      src/mesa/main/formats.csv
  4. 31
    0
      src/mesa/main/formats.h
  5. 31
    1
      src/mesa/swrast/s_texfetch.c

+ 3
- 0
src/mesa/main/format_info.py 查看文件

@@ -122,6 +122,9 @@ def get_channel_bits(fmat, chan_name):
elif fmat.layout == 'bptc':
bits = 16 if fmat.name.endswith('_FLOAT') else 8
return bits if fmat.has_channel(chan_name) else 0
elif fmat.layout == 'astc':
bits = 16 if 'RGBA' in fmat.name else 8
return bits if fmat.has_channel(chan_name) else 0
else:
assert False
else:

+ 43
- 0
src/mesa/main/formats.c 查看文件

@@ -197,6 +197,7 @@ _mesa_get_format_max_bits(mesa_format format)
* MESA_FORMAT_LAYOUT_ETC1
* MESA_FORMAT_LAYOUT_ETC2
* MESA_FORMAT_LAYOUT_BPTC
* MESA_FORMAT_LAYOUT_ASTC
* MESA_FORMAT_LAYOUT_OTHER
*/
extern enum mesa_format_layout
@@ -663,6 +664,48 @@ _mesa_get_srgb_format_linear(mesa_format format)
case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:
format = MESA_FORMAT_BPTC_RGBA_UNORM;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4:
format = MESA_FORMAT_RGBA_ASTC_4x4;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4:
format = MESA_FORMAT_RGBA_ASTC_5x4;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5:
format = MESA_FORMAT_RGBA_ASTC_5x5;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5:
format = MESA_FORMAT_RGBA_ASTC_6x5;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6:
format = MESA_FORMAT_RGBA_ASTC_6x6;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5:
format = MESA_FORMAT_RGBA_ASTC_8x5;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6:
format = MESA_FORMAT_RGBA_ASTC_8x6;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8:
format = MESA_FORMAT_RGBA_ASTC_8x8;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5:
format = MESA_FORMAT_RGBA_ASTC_10x5;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6:
format = MESA_FORMAT_RGBA_ASTC_10x6;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8:
format = MESA_FORMAT_RGBA_ASTC_10x8;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10:
format = MESA_FORMAT_RGBA_ASTC_10x10;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10:
format = MESA_FORMAT_RGBA_ASTC_12x10;
break;
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12:
format = MESA_FORMAT_RGBA_ASTC_12x12;
break;
case MESA_FORMAT_B8G8R8X8_SRGB:
format = MESA_FORMAT_B8G8R8X8_UNORM;
break;

+ 31
- 0
src/mesa/main/formats.csv 查看文件

@@ -301,3 +301,34 @@ MESA_FORMAT_BPTC_RGBA_UNORM , bptc , 4, 4, x128, , ,
MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM , bptc , 4, 4, x128, , , , xyzw, srgb
MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT , bptc , 4, 4, x128, , , , xyz1, rgb
MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT , bptc , 4, 4, x128, , , , xyz1, rgb

# ASTC compressed formats
MESA_FORMAT_RGBA_ASTC_4x4 , astc , 4, 4, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_5x4 , astc , 5, 4, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_5x5 , astc , 5, 5, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_6x5 , astc , 6, 5, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_6x6 , astc , 6, 6, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_8x5 , astc , 8, 5, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_8x6 , astc , 8, 6, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_8x8 , astc , 8, 8, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_10x5 , astc ,10, 5, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_10x6 , astc ,10, 6, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_10x8 , astc ,10, 8, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_10x10 , astc ,10,10, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_12x10 , astc ,12,10, x128, , , , xyzw, rgb
MESA_FORMAT_RGBA_ASTC_12x12 , astc ,12,12, x128, , , , xyzw, rgb

MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4 , astc , 4, 4, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4 , astc , 5, 4, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5 , astc , 5, 5, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5 , astc , 6, 5, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6 , astc , 6, 6, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5 , astc , 8, 5, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6 , astc , 8, 6, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8 , astc , 8, 8, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5 , astc ,10, 5, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6 , astc ,10, 6, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8 , astc ,10, 8, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10 , astc ,10,10, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10 , astc ,12,10, x128, , , , xyzw, srgb
MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12 , astc ,12,12, x128, , , , xyzw, srgb

+ 31
- 0
src/mesa/main/formats.h 查看文件

@@ -70,6 +70,7 @@ enum mesa_format_layout {
MESA_FORMAT_LAYOUT_ETC1,
MESA_FORMAT_LAYOUT_ETC2,
MESA_FORMAT_LAYOUT_BPTC,
MESA_FORMAT_LAYOUT_ASTC,
MESA_FORMAT_LAYOUT_OTHER,
};

@@ -586,6 +587,36 @@ typedef enum
MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT,
MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT,

/* ASTC compressed formats */
MESA_FORMAT_RGBA_ASTC_4x4,
MESA_FORMAT_RGBA_ASTC_5x4,
MESA_FORMAT_RGBA_ASTC_5x5,
MESA_FORMAT_RGBA_ASTC_6x5,
MESA_FORMAT_RGBA_ASTC_6x6,
MESA_FORMAT_RGBA_ASTC_8x5,
MESA_FORMAT_RGBA_ASTC_8x6,
MESA_FORMAT_RGBA_ASTC_8x8,
MESA_FORMAT_RGBA_ASTC_10x5,
MESA_FORMAT_RGBA_ASTC_10x6,
MESA_FORMAT_RGBA_ASTC_10x8,
MESA_FORMAT_RGBA_ASTC_10x10,
MESA_FORMAT_RGBA_ASTC_12x10,
MESA_FORMAT_RGBA_ASTC_12x12,

MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10,
MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12,
MESA_FORMAT_COUNT
} mesa_format;


+ 31
- 1
src/mesa/swrast/s_texfetch.c 查看文件

@@ -551,7 +551,37 @@ texfetch_funcs[] =
fetch_compressed,
fetch_compressed,
fetch_compressed
}
},

/* ASTC compressed formats */
FETCH_NULL(RGBA_ASTC_4x4),
FETCH_NULL(RGBA_ASTC_5x4),
FETCH_NULL(RGBA_ASTC_5x5),
FETCH_NULL(RGBA_ASTC_6x5),
FETCH_NULL(RGBA_ASTC_6x6),
FETCH_NULL(RGBA_ASTC_8x5),
FETCH_NULL(RGBA_ASTC_8x6),
FETCH_NULL(RGBA_ASTC_8x8),
FETCH_NULL(RGBA_ASTC_10x5),
FETCH_NULL(RGBA_ASTC_10x6),
FETCH_NULL(RGBA_ASTC_10x8),
FETCH_NULL(RGBA_ASTC_10x10),
FETCH_NULL(RGBA_ASTC_12x10),
FETCH_NULL(RGBA_ASTC_12x12),
FETCH_NULL(SRGB8_ALPHA8_ASTC_4x4),
FETCH_NULL(SRGB8_ALPHA8_ASTC_5x4),
FETCH_NULL(SRGB8_ALPHA8_ASTC_5x5),
FETCH_NULL(SRGB8_ALPHA8_ASTC_6x5),
FETCH_NULL(SRGB8_ALPHA8_ASTC_6x6),
FETCH_NULL(SRGB8_ALPHA8_ASTC_8x5),
FETCH_NULL(SRGB8_ALPHA8_ASTC_8x6),
FETCH_NULL(SRGB8_ALPHA8_ASTC_8x8),
FETCH_NULL(SRGB8_ALPHA8_ASTC_10x5),
FETCH_NULL(SRGB8_ALPHA8_ASTC_10x6),
FETCH_NULL(SRGB8_ALPHA8_ASTC_10x8),
FETCH_NULL(SRGB8_ALPHA8_ASTC_10x10),
FETCH_NULL(SRGB8_ALPHA8_ASTC_12x10),
FETCH_NULL(SRGB8_ALPHA8_ASTC_12x12)
};



正在加载...
取消
保存