Sfoglia il codice sorgente

shaders: Allow shader notify when async shaders is disabled

ameerj 5 anni fa
parent
commit
fcff19e0fa

+ 4 - 4
src/video_core/renderer_opengl/gl_shader_cache.cpp

@@ -430,10 +430,10 @@ std::unique_ptr<GraphicsPipeline> ShaderCache::CreateGraphicsPipeline(
         previous_program = &program;
     }
     auto* const thread_worker{build_in_parallel ? workers.get() : nullptr};
-    VideoCore::ShaderNotify* const notify{build_in_parallel ? &shader_notify : nullptr};
-    return std::make_unique<GraphicsPipeline>(
-        device, texture_cache, buffer_cache, gpu_memory, maxwell3d, program_manager, state_tracker,
-        thread_worker, notify, sources, infos, key.xfb_enabled != 0 ? &key.xfb_state : nullptr);
+    return std::make_unique<GraphicsPipeline>(device, texture_cache, buffer_cache, gpu_memory,
+                                              maxwell3d, program_manager, state_tracker,
+                                              thread_worker, &shader_notify, sources, infos,
+                                              key.xfb_enabled != 0 ? &key.xfb_state : nullptr);
 
 } catch (Shader::Exception& exception) {
     LOG_ERROR(Render_OpenGL, "{}", exception.what());

+ 5 - 7
src/video_core/renderer_vulkan/vk_pipeline_cache.cpp

@@ -529,11 +529,10 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
         previous_stage = &program;
     }
     Common::ThreadWorker* const thread_worker{build_in_parallel ? &workers : nullptr};
-    VideoCore::ShaderNotify* const notify{build_in_parallel ? &shader_notify : nullptr};
-    return std::make_unique<GraphicsPipeline>(maxwell3d, gpu_memory, scheduler, buffer_cache,
-                                              texture_cache, notify, device, descriptor_pool,
-                                              update_descriptor_queue, thread_worker,
-                                              render_pass_cache, key, std::move(modules), infos);
+    return std::make_unique<GraphicsPipeline>(
+        maxwell3d, gpu_memory, scheduler, buffer_cache, texture_cache, &shader_notify, device,
+        descriptor_pool, update_descriptor_queue, thread_worker, render_pass_cache, key,
+        std::move(modules), infos);
 
 } catch (const Shader::Exception& exception) {
     LOG_ERROR(Render_Vulkan, "{}", exception.what());
@@ -596,9 +595,8 @@ std::unique_ptr<ComputePipeline> PipelineCache::CreateComputePipeline(
         spv_module.SetObjectNameEXT(name.c_str());
     }
     Common::ThreadWorker* const thread_worker{build_in_parallel ? &workers : nullptr};
-    VideoCore::ShaderNotify* const notify{build_in_parallel ? &shader_notify : nullptr};
     return std::make_unique<ComputePipeline>(device, descriptor_pool, update_descriptor_queue,
-                                             thread_worker, notify, program.info,
+                                             thread_worker, &shader_notify, program.info,
                                              std::move(spv_module));
 
 } catch (const Shader::Exception& exception) {