early-access version 4129
This commit is contained in:
parent
93218fea58
commit
cc9eed1bd2
6 changed files with 20 additions and 17 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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 {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
if (True(image.flags & ImageFlagBits::Tracked)) {
|
||||||
|
UntrackImage(image, id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
image.flags |= ImageFlagBits::CpuModified;
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue