early-access version 4041
This commit is contained in:
@@ -228,7 +228,7 @@ void MaxwellDMA::CopyBlockLinearToPitch() {
|
||||
|
||||
Core::Memory::GpuGuestMemory<u8, Core::Memory::GuestMemoryFlags::SafeRead> tmp_read_buffer(
|
||||
memory_manager, src_operand.address, src_size, &read_buffer);
|
||||
Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::SafeReadCachedWrite>
|
||||
Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::UnsafeReadCachedWrite>
|
||||
tmp_write_buffer(memory_manager, dst_operand.address, dst_size, &write_buffer);
|
||||
|
||||
UnswizzleSubrect(tmp_write_buffer, tmp_read_buffer, bytes_per_pixel, width, height, depth,
|
||||
@@ -292,7 +292,7 @@ void MaxwellDMA::CopyPitchToBlockLinear() {
|
||||
GPUVAddr dst_addr = regs.offset_out;
|
||||
Core::Memory::GpuGuestMemory<u8, Core::Memory::GuestMemoryFlags::SafeRead> tmp_read_buffer(
|
||||
memory_manager, src_addr, src_size, &read_buffer);
|
||||
Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::SafeReadCachedWrite>
|
||||
Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::UnsafeReadCachedWrite>
|
||||
tmp_write_buffer(memory_manager, dst_addr, dst_size, &write_buffer);
|
||||
|
||||
// If the input is linear and the output is tiled, swizzle the input and copy it over.
|
||||
|
||||
@@ -329,7 +329,7 @@ void PresentManager::CopyToSwapchainImpl(Frame* frame) {
|
||||
// to account for that.
|
||||
const bool is_suboptimal = swapchain.NeedsRecreation();
|
||||
const bool size_changed =
|
||||
swapchain.GetWidth() != frame->width || swapchain.GetHeight() != frame->height;
|
||||
swapchain.GetWidth() < frame->width || swapchain.GetHeight() < frame->height;
|
||||
if (is_suboptimal || size_changed) {
|
||||
RecreateSwapchain(frame);
|
||||
}
|
||||
|
||||
@@ -1084,7 +1084,6 @@ ImageViewId TextureCache<P>::FindImageView(const TICEntry& config) {
|
||||
ImageViewId& image_view_id = pair->second;
|
||||
if (is_new) {
|
||||
image_view_id = CreateImageView(config);
|
||||
channel_state->image_views_inv[image_view_id] = config;
|
||||
}
|
||||
return image_view_id;
|
||||
}
|
||||
@@ -2219,17 +2218,14 @@ template <class P>
|
||||
void TextureCache<P>::RemoveImageViewReferences(std::span<const ImageViewId> removed_views) {
|
||||
for (size_t c : active_channel_ids) {
|
||||
auto& channel_info = channel_storage[c];
|
||||
for (auto image_view_id : removed_views) {
|
||||
auto it_v = channel_info.image_views_inv.find(image_view_id);
|
||||
if (it_v == channel_info.image_views_inv.end()) {
|
||||
continue;
|
||||
auto it = channel_info.image_views.begin();
|
||||
while (it != channel_info.image_views.end()) {
|
||||
const auto found = std::ranges::find(removed_views, it->second);
|
||||
if (found != removed_views.end()) {
|
||||
it = channel_info.image_views.erase(it);
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
auto it = channel_info.image_views.find(it_v->second);
|
||||
channel_info.image_views_inv.erase(it_v);
|
||||
if (it == channel_info.image_views.end()) {
|
||||
continue;
|
||||
}
|
||||
channel_info.image_views.erase(it);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +81,6 @@ public:
|
||||
std::vector<ImageViewId> compute_image_view_ids;
|
||||
|
||||
std::unordered_map<TICEntry, ImageViewId> image_views;
|
||||
std::unordered_map<ImageViewId, TICEntry> image_views_inv;
|
||||
std::unordered_map<TSCEntry, SamplerId> samplers;
|
||||
|
||||
TextureCacheGPUMap* gpu_page_table;
|
||||
|
||||
Reference in New Issue
Block a user