diff options
| author | 2020-07-14 13:04:02 -0400 | |
|---|---|---|
| committer | 2020-07-14 13:04:02 -0400 | |
| commit | 93fe982a0c3a5bfb7fa5df97ebced0a7692ccaf3 (patch) | |
| tree | c4ab9e3acff296733b00effd85371bf04db6491f /src/video_core | |
| parent | Break out of scan loop if can't find adapter on first run (diff) | |
| parent | Merge pull request #4294 from MerryMage/cpu-opt-settings (diff) | |
| download | yuzu-93fe982a0c3a5bfb7fa5df97ebced0a7692ccaf3.tar.gz yuzu-93fe982a0c3a5bfb7fa5df97ebced0a7692ccaf3.tar.xz yuzu-93fe982a0c3a5bfb7fa5df97ebced0a7692ccaf3.zip | |
Rebase to master
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 6 | ||||
| -rw-r--r-- | src/video_core/gpu.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/query_cache.h | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_base.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_disk_cache.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/renderer_vulkan.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 12 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_stream_buffer.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 2 | ||||
| -rw-r--r-- | src/video_core/textures/texture.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/video_core.cpp | 8 |
13 files changed, 30 insertions, 28 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index c6479af9f..dd7ce8c99 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -96,7 +96,8 @@ public: | |||
| 96 | } | 96 | } |
| 97 | if (is_written) { | 97 | if (is_written) { |
| 98 | map->MarkAsModified(true, GetModifiedTicks()); | 98 | map->MarkAsModified(true, GetModifiedTicks()); |
| 99 | if (Settings::IsGPULevelHigh() && Settings::values.use_asynchronous_gpu_emulation) { | 99 | if (Settings::IsGPULevelHigh() && |
| 100 | Settings::values.use_asynchronous_gpu_emulation.GetValue()) { | ||
| 100 | MarkForAsyncFlush(map); | 101 | MarkForAsyncFlush(map); |
| 101 | } | 102 | } |
| 102 | if (!map->is_written) { | 103 | if (!map->is_written) { |
| @@ -369,7 +370,8 @@ private: | |||
| 369 | } | 370 | } |
| 370 | if (modified_inheritance) { | 371 | if (modified_inheritance) { |
| 371 | map->MarkAsModified(true, GetModifiedTicks()); | 372 | map->MarkAsModified(true, GetModifiedTicks()); |
| 372 | if (Settings::IsGPULevelHigh() && Settings::values.use_asynchronous_gpu_emulation) { | 373 | if (Settings::IsGPULevelHigh() && |
| 374 | Settings::values.use_asynchronous_gpu_emulation.GetValue()) { | ||
| 373 | MarkForAsyncFlush(map); | 375 | MarkForAsyncFlush(map); |
| 374 | } | 376 | } |
| 375 | } | 377 | } |
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index 482e49711..758bfe148 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp | |||
| @@ -157,7 +157,7 @@ u64 GPU::GetTicks() const { | |||
| 157 | constexpr u64 gpu_ticks_den = 625; | 157 | constexpr u64 gpu_ticks_den = 625; |
| 158 | 158 | ||
| 159 | u64 nanoseconds = system.CoreTiming().GetGlobalTimeNs().count(); | 159 | u64 nanoseconds = system.CoreTiming().GetGlobalTimeNs().count(); |
| 160 | if (Settings::values.use_fast_gpu_time) { | 160 | if (Settings::values.use_fast_gpu_time.GetValue()) { |
| 161 | nanoseconds /= 256; | 161 | nanoseconds /= 256; |
| 162 | } | 162 | } |
| 163 | const u64 nanoseconds_num = nanoseconds / gpu_ticks_den; | 163 | const u64 nanoseconds_num = nanoseconds / gpu_ticks_den; |
diff --git a/src/video_core/query_cache.h b/src/video_core/query_cache.h index e12dab899..0d3a88765 100644 --- a/src/video_core/query_cache.h +++ b/src/video_core/query_cache.h | |||
| @@ -132,7 +132,7 @@ public: | |||
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | query->BindCounter(Stream(type).Current(), timestamp); | 134 | query->BindCounter(Stream(type).Current(), timestamp); |
| 135 | if (Settings::values.use_asynchronous_gpu_emulation) { | 135 | if (Settings::values.use_asynchronous_gpu_emulation.GetValue()) { |
| 136 | AsyncFlushQuery(cpu_addr); | 136 | AsyncFlushQuery(cpu_addr); |
| 137 | } | 137 | } |
| 138 | } | 138 | } |
diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp index 919d1f2d4..dfb06e87e 100644 --- a/src/video_core/renderer_base.cpp +++ b/src/video_core/renderer_base.cpp | |||
| @@ -18,7 +18,7 @@ RendererBase::~RendererBase() = default; | |||
| 18 | void RendererBase::RefreshBaseSettings() { | 18 | void RendererBase::RefreshBaseSettings() { |
| 19 | UpdateCurrentFramebufferLayout(); | 19 | UpdateCurrentFramebufferLayout(); |
| 20 | 20 | ||
| 21 | renderer_settings.use_framelimiter = Settings::values.use_frame_limit; | 21 | renderer_settings.use_framelimiter = Settings::values.use_frame_limit.GetValue(); |
| 22 | renderer_settings.set_background_color = true; | 22 | renderer_settings.set_background_color = true; |
| 23 | } | 23 | } |
| 24 | 24 | ||
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 208fc6167..c1f20f0ab 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp | |||
| @@ -229,15 +229,15 @@ Device::Device() | |||
| 229 | // uniform buffers as "push constants" | 229 | // uniform buffers as "push constants" |
| 230 | has_fast_buffer_sub_data = is_nvidia && !disable_fast_buffer_sub_data; | 230 | has_fast_buffer_sub_data = is_nvidia && !disable_fast_buffer_sub_data; |
| 231 | 231 | ||
| 232 | use_assembly_shaders = Settings::values.use_assembly_shaders && GLAD_GL_NV_gpu_program5 && | 232 | use_assembly_shaders = Settings::values.use_assembly_shaders.GetValue() && |
| 233 | GLAD_GL_NV_compute_program5 && GLAD_GL_NV_transform_feedback && | 233 | GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && |
| 234 | GLAD_GL_NV_transform_feedback2; | 234 | GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2; |
| 235 | 235 | ||
| 236 | LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); | 236 | LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); |
| 237 | LOG_INFO(Render_OpenGL, "Renderer_ComponentIndexingBug: {}", has_component_indexing_bug); | 237 | LOG_INFO(Render_OpenGL, "Renderer_ComponentIndexingBug: {}", has_component_indexing_bug); |
| 238 | LOG_INFO(Render_OpenGL, "Renderer_PreciseBug: {}", has_precise_bug); | 238 | LOG_INFO(Render_OpenGL, "Renderer_PreciseBug: {}", has_precise_bug); |
| 239 | 239 | ||
| 240 | if (Settings::values.use_assembly_shaders && !use_assembly_shaders) { | 240 | if (Settings::values.use_assembly_shaders.GetValue() && !use_assembly_shaders) { |
| 241 | LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); | 241 | LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); |
| 242 | } | 242 | } |
| 243 | } | 243 | } |
diff --git a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp index 653c3f2f9..2dcc2b0eb 100644 --- a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp | |||
| @@ -213,7 +213,7 @@ ShaderDiskCacheOpenGL::~ShaderDiskCacheOpenGL() = default; | |||
| 213 | std::optional<std::vector<ShaderDiskCacheEntry>> ShaderDiskCacheOpenGL::LoadTransferable() { | 213 | std::optional<std::vector<ShaderDiskCacheEntry>> ShaderDiskCacheOpenGL::LoadTransferable() { |
| 214 | // Skip games without title id | 214 | // Skip games without title id |
| 215 | const bool has_title_id = system.CurrentProcess()->GetTitleID() != 0; | 215 | const bool has_title_id = system.CurrentProcess()->GetTitleID() != 0; |
| 216 | if (!Settings::values.use_disk_shader_cache || !has_title_id) { | 216 | if (!Settings::values.use_disk_shader_cache.GetValue() || !has_title_id) { |
| 217 | return {}; | 217 | return {}; |
| 218 | } | 218 | } |
| 219 | 219 | ||
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index c40adb6e7..e66cdc083 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -455,8 +455,8 @@ void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color | |||
| 455 | void RendererOpenGL::InitOpenGLObjects() { | 455 | void RendererOpenGL::InitOpenGLObjects() { |
| 456 | frame_mailbox = std::make_unique<FrameMailbox>(); | 456 | frame_mailbox = std::make_unique<FrameMailbox>(); |
| 457 | 457 | ||
| 458 | glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, | 458 | glClearColor(Settings::values.bg_red.GetValue(), Settings::values.bg_green.GetValue(), |
| 459 | 0.0f); | 459 | Settings::values.bg_blue.GetValue(), 0.0f); |
| 460 | 460 | ||
| 461 | // Create shader programs | 461 | // Create shader programs |
| 462 | OGLShader vertex_shader; | 462 | OGLShader vertex_shader; |
| @@ -561,8 +561,8 @@ void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture, | |||
| 561 | void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { | 561 | void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { |
| 562 | if (renderer_settings.set_background_color) { | 562 | if (renderer_settings.set_background_color) { |
| 563 | // Update background color before drawing | 563 | // Update background color before drawing |
| 564 | glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, | 564 | glClearColor(Settings::values.bg_red.GetValue(), Settings::values.bg_green.GetValue(), |
| 565 | 0.0f); | 565 | Settings::values.bg_blue.GetValue(), 0.0f); |
| 566 | } | 566 | } |
| 567 | 567 | ||
| 568 | // Set projection matrix | 568 | // Set projection matrix |
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index 2d9b18ed9..2258479f5 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp | |||
| @@ -409,7 +409,7 @@ bool RendererVulkan::PickDevices() { | |||
| 409 | return false; | 409 | return false; |
| 410 | } | 410 | } |
| 411 | 411 | ||
| 412 | const s32 device_index = Settings::values.vulkan_device; | 412 | const s32 device_index = Settings::values.vulkan_device.GetValue(); |
| 413 | if (device_index < 0 || device_index >= static_cast<s32>(devices->size())) { | 413 | if (device_index < 0 || device_index >= static_cast<s32>(devices->size())) { |
| 414 | LOG_ERROR(Render_Vulkan, "Invalid device index {}!", device_index); | 414 | LOG_ERROR(Render_Vulkan, "Invalid device index {}!", device_index); |
| 415 | return false; | 415 | return false; |
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 380ed532b..7625871c2 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -332,23 +332,23 @@ private: | |||
| 332 | 332 | ||
| 333 | if constexpr (has_extended_dynamic_state) { | 333 | if constexpr (has_extended_dynamic_state) { |
| 334 | // With extended dynamic states we can specify the length and stride of a vertex buffer | 334 | // With extended dynamic states we can specify the length and stride of a vertex buffer |
| 335 | // std::array<VkDeviceSize, N> sizes; | 335 | std::array<VkDeviceSize, N> sizes; |
| 336 | std::array<u16, N> strides; | 336 | std::array<u16, N> strides; |
| 337 | // std::copy(vertex.sizes.begin(), vertex.sizes.begin() + N, sizes.begin()); | 337 | std::copy(vertex.sizes.begin(), vertex.sizes.begin() + N, sizes.begin()); |
| 338 | std::copy(vertex.strides.begin(), vertex.strides.begin() + N, strides.begin()); | 338 | std::copy(vertex.strides.begin(), vertex.strides.begin() + N, strides.begin()); |
| 339 | 339 | ||
| 340 | if constexpr (is_indexed) { | 340 | if constexpr (is_indexed) { |
| 341 | scheduler.Record( | 341 | scheduler.Record( |
| 342 | [buffers, offsets, strides, index = index](vk::CommandBuffer cmdbuf) { | 342 | [buffers, offsets, sizes, strides, index = index](vk::CommandBuffer cmdbuf) { |
| 343 | cmdbuf.BindIndexBuffer(index.buffer, index.offset, index.type); | 343 | cmdbuf.BindIndexBuffer(index.buffer, index.offset, index.type); |
| 344 | cmdbuf.BindVertexBuffers2EXT(0, static_cast<u32>(N), buffers.data(), | 344 | cmdbuf.BindVertexBuffers2EXT(0, static_cast<u32>(N), buffers.data(), |
| 345 | offsets.data(), nullptr, | 345 | offsets.data(), sizes.data(), |
| 346 | ExpandStrides(strides).data()); | 346 | ExpandStrides(strides).data()); |
| 347 | }); | 347 | }); |
| 348 | } else { | 348 | } else { |
| 349 | scheduler.Record([buffers, offsets, strides](vk::CommandBuffer cmdbuf) { | 349 | scheduler.Record([buffers, offsets, sizes, strides](vk::CommandBuffer cmdbuf) { |
| 350 | cmdbuf.BindVertexBuffers2EXT(0, static_cast<u32>(N), buffers.data(), | 350 | cmdbuf.BindVertexBuffers2EXT(0, static_cast<u32>(N), buffers.data(), |
| 351 | offsets.data(), nullptr, | 351 | offsets.data(), sizes.data(), |
| 352 | ExpandStrides(strides).data()); | 352 | ExpandStrides(strides).data()); |
| 353 | }); | 353 | }); |
| 354 | } | 354 | } |
diff --git a/src/video_core/renderer_vulkan/vk_stream_buffer.cpp b/src/video_core/renderer_vulkan/vk_stream_buffer.cpp index 868447af2..2d28a6c47 100644 --- a/src/video_core/renderer_vulkan/vk_stream_buffer.cpp +++ b/src/video_core/renderer_vulkan/vk_stream_buffer.cpp | |||
| @@ -121,7 +121,7 @@ void VKStreamBuffer::CreateBuffers(VkBufferUsageFlags usage) { | |||
| 121 | 121 | ||
| 122 | // Substract from the preferred heap size some bytes to avoid getting out of memory. | 122 | // Substract from the preferred heap size some bytes to avoid getting out of memory. |
| 123 | const VkDeviceSize heap_size = memory_properties.memoryHeaps[preferred_heap].size; | 123 | const VkDeviceSize heap_size = memory_properties.memoryHeaps[preferred_heap].size; |
| 124 | const VkDeviceSize allocable_size = heap_size - 4 * 1024 * 1024; | 124 | const VkDeviceSize allocable_size = heap_size - 9 * 1024 * 1024; |
| 125 | 125 | ||
| 126 | VkBufferCreateInfo buffer_ci; | 126 | VkBufferCreateInfo buffer_ci; |
| 127 | buffer_ci.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; | 127 | buffer_ci.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; |
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 6207d8dfe..cdcddb225 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h | |||
| @@ -249,7 +249,7 @@ public: | |||
| 249 | auto& surface = render_targets[index].target; | 249 | auto& surface = render_targets[index].target; |
| 250 | surface->MarkAsRenderTarget(false, NO_RT); | 250 | surface->MarkAsRenderTarget(false, NO_RT); |
| 251 | const auto& cr_params = surface->GetSurfaceParams(); | 251 | const auto& cr_params = surface->GetSurfaceParams(); |
| 252 | if (!cr_params.is_tiled && Settings::values.use_asynchronous_gpu_emulation) { | 252 | if (!cr_params.is_tiled && Settings::values.use_asynchronous_gpu_emulation.GetValue()) { |
| 253 | AsyncFlushSurface(surface); | 253 | AsyncFlushSurface(surface); |
| 254 | } | 254 | } |
| 255 | } | 255 | } |
diff --git a/src/video_core/textures/texture.cpp b/src/video_core/textures/texture.cpp index d1939d744..4171e3ef2 100644 --- a/src/video_core/textures/texture.cpp +++ b/src/video_core/textures/texture.cpp | |||
| @@ -48,7 +48,7 @@ constexpr std::array<float, 256> SRGB_CONVERSION_LUT = { | |||
| 48 | }; | 48 | }; |
| 49 | 49 | ||
| 50 | unsigned SettingsMinimumAnisotropy() noexcept { | 50 | unsigned SettingsMinimumAnisotropy() noexcept { |
| 51 | switch (static_cast<Anisotropy>(Settings::values.max_anisotropy)) { | 51 | switch (static_cast<Anisotropy>(Settings::values.max_anisotropy.GetValue())) { |
| 52 | default: | 52 | default: |
| 53 | case Anisotropy::Default: | 53 | case Anisotropy::Default: |
| 54 | return 1U; | 54 | return 1U; |
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index f60bdc60a..45f360bdd 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp | |||
| @@ -19,7 +19,7 @@ namespace { | |||
| 19 | std::unique_ptr<VideoCore::RendererBase> CreateRenderer(Core::Frontend::EmuWindow& emu_window, | 19 | std::unique_ptr<VideoCore::RendererBase> CreateRenderer(Core::Frontend::EmuWindow& emu_window, |
| 20 | Core::System& system, | 20 | Core::System& system, |
| 21 | Core::Frontend::GraphicsContext& context) { | 21 | Core::Frontend::GraphicsContext& context) { |
| 22 | switch (Settings::values.renderer_backend) { | 22 | switch (Settings::values.renderer_backend.GetValue()) { |
| 23 | case Settings::RendererBackend::OpenGL: | 23 | case Settings::RendererBackend::OpenGL: |
| 24 | return std::make_unique<OpenGL::RendererOpenGL>(emu_window, system, context); | 24 | return std::make_unique<OpenGL::RendererOpenGL>(emu_window, system, context); |
| 25 | #ifdef HAS_VULKAN | 25 | #ifdef HAS_VULKAN |
| @@ -42,7 +42,7 @@ std::unique_ptr<Tegra::GPU> CreateGPU(Core::Frontend::EmuWindow& emu_window, Cor | |||
| 42 | return nullptr; | 42 | return nullptr; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | if (Settings::values.use_asynchronous_gpu_emulation) { | 45 | if (Settings::values.use_asynchronous_gpu_emulation.GetValue()) { |
| 46 | return std::make_unique<VideoCommon::GPUAsynch>(system, std::move(renderer), | 46 | return std::make_unique<VideoCommon::GPUAsynch>(system, std::move(renderer), |
| 47 | std::move(context)); | 47 | std::move(context)); |
| 48 | } | 48 | } |
| @@ -51,8 +51,8 @@ std::unique_ptr<Tegra::GPU> CreateGPU(Core::Frontend::EmuWindow& emu_window, Cor | |||
| 51 | 51 | ||
| 52 | u16 GetResolutionScaleFactor(const RendererBase& renderer) { | 52 | u16 GetResolutionScaleFactor(const RendererBase& renderer) { |
| 53 | return static_cast<u16>( | 53 | return static_cast<u16>( |
| 54 | Settings::values.resolution_factor != 0 | 54 | Settings::values.resolution_factor.GetValue() != 0 |
| 55 | ? Settings::values.resolution_factor | 55 | ? Settings::values.resolution_factor.GetValue() |
| 56 | : renderer.GetRenderWindow().GetFramebufferLayout().GetScalingRatio()); | 56 | : renderer.GetRenderWindow().GetFramebufferLayout().GetScalingRatio()); |
| 57 | } | 57 | } |
| 58 | 58 | ||