mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-05-31 10:07:06 +02:00
oopsie, forgot we had a GC fixes SSBU Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4026 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
parent
7c32cf03a1
commit
116377f6d9
3 changed files with 12 additions and 10 deletions
|
|
@ -49,7 +49,6 @@ using VideoCore::Surface::PixelFormatFromDepthFormat;
|
||||||
using VideoCore::Surface::PixelFormatFromRenderTargetFormat;
|
using VideoCore::Surface::PixelFormatFromRenderTargetFormat;
|
||||||
|
|
||||||
constexpr size_t NUM_STAGES = Maxwell::MaxShaderStage;
|
constexpr size_t NUM_STAGES = Maxwell::MaxShaderStage;
|
||||||
constexpr size_t INLINE_IMAGE_ELEMENTS = 64;
|
|
||||||
|
|
||||||
DescriptorLayoutBuilder MakeBuilder(const Device& device, std::span<const Shader::Info> infos) {
|
DescriptorLayoutBuilder MakeBuilder(const Device& device, std::span<const Shader::Info> infos) {
|
||||||
DescriptorLayoutBuilder builder{device};
|
DescriptorLayoutBuilder builder{device};
|
||||||
|
|
@ -314,8 +313,8 @@ void GraphicsPipeline::AddTransition(GraphicsPipeline* transition) {
|
||||||
|
|
||||||
template <typename Spec>
|
template <typename Spec>
|
||||||
bool GraphicsPipeline::ConfigureImpl(bool is_indexed) {
|
bool GraphicsPipeline::ConfigureImpl(bool is_indexed) {
|
||||||
boost::container::small_vector<VideoCommon::ImageViewInOut, INLINE_IMAGE_ELEMENTS> views;
|
boost::container::small_vector<VideoCommon::ImageViewInOut, 64> views;
|
||||||
boost::container::small_vector<VideoCommon::SamplerId, INLINE_IMAGE_ELEMENTS> samplers;
|
boost::container::small_vector<VideoCommon::SamplerId, 64> samplers;
|
||||||
views.reserve(num_image_elements);
|
views.reserve(num_image_elements);
|
||||||
samplers.reserve(num_textures);
|
samplers.reserve(num_textures);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -359,7 +359,7 @@ void RasterizerVulkan::DrawTexture() {
|
||||||
query_cache.NotifySegment(true);
|
query_cache.NotifySegment(true);
|
||||||
query_cache.CounterEnable(VideoCommon::QueryType::ZPassPixelCount64, maxwell3d->regs.zpass_pixel_count_enable);
|
query_cache.CounterEnable(VideoCommon::QueryType::ZPassPixelCount64, maxwell3d->regs.zpass_pixel_count_enable);
|
||||||
const auto& draw_texture_state = maxwell3d->draw_manager.draw_texture_state;
|
const auto& draw_texture_state = maxwell3d->draw_manager.draw_texture_state;
|
||||||
const auto& sampler = texture_cache.GetSampler(draw_texture_state.src_sampler, true);
|
const auto& sampler = texture_cache.GetSampler(draw_texture_state.src_sampler, false);
|
||||||
const auto& texture = texture_cache.GetImageView(draw_texture_state.src_texture);
|
const auto& texture = texture_cache.GetImageView(draw_texture_state.src_texture);
|
||||||
const auto* framebuffer = texture_cache.GetFramebuffer();
|
const auto* framebuffer = texture_cache.GetFramebuffer();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -313,13 +313,14 @@ SamplerId TextureCache<P>::GetSamplerId(u32 index, bool compute) {
|
||||||
LOG_DEBUG(HW_GPU, "Invalid sampler index={}", index);
|
LOG_DEBUG(HW_GPU, "Invalid sampler index={}", index);
|
||||||
return NULL_SAMPLER_ID;
|
return NULL_SAMPLER_ID;
|
||||||
}
|
}
|
||||||
|
auto const map_index = index | (compute ? Common::SlotId::TAGGED_VALUE : 0);
|
||||||
auto const [descriptor, is_new] = table.Read(*gpu_memory, index);
|
auto const [descriptor, is_new] = table.Read(*gpu_memory, index);
|
||||||
if (is_new) {
|
if (is_new) {
|
||||||
auto const id = FindSampler(descriptor, compute);
|
auto const id = FindSampler(descriptor, compute);
|
||||||
channel_state->sampler_ids.insert_or_assign(index | (compute ? Common::SlotId::TAGGED_VALUE : 0), id);
|
channel_state->sampler_ids.insert_or_assign(map_index, id);
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
return channel_state->sampler_ids.find(index | (compute ? Common::SlotId::TAGGED_VALUE : 0))->second;
|
return channel_state->sampler_ids.find(map_index)->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class P>
|
template <class P>
|
||||||
|
|
@ -542,6 +543,7 @@ ImageViewId TextureCache<P>::VisitImageView(u32 index, bool compute) {
|
||||||
LOG_DEBUG(HW_GPU, "Invalid image view index={}", index);
|
LOG_DEBUG(HW_GPU, "Invalid image view index={}", index);
|
||||||
return NULL_IMAGE_VIEW_ID;
|
return NULL_IMAGE_VIEW_ID;
|
||||||
}
|
}
|
||||||
|
auto const map_index = index | (compute ? Common::SlotId::TAGGED_VALUE : 0);
|
||||||
// Is new (on the tegra engine side)?
|
// Is new (on the tegra engine side)?
|
||||||
auto const [descriptor, is_new] = table.Read(*gpu_memory, index);
|
auto const [descriptor, is_new] = table.Read(*gpu_memory, index);
|
||||||
if (is_new) {
|
if (is_new) {
|
||||||
|
|
@ -551,14 +553,15 @@ ImageViewId TextureCache<P>::VisitImageView(u32 index, bool compute) {
|
||||||
if (is_new_tc)
|
if (is_new_tc)
|
||||||
pair->second = CreateImageView(descriptor);
|
pair->second = CreateImageView(descriptor);
|
||||||
PrepareImageView(pair->second, false, false);
|
PrepareImageView(pair->second, false, false);
|
||||||
channel_state->image_view_ids.insert_or_assign(index | (compute ? Common::SlotId::TAGGED_VALUE : 0), pair->second);
|
channel_state->image_view_ids.insert_or_assign(map_index, pair->second);
|
||||||
return pair->second;
|
return pair->second;
|
||||||
}
|
}
|
||||||
channel_state->image_view_ids.insert_or_assign(index | (compute ? Common::SlotId::TAGGED_VALUE : 0), NULL_IMAGE_VIEW_ID);
|
channel_state->image_view_ids.insert_or_assign(map_index, NULL_IMAGE_VIEW_ID);
|
||||||
return NULL_IMAGE_VIEW_ID;
|
return NULL_IMAGE_VIEW_ID;
|
||||||
}
|
}
|
||||||
auto const it = channel_state->image_view_ids.find(index | (compute ? Common::SlotId::TAGGED_VALUE : 0));
|
auto const it = channel_state->image_view_ids.find(map_index);
|
||||||
PrepareImageView(it->second, false, false);
|
if (it->second != NULL_IMAGE_VIEW_ID)
|
||||||
|
PrepareImageView(it->second, false, false);
|
||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue