Image: Implement 16-bit unorm and uint formats

This commit is contained in:
BlueCube3310
2025-05-09 12:31:25 +02:00
parent ebc36a7225
commit 16b9ee6f50
13 changed files with 914 additions and 63 deletions

View File

@ -351,6 +351,40 @@ static Error get_src_texture_format(Image *r_img, RD::DataFormat &r_format) {
r_format = RD::DATA_FORMAT_E5B9G9R9_UFLOAT_PACK32;
break;
case Image::FORMAT_R16:
r_format = RD::DATA_FORMAT_R16_UNORM;
break;
case Image::FORMAT_RG16:
r_format = RD::DATA_FORMAT_R16G16_UNORM;
break;
case Image::FORMAT_RGB16:
r_img->convert(Image::FORMAT_RGBA16);
r_format = RD::DATA_FORMAT_R16G16B16A16_UNORM;
break;
case Image::FORMAT_RGBA16:
r_format = RD::DATA_FORMAT_R16G16B16A16_UNORM;
break;
case Image::FORMAT_R16I:
r_format = RD::DATA_FORMAT_R16_UINT;
break;
case Image::FORMAT_RG16I:
r_format = RD::DATA_FORMAT_R16G16_UINT;
break;
case Image::FORMAT_RGB16I:
r_img->convert(Image::FORMAT_RGBA16I);
r_format = RD::DATA_FORMAT_R16G16B16A16_UINT;
break;
case Image::FORMAT_RGBA16I:
r_format = RD::DATA_FORMAT_R16G16B16A16_UINT;
break;
default: {
return ERR_UNAVAILABLE;
}