mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-27 16:02:37 +00:00
graphics: name Vulkan images and views only on creation
This commit is contained in:
1 parent
bfdbba3aa4
commit
0ec43a8d3d
4 files changed
+15
-56
No files matched your search
+3
-39
@@ -107,36 +107,6 @@ constexpr uint64_t NumFramesBeforeRemoval = 32;
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] const char* BindingTypeName(TextureCache::BindingType type) {
|
|
||||||
switch (type) {
|
|
||||||
case TextureCache::BindingType::Texture: return "Texture";
|
|
||||||
case TextureCache::BindingType::Storage: return "StorageTexture";
|
|
||||||
case TextureCache::BindingType::RenderTarget: return "ColorTarget";
|
|
||||||
case TextureCache::BindingType::DepthTarget: return "DepthTarget";
|
|
||||||
case TextureCache::BindingType::VideoOut: return "VideoOut";
|
|
||||||
}
|
|
||||||
return "Image";
|
|
||||||
}
|
|
||||||
|
|
||||||
void NameImageBinding(GraphicContext& graphics, Image& image, vk::ImageView view,
|
|
||||||
TextureCache::BindingType type, const ImageViewInfo& view_info) {
|
|
||||||
const auto* role = BindingTypeName(type);
|
|
||||||
SetVulkanObjectNameF(
|
|
||||||
graphics.device, image.backing.image,
|
|
||||||
"Kyty.{}.Image[guest=0x{:016x} size=0x{:x} extent={}x{}x{} format={} mips={} layers={} "
|
|
||||||
"samples={}]",
|
|
||||||
role, image.info.data.address, image.info.data.size, image.info.extent.width,
|
|
||||||
image.info.extent.height, image.info.extent.depth,
|
|
||||||
static_cast<uint32_t>(image.info.pixel_format), image.info.resources.levels,
|
|
||||||
image.info.resources.layers, image.info.samples);
|
|
||||||
SetVulkanObjectNameF(
|
|
||||||
graphics.device, view,
|
|
||||||
"Kyty.{}.View[guest=0x{:016x} format={} aspect=0x{:x} mip={}+{} layer={}+{}]", role,
|
|
||||||
image.info.data.address, static_cast<uint32_t>(view_info.format),
|
|
||||||
static_cast<vk::ImageAspectFlags::MaskType>(view_info.aspect), view_info.base_level,
|
|
||||||
view_info.level_count, view_info.base_layer, view_info.layer_count);
|
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]] std::vector<vk::BufferImageCopy> BuildDepthCopies(const ImageInfo& info,
|
[[nodiscard]] std::vector<vk::BufferImageCopy> BuildDepthCopies(const ImageInfo& info,
|
||||||
uint64_t slice_stride,
|
uint64_t slice_stride,
|
||||||
vk::ImageAspectFlags aspect) {
|
vk::ImageAspectFlags aspect) {
|
||||||
@@ -1443,9 +1413,7 @@ vk::ImageView TextureCache::FindTexture(ImageId id, const ImageDesc& desc) {
|
|||||||
break;
|
break;
|
||||||
default: EXIT("TextureCache: invalid texture binding\n");
|
default: EXIT("TextureCache: invalid texture binding\n");
|
||||||
}
|
}
|
||||||
const auto view = image.FindView(desc.view_info);
|
return image.FindView(desc.view_info);
|
||||||
NameImageBinding(m_graphics, image, view, desc.type, desc.view_info);
|
|
||||||
return view;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vk::ImageView TextureCache::FindRenderTarget(ImageId id, const ImageDesc& desc) {
|
vk::ImageView TextureCache::FindRenderTarget(ImageId id, const ImageDesc& desc) {
|
||||||
@@ -1463,9 +1431,7 @@ vk::ImageView TextureCache::FindRenderTarget(ImageId id, const ImageDesc& desc)
|
|||||||
RefreshImage(id);
|
RefreshImage(id);
|
||||||
CommitGpuWrite(image);
|
CommitGpuWrite(image);
|
||||||
TrackImageDownload(id, image);
|
TrackImageDownload(id, image);
|
||||||
const auto view = image.FindView(desc.view_info);
|
return image.FindView(desc.view_info);
|
||||||
NameImageBinding(m_graphics, image, view, desc.type, desc.view_info);
|
|
||||||
return view;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vk::ImageView TextureCache::FindDepthTarget(ImageId id, const ImageDesc& desc) {
|
vk::ImageView TextureCache::FindDepthTarget(ImageId id, const ImageDesc& desc) {
|
||||||
@@ -1492,9 +1458,7 @@ vk::ImageView TextureCache::FindDepthTarget(ImageId id, const ImageDesc& desc) {
|
|||||||
if (desc.info.HasStencil()) {
|
if (desc.info.HasStencil()) {
|
||||||
RefreshImage(AssociateStencil(id, desc.info.stencil));
|
RefreshImage(AssociateStencil(id, desc.info.stencil));
|
||||||
}
|
}
|
||||||
const auto view = image.FindView(desc.view_info);
|
return image.FindView(desc.view_info);
|
||||||
NameImageBinding(m_graphics, image, view, desc.type, desc.view_info);
|
|
||||||
return view;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextureCache::MarkGpuWritten(ImageId id) {
|
void TextureCache::MarkGpuWritten(ImageId id) {
|
||||||
|
|||||||
@@ -690,6 +690,12 @@ Image::Image(GraphicContext& graphics, CommandScheduler& scheduler, const ImageI
|
|||||||
create.extent.width, create.extent.height, create.extent.depth,
|
create.extent.width, create.extent.height, create.extent.depth,
|
||||||
static_cast<int>(create.format), create.arrayLayers, create.mipLevels);
|
static_cast<int>(create.format), create.arrayLayers, create.mipLevels);
|
||||||
}
|
}
|
||||||
|
SetVulkanObjectNameF(
|
||||||
|
graphics.device, backing.image,
|
||||||
|
"Kyty.Image[guest=0x{:016x} size=0x{:x} extent={}x{}x{} format={} mips={} layers={} samples={}]",
|
||||||
|
info.data.address, info.data.size, info.extent.width, info.extent.height, info.extent.depth,
|
||||||
|
static_cast<uint32_t>(info.pixel_format), info.resources.levels, info.resources.layers,
|
||||||
|
info.samples);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t Image::HashGuestEdges() const {
|
uint64_t Image::HashGuestEdges() const {
|
||||||
|
|||||||
@@ -391,6 +391,12 @@ vk::ImageView Image::FindView(const ImageViewInfo& view_info) {
|
|||||||
view_info.level_count, view_info.base_layer, view_info.layer_count,
|
view_info.level_count, view_info.base_layer, view_info.layer_count,
|
||||||
static_cast<vk::ImageUsageFlags::MaskType>(view_info.usage));
|
static_cast<vk::ImageUsageFlags::MaskType>(view_info.usage));
|
||||||
}
|
}
|
||||||
|
SetVulkanObjectNameF(
|
||||||
|
m_graphics.device, view,
|
||||||
|
"Kyty.ImageView[guest=0x{:016x} format={} aspect=0x{:x} mip={}+{} layer={}+{}]",
|
||||||
|
info.data.address, static_cast<uint32_t>(normalized.format),
|
||||||
|
static_cast<vk::ImageAspectFlags::MaskType>(normalized.aspect), normalized.base_level,
|
||||||
|
normalized.level_count, normalized.base_layer, normalized.layer_count);
|
||||||
views.push_back({normalized, view});
|
views.push_back({normalized, view});
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -473,15 +473,6 @@ RenderState RenderExecutor::AcquireRenderTargets(CommandBuffer& buffer, RenderCo
|
|||||||
}
|
}
|
||||||
const auto image_view = cache.FindRenderTarget(target.image_id, target.desc);
|
const auto image_view = cache.FindRenderTarget(target.image_id, target.desc);
|
||||||
auto& image = cache.GetImage(target.image_id);
|
auto& image = cache.GetImage(target.image_id);
|
||||||
SetVulkanObjectNameF(m_context.GetGraphics().device, image.backing.image,
|
|
||||||
"Kyty.MRT{}.Image[guest=0x{:016x} size=0x{:x} format={}]",
|
|
||||||
target.target_slot, image.info.data.address, image.info.data.size,
|
|
||||||
static_cast<uint32_t>(image.info.pixel_format));
|
|
||||||
SetVulkanObjectNameF(m_context.GetGraphics().device, image_view,
|
|
||||||
"Kyty.MRT{}.View[guest=0x{:016x} mip={} layer={}+{}]",
|
|
||||||
target.target_slot, image.info.data.address,
|
|
||||||
target.desc.view_info.base_level, target.desc.view_info.base_layer,
|
|
||||||
target.desc.view_info.layer_count);
|
|
||||||
EXIT_IF(image.backing.samples != target.desc.info.samples || image_view == nullptr);
|
EXIT_IF(image.backing.samples != target.desc.info.samples || image_view == nullptr);
|
||||||
const auto& view = target.desc.view_info;
|
const auto& view = target.desc.view_info;
|
||||||
const auto layout = image.binding.is_bound ? vk::ImageLayout::eGeneral
|
const auto layout = image.binding.is_bound ? vk::ImageLayout::eGeneral
|
||||||
@@ -522,14 +513,6 @@ RenderState RenderExecutor::AcquireRenderTargets(CommandBuffer& buffer, RenderCo
|
|||||||
EXIT("failed to consume HTile clear state\n");
|
EXIT("failed to consume HTile clear state\n");
|
||||||
}
|
}
|
||||||
auto& image = cache.GetImage(depth.image_id);
|
auto& image = cache.GetImage(depth.image_id);
|
||||||
SetVulkanObjectNameF(m_context.GetGraphics().device, image.backing.image,
|
|
||||||
"Kyty.DepthTarget.Image[guest=0x{:016x} size=0x{:x} format={}]",
|
|
||||||
image.info.data.address, image.info.data.size,
|
|
||||||
static_cast<uint32_t>(image.info.pixel_format));
|
|
||||||
SetVulkanObjectNameF(m_context.GetGraphics().device, image_view,
|
|
||||||
"Kyty.DepthTarget.View[guest=0x{:016x} layer={}+{}]",
|
|
||||||
image.info.data.address, depth.desc.view_info.base_layer,
|
|
||||||
depth.desc.view_info.layer_count);
|
|
||||||
EXIT_IF(image_view == nullptr || image.backing.samples != depth.desc.info.samples);
|
EXIT_IF(image_view == nullptr || image.backing.samples != depth.desc.info.samples);
|
||||||
const auto draw_writes = depth.AttachmentWriteAspects();
|
const auto draw_writes = depth.AttachmentWriteAspects();
|
||||||
vk::ImageAspectFlags sampled_aspects;
|
vk::ImageAspectFlags sampled_aspects;
|
||||||
|
|||||||
Reference in new issue
Block a user