summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_device.cpp3
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp9
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.h1
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp9
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.h1
-rw-r--r--src/video_core/texture_cache/formatter.cpp22
-rw-r--r--src/video_core/texture_cache/formatter.h2
-rw-r--r--src/video_core/texture_cache/image_view_base.cpp8
-rw-r--r--src/video_core/texture_cache/image_view_base.h7
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h3
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
1127ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewInfo& info, 1127ImageView::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
1218ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, 1219ImageView::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
1223ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, 1224ImageView::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
1227ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::NullImageViewParams& params) 1228ImageView::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
1585ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewInfo& info, 1585ImageView::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
1673ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info, 1674ImageView::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
1678ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::NullImageViewParams& params) 1679ImageView::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
49std::string Name(const ImageViewBase& image_view) { 49std::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 @@
16namespace VideoCommon { 16namespace VideoCommon {
17 17
18ImageViewBase::ImageViewBase(const ImageViewInfo& info, const ImageInfo& image_info, 18ImageViewBase::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
38ImageViewBase::ImageViewBase(const ImageInfo& info, const ImageViewInfo& view_info) 38ImageViewBase::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 {
24DECLARE_ENUM_FLAG_OPERATORS(ImageViewFlagBits) 24DECLARE_ENUM_FLAG_OPERATORS(ImageViewFlagBits)
25 25
26struct ImageViewBase { 26struct 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.