This commit is contained in:
lizzie 2026-01-30 06:57:35 +00:00 committed by crueter
parent 624aff4e92
commit 88eb1aab39
2 changed files with 18 additions and 12 deletions

View File

@ -245,6 +245,10 @@ uint StreamBits(uint num_bits) {
return ret;
}
void SkipBits(uint num_bits) {
total_bitsread += num_bits;
}
uint StreamColorBits(uint num_bits) {
const uint ret = ExtractBits(color_endpoint_data, color_bitsread, num_bits);
color_bitsread += num_bits;
@ -748,14 +752,16 @@ void FillError(ivec3 coord) {
}
void FillVoidExtentLDR(ivec3 coord) {
const uint r_u = ExtractBits(local_buff, 11 + 52 + 16 * 0, 16);
const uint g_u = ExtractBits(local_buff, 11 + 52 + 16 * 1, 16);
const uint b_u = ExtractBits(local_buff, 11 + 52 + 16 * 2, 16);
const uint a_u = ExtractBits(local_buff, 11 + 52 + 16 * 3, 16);
// TODO: If you do extract bits, remember that it may be 11, or OTHER
SkipBits(52);
const uint r_u = StreamBits(16);
const uint g_u = StreamBits(16);
const uint b_u = StreamBits(16);
const uint a_u = StreamBits(16);
const float a = float(a_u) / 65535.0f;
const float r = float(r_u) / 65535.0f;
const float g = float(g_u) / 65535.0f;
const float b = float(b_u) / 65535.0f;
const float a = float(a_u) / 65535.0f;
for (uint j = 0; j < block_dims.y; j++) {
for (uint i = 0; i < block_dims.x; i++) {
imageStore(dest_image, coord + ivec3(i, j, 0), vec4(r, g, b, a));

View File

@ -1560,7 +1560,7 @@ Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu
runtime->ViewFormats(info.format))),
aspect_mask(ImageAspectMask(info.format)) {
if (IsPixelFormatASTC(info.format) && !runtime->device.IsOptimalAstcSupported()) {
ASSERT(info.size.depth == 1 && "image is deeply absurd");
ASSERT(info.size.depth == 1 && "ASTC Image depth >1 isn't supported");
flags |= VideoCommon::ImageFlagBits::AcceleratedUpload;
flags |= VideoCommon::ImageFlagBits::Converted;
flags |= VideoCommon::ImageFlagBits::CostlyLoad;
@ -2435,14 +2435,14 @@ void TextureCacheRuntime::AccelerateImageUpload(
std::span<const VideoCommon::SwizzleParameters> swizzles,
u32 z_start, u32 z_count) {
if (IsPixelFormatASTC(image.info.format)) {
if (IsPixelFormatASTC(image.info.format)
&& image.info.type == ImageType::e2D) {
return astc_decoder_pass->Assemble(image, map, swizzles);
}
if (bl3d_unswizzle_pass &&
IsPixelFormatBCn(image.info.format) &&
image.info.type == ImageType::e3D &&
image.info.resources.levels == 1 &&
image.info.resources.layers == 1) {
if (IsPixelFormatBCn(image.info.format)
&& image.info.type == ImageType::e3D
&& image.info.resources.levels == 1
&& image.info.resources.layers == 1) {
return bl3d_unswizzle_pass->Unswizzle(image, map, swizzles, z_start, z_count);
}
ASSERT(false);