Address some regressions with unswizzle changes + barriers reductions
This commit is contained in:
parent
b8478a570b
commit
0b7d216a09
|
|
@ -697,8 +697,7 @@ void ASTCDecoderPass::Assemble(Image& image, const StagingBufferRef& map,
|
|||
}
|
||||
const VkImageAspectFlags aspect_mask = image.AspectMask();
|
||||
const VkImage vk_image = image.Handle();
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask,
|
||||
image.ExchangeInitialization());
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask, !reorder);
|
||||
for (const VideoCommon::SwizzleParameters& swizzle : swizzles) {
|
||||
const size_t input_offset = swizzle.buffer_offset + map.offset;
|
||||
const u32 num_dispatches_x = Common::DivCeil(swizzle.num_tiles.width, 8U);
|
||||
|
|
@ -760,8 +759,7 @@ void BlockLinearUnswizzleImage2DPass::Unswizzle(
|
|||
}
|
||||
const VkImageAspectFlags aspect_mask = image.AspectMask();
|
||||
const VkImage vk_image = image.Handle();
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask,
|
||||
image.ExchangeInitialization());
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask, !reorder);
|
||||
for (const VideoCommon::SwizzleParameters& swizzle : swizzles) {
|
||||
const size_t input_offset = swizzle.buffer_offset + map.offset;
|
||||
const u32 num_dispatches_x = Common::DivCeil(swizzle.num_tiles.width, 32U);
|
||||
|
|
@ -810,8 +808,7 @@ void BlockLinearUnswizzleImage3DPass::Unswizzle(
|
|||
}
|
||||
const VkImageAspectFlags aspect_mask = image.AspectMask();
|
||||
const VkImage vk_image = image.Handle();
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask,
|
||||
image.ExchangeInitialization());
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask, !reorder);
|
||||
for (const VideoCommon::SwizzleParameters& swizzle : swizzles) {
|
||||
const size_t input_offset = swizzle.buffer_offset + map.offset;
|
||||
const u32 num_dispatches_x = Common::DivCeil(swizzle.num_tiles.width, 16U);
|
||||
|
|
@ -873,8 +870,7 @@ void PitchUnswizzlePass::Unswizzle(Image& image, const StagingBufferRef& map,
|
|||
}
|
||||
const VkImageAspectFlags aspect_mask = image.AspectMask();
|
||||
const VkImage vk_image = image.Handle();
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask,
|
||||
image.ExchangeInitialization());
|
||||
RecordUnswizzleBeginBarrier(scheduler, reorder, *pipeline, vk_image, aspect_mask, !reorder);
|
||||
for (const VideoCommon::SwizzleParameters& swizzle : swizzles) {
|
||||
const size_t input_offset = swizzle.buffer_offset + map.offset;
|
||||
const u32 num_dispatches_x = Common::DivCeil(swizzle.num_tiles.width, 32U);
|
||||
|
|
|
|||
|
|
@ -1029,6 +1029,8 @@ void TextureCache<P>::RefreshContents(Image& image, ImageId image_id) {
|
|||
runtime.TransitionImageLayout(image);
|
||||
return;
|
||||
}
|
||||
gpu_memory->FlushRegion(image.gpu_addr, image.guest_size_bytes,
|
||||
VideoCommon::CacheType::NoTextureCache);
|
||||
if (True(image.flags & ImageFlagBits::AsynchronousDecode)) {
|
||||
QueueAsyncDecode(image, image_id);
|
||||
return;
|
||||
|
|
@ -1042,8 +1044,6 @@ void TextureCache<P>::RefreshContents(Image& image, ImageId image_id) {
|
|||
device_memory.GetSpan(*device_addr, image.guest_size_bytes),
|
||||
image.guest_size_bytes);
|
||||
if (source) {
|
||||
gpu_memory->FlushRegion(image.gpu_addr, image.guest_size_bytes,
|
||||
VideoCommon::CacheType::NoTextureCache);
|
||||
runtime.AccelerateImageUpload(
|
||||
image, *source, FixSmallVectorADL(FullUploadSwizzles(image.info)));
|
||||
return;
|
||||
|
|
@ -1076,8 +1076,7 @@ void TextureCache<P>::UploadImageContents(Image& image, StagingBuffer& staging)
|
|||
const GPUVAddr gpu_addr = image.gpu_addr;
|
||||
|
||||
if (True(image.flags & ImageFlagBits::AcceleratedUpload)) {
|
||||
gpu_memory->ReadBlock(gpu_addr, mapped_span.data(), image.guest_size_bytes,
|
||||
VideoCommon::CacheType::NoTextureCache);
|
||||
gpu_memory->ReadBlockUnsafe(gpu_addr, mapped_span.data(), image.guest_size_bytes);
|
||||
const auto uploads = FullUploadSwizzles(image.info);
|
||||
runtime.AccelerateImageUpload(image, staging, FixSmallVectorADL(uploads));
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -879,6 +879,9 @@ bool Device::ShouldBoostClocks() const {
|
|||
}
|
||||
|
||||
bool Device::HasTimelineSemaphore() const {
|
||||
if (GetDriverID() == VK_DRIVER_ID_MESA_TURNIP) {
|
||||
return false;
|
||||
}
|
||||
return features.timeline_semaphore.timelineSemaphore;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue