Merge pull request #9097 from liamwhite/intel-spv-compiler
video_core: don't build ASTC decoder shader unless requested
This commit is contained in:
		@@ -156,12 +156,10 @@ RasterizerVulkan::RasterizerVulkan(Core::Frontend::EmuWindow& emu_window_, Tegra
 | 
			
		||||
      staging_pool(device, memory_allocator, scheduler), descriptor_pool(device, scheduler),
 | 
			
		||||
      update_descriptor_queue(device, scheduler),
 | 
			
		||||
      blit_image(device, scheduler, state_tracker, descriptor_pool),
 | 
			
		||||
      astc_decoder_pass(device, scheduler, descriptor_pool, staging_pool, update_descriptor_queue,
 | 
			
		||||
                        memory_allocator),
 | 
			
		||||
      render_pass_cache(device), texture_cache_runtime{device,           scheduler,
 | 
			
		||||
                                                       memory_allocator, staging_pool,
 | 
			
		||||
                                                       blit_image,       astc_decoder_pass,
 | 
			
		||||
                                                       render_pass_cache},
 | 
			
		||||
                                                       blit_image,       render_pass_cache,
 | 
			
		||||
                                                       descriptor_pool,  update_descriptor_queue},
 | 
			
		||||
      texture_cache(texture_cache_runtime, *this),
 | 
			
		||||
      buffer_cache_runtime(device, memory_allocator, scheduler, staging_pool,
 | 
			
		||||
                           update_descriptor_queue, descriptor_pool),
 | 
			
		||||
 
 | 
			
		||||
@@ -155,7 +155,6 @@ private:
 | 
			
		||||
    DescriptorPool descriptor_pool;
 | 
			
		||||
    UpdateDescriptorQueue update_descriptor_queue;
 | 
			
		||||
    BlitImageHelper blit_image;
 | 
			
		||||
    ASTCDecoderPass astc_decoder_pass;
 | 
			
		||||
    RenderPassCache render_pass_cache;
 | 
			
		||||
 | 
			
		||||
    TextureCacheRuntime texture_cache_runtime;
 | 
			
		||||
 
 | 
			
		||||
@@ -791,12 +791,17 @@ TextureCacheRuntime::TextureCacheRuntime(const Device& device_, Scheduler& sched
 | 
			
		||||
                                         MemoryAllocator& memory_allocator_,
 | 
			
		||||
                                         StagingBufferPool& staging_buffer_pool_,
 | 
			
		||||
                                         BlitImageHelper& blit_image_helper_,
 | 
			
		||||
                                         ASTCDecoderPass& astc_decoder_pass_,
 | 
			
		||||
                                         RenderPassCache& render_pass_cache_)
 | 
			
		||||
                                         RenderPassCache& render_pass_cache_,
 | 
			
		||||
                                         DescriptorPool& descriptor_pool,
 | 
			
		||||
                                         UpdateDescriptorQueue& update_descriptor_queue)
 | 
			
		||||
    : device{device_}, scheduler{scheduler_}, memory_allocator{memory_allocator_},
 | 
			
		||||
      staging_buffer_pool{staging_buffer_pool_}, blit_image_helper{blit_image_helper_},
 | 
			
		||||
      astc_decoder_pass{astc_decoder_pass_}, render_pass_cache{render_pass_cache_},
 | 
			
		||||
      resolution{Settings::values.resolution_info} {}
 | 
			
		||||
      render_pass_cache{render_pass_cache_}, resolution{Settings::values.resolution_info} {
 | 
			
		||||
    if (Settings::values.accelerate_astc) {
 | 
			
		||||
        astc_decoder_pass.emplace(device, scheduler, descriptor_pool, staging_buffer_pool,
 | 
			
		||||
                                  update_descriptor_queue, memory_allocator);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TextureCacheRuntime::Finish() {
 | 
			
		||||
    scheduler.Finish();
 | 
			
		||||
@@ -1845,7 +1850,7 @@ void TextureCacheRuntime::AccelerateImageUpload(
 | 
			
		||||
    Image& image, const StagingBufferRef& map,
 | 
			
		||||
    std::span<const VideoCommon::SwizzleParameters> swizzles) {
 | 
			
		||||
    if (IsPixelFormatASTC(image.info.format)) {
 | 
			
		||||
        return astc_decoder_pass.Assemble(image, map, swizzles);
 | 
			
		||||
        return astc_decoder_pass->Assemble(image, map, swizzles);
 | 
			
		||||
    }
 | 
			
		||||
    ASSERT(false);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@
 | 
			
		||||
#include <span>
 | 
			
		||||
 | 
			
		||||
#include "shader_recompiler/shader_info.h"
 | 
			
		||||
#include "video_core/renderer_vulkan/vk_compute_pass.h"
 | 
			
		||||
#include "video_core/renderer_vulkan/vk_staging_buffer_pool.h"
 | 
			
		||||
#include "video_core/texture_cache/image_view_base.h"
 | 
			
		||||
#include "video_core/texture_cache/texture_cache_base.h"
 | 
			
		||||
@@ -25,14 +26,15 @@ using VideoCommon::RenderTargets;
 | 
			
		||||
using VideoCommon::SlotVector;
 | 
			
		||||
using VideoCore::Surface::PixelFormat;
 | 
			
		||||
 | 
			
		||||
class ASTCDecoderPass;
 | 
			
		||||
class BlitImageHelper;
 | 
			
		||||
class DescriptorPool;
 | 
			
		||||
class Device;
 | 
			
		||||
class Image;
 | 
			
		||||
class ImageView;
 | 
			
		||||
class Framebuffer;
 | 
			
		||||
class RenderPassCache;
 | 
			
		||||
class StagingBufferPool;
 | 
			
		||||
class UpdateDescriptorQueue;
 | 
			
		||||
class Scheduler;
 | 
			
		||||
 | 
			
		||||
class TextureCacheRuntime {
 | 
			
		||||
@@ -41,8 +43,9 @@ public:
 | 
			
		||||
                                 MemoryAllocator& memory_allocator_,
 | 
			
		||||
                                 StagingBufferPool& staging_buffer_pool_,
 | 
			
		||||
                                 BlitImageHelper& blit_image_helper_,
 | 
			
		||||
                                 ASTCDecoderPass& astc_decoder_pass_,
 | 
			
		||||
                                 RenderPassCache& render_pass_cache_);
 | 
			
		||||
                                 RenderPassCache& render_pass_cache_,
 | 
			
		||||
                                 DescriptorPool& descriptor_pool,
 | 
			
		||||
                                 UpdateDescriptorQueue& update_descriptor_queue);
 | 
			
		||||
 | 
			
		||||
    void Finish();
 | 
			
		||||
 | 
			
		||||
@@ -97,8 +100,8 @@ public:
 | 
			
		||||
    MemoryAllocator& memory_allocator;
 | 
			
		||||
    StagingBufferPool& staging_buffer_pool;
 | 
			
		||||
    BlitImageHelper& blit_image_helper;
 | 
			
		||||
    ASTCDecoderPass& astc_decoder_pass;
 | 
			
		||||
    RenderPassCache& render_pass_cache;
 | 
			
		||||
    std::optional<ASTCDecoderPass> astc_decoder_pass;
 | 
			
		||||
    const Settings::ResolutionScalingInfo& resolution;
 | 
			
		||||
 | 
			
		||||
    constexpr static size_t indexing_slots = 8 * sizeof(size_t);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user