diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.cpp | 9 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 9 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.h | 1 | ||||
| -rw-r--r-- | src/video_core/texture_cache/formatter.cpp | 22 | ||||
| -rw-r--r-- | src/video_core/texture_cache/formatter.h | 2 | ||||
| -rw-r--r-- | src/video_core/texture_cache/image_view_base.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/texture_cache/image_view_base.h | 7 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 3 |
10 files changed, 35 insertions, 30 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 22ed16ebf..400c21981 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp | |||
| @@ -108,7 +108,8 @@ bool IsASTCSupported() { | |||
| 108 | 108 | ||
| 109 | [[nodiscard]] bool IsDebugToolAttached(std::span<const std::string_view> extensions) { | 109 | [[nodiscard]] bool IsDebugToolAttached(std::span<const std::string_view> extensions) { |
| 110 | const bool nsight = std::getenv("NVTX_INJECTION64_PATH") || std::getenv("NSIGHT_LAUNCHED"); | 110 | const bool nsight = std::getenv("NVTX_INJECTION64_PATH") || std::getenv("NSIGHT_LAUNCHED"); |
| 111 | return nsight || HasExtension(extensions, "GL_EXT_debug_tool"); | 111 | return nsight || HasExtension(extensions, "GL_EXT_debug_tool") || |
| 112 | Settings::values.renderer_debug.GetValue(); | ||
| 112 | } | 113 | } |
| 113 | } // Anonymous namespace | 114 | } // Anonymous namespace |
| 114 | 115 | ||
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index 47cccd0e5..052456f61 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp | |||
| @@ -1126,7 +1126,8 @@ bool Image::ScaleDown(bool ignore) { | |||
| 1126 | 1126 | ||
| 1127 | ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewInfo& info, | 1127 | ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewInfo& info, |
| 1128 | ImageId image_id_, Image& image, const SlotVector<Image>&) | 1128 | ImageId image_id_, Image& image, const SlotVector<Image>&) |
| 1129 | : VideoCommon::ImageViewBase{info, image.info, image_id_}, views{runtime.null_image_views} { | 1129 | : VideoCommon::ImageViewBase{info, image.info, image_id_, image.gpu_addr}, |
| 1130 | views{runtime.null_image_views} { | ||
| 1130 | const Device& device = runtime.device; | 1131 | const Device& device = runtime.device; |
| 1131 | if (True(image.flags & ImageFlagBits::Converted)) { | 1132 | if (True(image.flags & ImageFlagBits::Converted)) { |
| 1132 | internal_format = IsPixelFormatSRGB(info.format) ? GL_SRGB8_ALPHA8 : GL_RGBA8; | 1133 | internal_format = IsPixelFormatSRGB(info.format) ? GL_SRGB8_ALPHA8 : GL_RGBA8; |
| @@ -1217,12 +1218,12 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI | |||
| 1217 | 1218 | ||
| 1218 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, | 1219 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, |
| 1219 | const VideoCommon::ImageViewInfo& view_info, GPUVAddr gpu_addr_) | 1220 | const VideoCommon::ImageViewInfo& view_info, GPUVAddr gpu_addr_) |
| 1220 | : VideoCommon::ImageViewBase{info, view_info}, gpu_addr{gpu_addr_}, | 1221 | : VideoCommon::ImageViewBase{info, view_info, gpu_addr_}, |
| 1221 | buffer_size{VideoCommon::CalculateGuestSizeInBytes(info)} {} | 1222 | buffer_size{VideoCommon::CalculateGuestSizeInBytes(info)} {} |
| 1222 | 1223 | ||
| 1223 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, | 1224 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, |
| 1224 | const VideoCommon::ImageViewInfo& view_info) | 1225 | const VideoCommon::ImageViewInfo& view_info) |
| 1225 | : VideoCommon::ImageViewBase{info, view_info} {} | 1226 | : VideoCommon::ImageViewBase{info, view_info, 0} {} |
| 1226 | 1227 | ||
| 1227 | ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::NullImageViewParams& params) | 1228 | ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::NullImageViewParams& params) |
| 1228 | : VideoCommon::ImageViewBase{params}, views{runtime.null_image_views} {} | 1229 | : VideoCommon::ImageViewBase{params}, views{runtime.null_image_views} {} |
| @@ -1282,7 +1283,7 @@ GLuint ImageView::MakeView(Shader::TextureType view_type, GLenum view_format) { | |||
| 1282 | ApplySwizzle(view.handle, format, casted_swizzle); | 1283 | ApplySwizzle(view.handle, format, casted_swizzle); |
| 1283 | } | 1284 | } |
| 1284 | if (set_object_label) { | 1285 | if (set_object_label) { |
| 1285 | const std::string name = VideoCommon::Name(*this); | 1286 | const std::string name = VideoCommon::Name(*this, gpu_addr); |
| 1286 | glObjectLabel(GL_TEXTURE, view.handle, static_cast<GLsizei>(name.size()), name.data()); | 1287 | glObjectLabel(GL_TEXTURE, view.handle, static_cast<GLsizei>(name.size()), name.data()); |
| 1287 | } | 1288 | } |
| 1288 | return view.handle; | 1289 | return view.handle; |
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.h b/src/video_core/renderer_opengl/gl_texture_cache.h index 0dd039ed2..1190999a8 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.h +++ b/src/video_core/renderer_opengl/gl_texture_cache.h | |||
| @@ -314,7 +314,6 @@ private: | |||
| 314 | std::unique_ptr<StorageViews> storage_views; | 314 | std::unique_ptr<StorageViews> storage_views; |
| 315 | GLenum internal_format = GL_NONE; | 315 | GLenum internal_format = GL_NONE; |
| 316 | GLuint default_handle = 0; | 316 | GLuint default_handle = 0; |
| 317 | GPUVAddr gpu_addr = 0; | ||
| 318 | u32 buffer_size = 0; | 317 | u32 buffer_size = 0; |
| 319 | GLuint original_texture = 0; | 318 | GLuint original_texture = 0; |
| 320 | int num_samples = 0; | 319 | int num_samples = 0; |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index d0a7d8f35..99dd1260a 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -1584,8 +1584,9 @@ bool Image::NeedsScaleHelper() const { | |||
| 1584 | 1584 | ||
| 1585 | ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewInfo& info, | 1585 | ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewInfo& info, |
| 1586 | ImageId image_id_, Image& image) | 1586 | ImageId image_id_, Image& image) |
| 1587 | : VideoCommon::ImageViewBase{info, image.info, image_id_}, device{&runtime.device}, | 1587 | : VideoCommon::ImageViewBase{info, image.info, image_id_, image.gpu_addr}, |
| 1588 | image_handle{image.Handle()}, samples(ConvertSampleCount(image.info.num_samples)) { | 1588 | device{&runtime.device}, image_handle{image.Handle()}, |
| 1589 | samples(ConvertSampleCount(image.info.num_samples)) { | ||
| 1589 | using Shader::TextureType; | 1590 | using Shader::TextureType; |
| 1590 | 1591 | ||
| 1591 | const VkImageAspectFlags aspect_mask = ImageViewAspectMask(info); | 1592 | const VkImageAspectFlags aspect_mask = ImageViewAspectMask(info); |
| @@ -1631,7 +1632,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI | |||
| 1631 | } | 1632 | } |
| 1632 | vk::ImageView handle = device->GetLogical().CreateImageView(ci); | 1633 | vk::ImageView handle = device->GetLogical().CreateImageView(ci); |
| 1633 | if (device->HasDebuggingToolAttached()) { | 1634 | if (device->HasDebuggingToolAttached()) { |
| 1634 | handle.SetObjectNameEXT(VideoCommon::Name(*this).c_str()); | 1635 | handle.SetObjectNameEXT(VideoCommon::Name(*this, gpu_addr).c_str()); |
| 1635 | } | 1636 | } |
| 1636 | image_views[static_cast<size_t>(tex_type)] = std::move(handle); | 1637 | image_views[static_cast<size_t>(tex_type)] = std::move(handle); |
| 1637 | }; | 1638 | }; |
| @@ -1672,7 +1673,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI | |||
| 1672 | 1673 | ||
| 1673 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, | 1674 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, |
| 1674 | const VideoCommon::ImageViewInfo& view_info, GPUVAddr gpu_addr_) | 1675 | const VideoCommon::ImageViewInfo& view_info, GPUVAddr gpu_addr_) |
| 1675 | : VideoCommon::ImageViewBase{info, view_info}, gpu_addr{gpu_addr_}, | 1676 | : VideoCommon::ImageViewBase{info, view_info, gpu_addr_}, |
| 1676 | buffer_size{VideoCommon::CalculateGuestSizeInBytes(info)} {} | 1677 | buffer_size{VideoCommon::CalculateGuestSizeInBytes(info)} {} |
| 1677 | 1678 | ||
| 1678 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::NullImageViewParams& params) | 1679 | ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::NullImageViewParams& params) |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.h b/src/video_core/renderer_vulkan/vk_texture_cache.h index c656c5386..6f360177a 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.h +++ b/src/video_core/renderer_vulkan/vk_texture_cache.h | |||
| @@ -265,7 +265,6 @@ private: | |||
| 265 | VkImage image_handle = VK_NULL_HANDLE; | 265 | VkImage image_handle = VK_NULL_HANDLE; |
| 266 | VkImageView render_target = VK_NULL_HANDLE; | 266 | VkImageView render_target = VK_NULL_HANDLE; |
| 267 | VkSampleCountFlagBits samples = VK_SAMPLE_COUNT_1_BIT; | 267 | VkSampleCountFlagBits samples = VK_SAMPLE_COUNT_1_BIT; |
| 268 | GPUVAddr gpu_addr = 0; | ||
| 269 | u32 buffer_size = 0; | 268 | u32 buffer_size = 0; |
| 270 | }; | 269 | }; |
| 271 | 270 | ||
diff --git a/src/video_core/texture_cache/formatter.cpp b/src/video_core/texture_cache/formatter.cpp index 30f72361d..6279d8e9e 100644 --- a/src/video_core/texture_cache/formatter.cpp +++ b/src/video_core/texture_cache/formatter.cpp | |||
| @@ -46,7 +46,7 @@ std::string Name(const ImageBase& image) { | |||
| 46 | return "Invalid"; | 46 | return "Invalid"; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | std::string Name(const ImageViewBase& image_view) { | 49 | std::string Name(const ImageViewBase& image_view, GPUVAddr addr) { |
| 50 | const u32 width = image_view.size.width; | 50 | const u32 width = image_view.size.width; |
| 51 | const u32 height = image_view.size.height; | 51 | const u32 height = image_view.size.height; |
| 52 | const u32 depth = image_view.size.depth; | 52 | const u32 depth = image_view.size.depth; |
| @@ -56,23 +56,25 @@ std::string Name(const ImageViewBase& image_view) { | |||
| 56 | const std::string level = num_levels > 1 ? fmt::format(":{}", num_levels) : ""; | 56 | const std::string level = num_levels > 1 ? fmt::format(":{}", num_levels) : ""; |
| 57 | switch (image_view.type) { | 57 | switch (image_view.type) { |
| 58 | case ImageViewType::e1D: | 58 | case ImageViewType::e1D: |
| 59 | return fmt::format("ImageView 1D {}{}", width, level); | 59 | return fmt::format("ImageView 1D 0x{:X} {}{}", addr, width, level); |
| 60 | case ImageViewType::e2D: | 60 | case ImageViewType::e2D: |
| 61 | return fmt::format("ImageView 2D {}x{}{}", width, height, level); | 61 | return fmt::format("ImageView 2D 0x{:X} {}x{}{}", addr, width, height, level); |
| 62 | case ImageViewType::Cube: | 62 | case ImageViewType::Cube: |
| 63 | return fmt::format("ImageView Cube {}x{}{}", width, height, level); | 63 | return fmt::format("ImageView Cube 0x{:X} {}x{}{}", addr, width, height, level); |
| 64 | case ImageViewType::e3D: | 64 | case ImageViewType::e3D: |
| 65 | return fmt::format("ImageView 3D {}x{}x{}{}", width, height, depth, level); | 65 | return fmt::format("ImageView 3D 0x{:X} {}x{}x{}{}", addr, width, height, depth, level); |
| 66 | case ImageViewType::e1DArray: | 66 | case ImageViewType::e1DArray: |
| 67 | return fmt::format("ImageView 1DArray {}{}|{}", width, level, num_layers); | 67 | return fmt::format("ImageView 1DArray 0x{:X} {}{}|{}", addr, width, level, num_layers); |
| 68 | case ImageViewType::e2DArray: | 68 | case ImageViewType::e2DArray: |
| 69 | return fmt::format("ImageView 2DArray {}x{}{}|{}", width, height, level, num_layers); | 69 | return fmt::format("ImageView 2DArray 0x{:X} {}x{}{}|{}", addr, width, height, level, |
| 70 | num_layers); | ||
| 70 | case ImageViewType::CubeArray: | 71 | case ImageViewType::CubeArray: |
| 71 | return fmt::format("ImageView CubeArray {}x{}{}|{}", width, height, level, num_layers); | 72 | return fmt::format("ImageView CubeArray 0x{:X} {}x{}{}|{}", addr, width, height, level, |
| 73 | num_layers); | ||
| 72 | case ImageViewType::Rect: | 74 | case ImageViewType::Rect: |
| 73 | return fmt::format("ImageView Rect {}x{}{}", width, height, level); | 75 | return fmt::format("ImageView Rect 0x{:X} {}x{}{}", addr, width, height, level); |
| 74 | case ImageViewType::Buffer: | 76 | case ImageViewType::Buffer: |
| 75 | return fmt::format("BufferView {}", width); | 77 | return fmt::format("BufferView 0x{:X} {}", addr, width); |
| 76 | } | 78 | } |
| 77 | return "Invalid"; | 79 | return "Invalid"; |
| 78 | } | 80 | } |
diff --git a/src/video_core/texture_cache/formatter.h b/src/video_core/texture_cache/formatter.h index b97147797..9ee57a076 100644 --- a/src/video_core/texture_cache/formatter.h +++ b/src/video_core/texture_cache/formatter.h | |||
| @@ -274,7 +274,7 @@ struct RenderTargets; | |||
| 274 | 274 | ||
| 275 | [[nodiscard]] std::string Name(const ImageBase& image); | 275 | [[nodiscard]] std::string Name(const ImageBase& image); |
| 276 | 276 | ||
| 277 | [[nodiscard]] std::string Name(const ImageViewBase& image_view); | 277 | [[nodiscard]] std::string Name(const ImageViewBase& image_view, GPUVAddr addr); |
| 278 | 278 | ||
| 279 | [[nodiscard]] std::string Name(const RenderTargets& render_targets); | 279 | [[nodiscard]] std::string Name(const RenderTargets& render_targets); |
| 280 | 280 | ||
diff --git a/src/video_core/texture_cache/image_view_base.cpp b/src/video_core/texture_cache/image_view_base.cpp index 04fb84bfa..bcad40353 100644 --- a/src/video_core/texture_cache/image_view_base.cpp +++ b/src/video_core/texture_cache/image_view_base.cpp | |||
| @@ -16,8 +16,8 @@ | |||
| 16 | namespace VideoCommon { | 16 | namespace VideoCommon { |
| 17 | 17 | ||
| 18 | ImageViewBase::ImageViewBase(const ImageViewInfo& info, const ImageInfo& image_info, | 18 | ImageViewBase::ImageViewBase(const ImageViewInfo& info, const ImageInfo& image_info, |
| 19 | ImageId image_id_) | 19 | ImageId image_id_, GPUVAddr addr) |
| 20 | : image_id{image_id_}, format{info.format}, type{info.type}, range{info.range}, | 20 | : image_id{image_id_}, gpu_addr{addr}, format{info.format}, type{info.type}, range{info.range}, |
| 21 | size{ | 21 | size{ |
| 22 | .width = std::max(image_info.size.width >> range.base.level, 1u), | 22 | .width = std::max(image_info.size.width >> range.base.level, 1u), |
| 23 | .height = std::max(image_info.size.height >> range.base.level, 1u), | 23 | .height = std::max(image_info.size.height >> range.base.level, 1u), |
| @@ -35,8 +35,8 @@ ImageViewBase::ImageViewBase(const ImageViewInfo& info, const ImageInfo& image_i | |||
| 35 | } | 35 | } |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | ImageViewBase::ImageViewBase(const ImageInfo& info, const ImageViewInfo& view_info) | 38 | ImageViewBase::ImageViewBase(const ImageInfo& info, const ImageViewInfo& view_info, GPUVAddr addr) |
| 39 | : image_id{NULL_IMAGE_ID}, format{info.format}, type{ImageViewType::Buffer}, | 39 | : image_id{NULL_IMAGE_ID}, gpu_addr{addr}, format{info.format}, type{ImageViewType::Buffer}, |
| 40 | size{ | 40 | size{ |
| 41 | .width = info.size.width, | 41 | .width = info.size.width, |
| 42 | .height = 1, | 42 | .height = 1, |
diff --git a/src/video_core/texture_cache/image_view_base.h b/src/video_core/texture_cache/image_view_base.h index 69c9776e7..a25ae1d4a 100644 --- a/src/video_core/texture_cache/image_view_base.h +++ b/src/video_core/texture_cache/image_view_base.h | |||
| @@ -24,9 +24,9 @@ enum class ImageViewFlagBits : u16 { | |||
| 24 | DECLARE_ENUM_FLAG_OPERATORS(ImageViewFlagBits) | 24 | DECLARE_ENUM_FLAG_OPERATORS(ImageViewFlagBits) |
| 25 | 25 | ||
| 26 | struct ImageViewBase { | 26 | struct ImageViewBase { |
| 27 | explicit ImageViewBase(const ImageViewInfo& info, const ImageInfo& image_info, | 27 | explicit ImageViewBase(const ImageViewInfo& info, const ImageInfo& image_info, ImageId image_id, |
| 28 | ImageId image_id); | 28 | GPUVAddr addr); |
| 29 | explicit ImageViewBase(const ImageInfo& info, const ImageViewInfo& view_info); | 29 | explicit ImageViewBase(const ImageInfo& info, const ImageViewInfo& view_info, GPUVAddr addr); |
| 30 | explicit ImageViewBase(const NullImageViewParams&); | 30 | explicit ImageViewBase(const NullImageViewParams&); |
| 31 | 31 | ||
| 32 | [[nodiscard]] bool IsBuffer() const noexcept { | 32 | [[nodiscard]] bool IsBuffer() const noexcept { |
| @@ -34,6 +34,7 @@ struct ImageViewBase { | |||
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | ImageId image_id{}; | 36 | ImageId image_id{}; |
| 37 | GPUVAddr gpu_addr = 0; | ||
| 37 | PixelFormat format{}; | 38 | PixelFormat format{}; |
| 38 | ImageViewType type{}; | 39 | ImageViewType type{}; |
| 39 | SubresourceRange range; | 40 | SubresourceRange range; |
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 7d5018151..5f1c63ff9 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | #include <vector> | 10 | #include <vector> |
| 11 | 11 | ||
| 12 | #include "common/common_types.h" | 12 | #include "common/common_types.h" |
| 13 | #include "common/settings.h" | ||
| 13 | #include "video_core/vulkan_common/vulkan_wrapper.h" | 14 | #include "video_core/vulkan_common/vulkan_wrapper.h" |
| 14 | 15 | ||
| 15 | // Define all features which may be used by the implementation here. | 16 | // Define all features which may be used by the implementation here. |
| @@ -510,7 +511,7 @@ public: | |||
| 510 | 511 | ||
| 511 | /// Returns true when a known debugging tool is attached. | 512 | /// Returns true when a known debugging tool is attached. |
| 512 | bool HasDebuggingToolAttached() const { | 513 | bool HasDebuggingToolAttached() const { |
| 513 | return has_renderdoc || has_nsight_graphics; | 514 | return has_renderdoc || has_nsight_graphics || Settings::values.renderer_debug.GetValue(); |
| 514 | } | 515 | } |
| 515 | 516 | ||
| 516 | /// Returns true when the device does not properly support cube compatibility. | 517 | /// Returns true when the device does not properly support cube compatibility. |