|
@@ -1785,8 +1785,22 @@ ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::ImageInfo& info,
|
|
|
: VideoCommon::ImageViewBase{info, view_info, gpu_addr_},
|
|
: VideoCommon::ImageViewBase{info, view_info, gpu_addr_},
|
|
|
buffer_size{VideoCommon::CalculateGuestSizeInBytes(info)} {}
|
|
buffer_size{VideoCommon::CalculateGuestSizeInBytes(info)} {}
|
|
|
|
|
|
|
|
-ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::NullImageViewParams& params)
|
|
|
|
|
- : VideoCommon::ImageViewBase{params} {}
|
|
|
|
|
|
|
+ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::NullImageViewParams& params)
|
|
|
|
|
+ : VideoCommon::ImageViewBase{params}, device{&runtime.device} {
|
|
|
|
|
+ if (device->HasNullDescriptor()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Handle fallback for devices without nullDescriptor
|
|
|
|
|
+ ImageInfo info{};
|
|
|
|
|
+ info.format = PixelFormat::A8B8G8R8_UNORM;
|
|
|
|
|
+
|
|
|
|
|
+ null_image = MakeImage(*device, runtime.memory_allocator, info, {});
|
|
|
|
|
+ image_handle = *null_image;
|
|
|
|
|
+ for (u32 i = 0; i < Shader::NUM_TEXTURE_TYPES; i++) {
|
|
|
|
|
+ image_views[i] = MakeView(VK_FORMAT_A8B8G8R8_UNORM_PACK32, VK_IMAGE_ASPECT_COLOR_BIT);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
ImageView::~ImageView() = default;
|
|
ImageView::~ImageView() = default;
|
|
|
|
|
|