early-access version 4129

This commit is contained in:
pineappleEA 2024-02-10 20:39:06 +01:00
parent 93218fea58
commit cc9eed1bd2
6 changed files with 20 additions and 17 deletions

View File

@ -1,7 +1,7 @@
yuzu emulator early access yuzu emulator early access
============= =============
This is the source code for early-access 4128. This is the source code for early-access 4129.
## Legal Notice ## Legal Notice

View File

@ -104,12 +104,14 @@ std::shared_ptr<ILibraryAppletAccessor> CreateGuestApplet(Core::System& system,
// TODO: enable other versions of applets // TODO: enable other versions of applets
enum : u8 { enum : u8 {
Firmware1600 = 15, Firmware1400 = 14,
Firmware1700 = 16, Firmware1500 = 15,
Firmware1600 = 16,
Firmware1700 = 17,
}; };
auto process = std::make_unique<Process>(system); auto process = std::make_unique<Process>(system);
if (!process->Initialize(program_id, Firmware1600, Firmware1700)) { if (!process->Initialize(program_id, Firmware1400, Firmware1700)) {
// Couldn't initialize the guest process // Couldn't initialize the guest process
return {}; return {};
} }

View File

@ -19,15 +19,13 @@ layout (push_constant) uniform PushConstants {
// Any member of a push constant block that is declared as an // Any member of a push constant block that is declared as an
// array must only be accessed with dynamically uniform indices. // array must only be accessed with dynamically uniform indices.
ScreenRectVertex GetVertex(int index) { ScreenRectVertex GetVertex(int index) {
switch (index) { if (index < 1) {
case 0:
default:
return vertices[0]; return vertices[0];
case 1: } else if (index < 2) {
return vertices[1]; return vertices[1];
case 2: } else if (index < 3) {
return vertices[2]; return vertices[2];
case 3: } else {
return vertices[3]; return vertices[3];
} }
} }

View File

@ -42,6 +42,7 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept {
}; };
} }
rescaleable = false; rescaleable = false;
is_sparse = config.is_sparse != 0;
tile_width_spacing = config.tile_width_spacing; tile_width_spacing = config.tile_width_spacing;
if (config.texture_type != TextureType::Texture2D && if (config.texture_type != TextureType::Texture2D &&
config.texture_type != TextureType::Texture2DNoMipmap) { config.texture_type != TextureType::Texture2DNoMipmap) {

View File

@ -41,6 +41,7 @@ struct ImageInfo {
bool downscaleable = false; bool downscaleable = false;
bool forced_flushed = false; bool forced_flushed = false;
bool dma_downloaded = false; bool dma_downloaded = false;
bool is_sparse = false;
}; };
} // namespace VideoCommon } // namespace VideoCommon

View File

@ -600,17 +600,17 @@ void TextureCache<P>::UnmapGPUMemory(size_t as_id, GPUVAddr gpu_addr, size_t siz
[&](ImageId id, Image&) { deleted_images.push_back(id); }); [&](ImageId id, Image&) { deleted_images.push_back(id); });
for (const ImageId id : deleted_images) { for (const ImageId id : deleted_images) {
Image& image = slot_images[id]; Image& image = slot_images[id];
if (True(image.flags & ImageFlagBits::CpuModified)) { if (False(image.flags & ImageFlagBits::CpuModified)) {
continue;
}
image.flags |= ImageFlagBits::CpuModified; image.flags |= ImageFlagBits::CpuModified;
if (True(image.flags & ImageFlagBits::Tracked)) {
UntrackImage(image, id);
}
}
if (True(image.flags & ImageFlagBits::Remapped)) { if (True(image.flags & ImageFlagBits::Remapped)) {
continue; continue;
} }
image.flags |= ImageFlagBits::Remapped; image.flags |= ImageFlagBits::Remapped;
if (True(image.flags & ImageFlagBits::Tracked)) {
UntrackImage(image, id);
}
} }
} }
@ -1469,7 +1469,8 @@ ImageId TextureCache<P>::JoinImages(const ImageInfo& info, GPUVAddr gpu_addr, DA
const ImageId new_image_id = slot_images.insert(runtime, new_info, gpu_addr, cpu_addr); const ImageId new_image_id = slot_images.insert(runtime, new_info, gpu_addr, cpu_addr);
Image& new_image = slot_images[new_image_id]; Image& new_image = slot_images[new_image_id];
if (!gpu_memory->IsContinuousRange(new_image.gpu_addr, new_image.guest_size_bytes)) { if (!gpu_memory->IsContinuousRange(new_image.gpu_addr, new_image.guest_size_bytes) &&
new_info.is_sparse) {
new_image.flags |= ImageFlagBits::Sparse; new_image.flags |= ImageFlagBits::Sparse;
} }