diff options
| -rw-r--r-- | src/core/hle/service/audio/audren_u.cpp | 19 | ||||
| -rw-r--r-- | src/core/hle/service/set/set.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/service/set/set.h | 1 | ||||
| -rw-r--r-- | src/core/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.h | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug.ui | 18 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu_cmd/default_ini.h | 3 | 
11 files changed, 57 insertions, 10 deletions
| diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index 75db0c2dc..3711e1ea1 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp @@ -167,13 +167,12 @@ public:              {3, &IAudioDevice::GetActiveAudioDeviceName, "GetActiveAudioDeviceName"},              {4, &IAudioDevice::QueryAudioDeviceSystemEvent, "QueryAudioDeviceSystemEvent"},              {5, &IAudioDevice::GetActiveChannelCount, "GetActiveChannelCount"}, -            {6, &IAudioDevice::ListAudioDeviceName, -             "ListAudioDeviceNameAuto"}, // TODO(ogniK): Confirm if autos are identical to non auto +            {6, &IAudioDevice::ListAudioDeviceName, "ListAudioDeviceNameAuto"},              {7, &IAudioDevice::SetAudioDeviceOutputVolume, "SetAudioDeviceOutputVolumeAuto"},              {8, nullptr, "GetAudioDeviceOutputVolumeAuto"},              {10, &IAudioDevice::GetActiveAudioDeviceName, "GetActiveAudioDeviceNameAuto"},              {11, nullptr, "QueryAudioDeviceInputEvent"}, -            {12, nullptr, "QueryAudioDeviceOutputEvent"}, +            {12, &IAudioDevice::QueryAudioDeviceOutputEvent, "QueryAudioDeviceOutputEvent"},              {13, nullptr, "GetAudioSystemMasterVolumeSetting"},          };          RegisterHandlers(functions); @@ -181,6 +180,11 @@ public:          auto& kernel = Core::System::GetInstance().Kernel();          buffer_event = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Automatic,                                                                "IAudioOutBufferReleasedEvent"); + +        // Should only be signalled when an audio output device has been changed, example: speaker +        // to headset +        audio_output_device_switch_event = Kernel::WritableEvent::CreateEventPair( +            kernel, Kernel::ResetType::Automatic, "IAudioDevice:AudioOutputDeviceSwitchedEvent");      }  private: @@ -237,7 +241,16 @@ private:          rb.Push<u32>(1);      } +    void QueryAudioDeviceOutputEvent(Kernel::HLERequestContext& ctx) { +        LOG_DEBUG(Service_Audio, "called"); + +        IPC::ResponseBuilder rb{ctx, 2, 1}; +        rb.Push(RESULT_SUCCESS); +        rb.PushCopyObjects(audio_output_device_switch_event.readable); +    } +      Kernel::EventPair buffer_event; +    Kernel::EventPair audio_output_device_switch_event;  }; // namespace Audio diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp index 298d85011..b54214421 100644 --- a/src/core/hle/service/set/set.cpp +++ b/src/core/hle/service/set/set.cpp @@ -95,6 +95,14 @@ void SET::GetAvailableLanguageCodeCount2(Kernel::HLERequestContext& ctx) {      PushResponseLanguageCode(ctx, post4_0_0_max_entries);  } +void SET::GetQuestFlag(Kernel::HLERequestContext& ctx) { +    LOG_DEBUG(Service_SET, "called"); + +    IPC::ResponseBuilder rb{ctx, 3}; +    rb.Push(RESULT_SUCCESS); +    rb.Push(static_cast<u32>(Settings::values.quest_flag)); +} +  void SET::GetLanguageCode(Kernel::HLERequestContext& ctx) {      LOG_DEBUG(Service_SET, "called {}", Settings::values.language_index); @@ -114,7 +122,7 @@ SET::SET() : ServiceFramework("set") {          {5, &SET::GetAvailableLanguageCodes2, "GetAvailableLanguageCodes2"},          {6, &SET::GetAvailableLanguageCodeCount2, "GetAvailableLanguageCodeCount2"},          {7, nullptr, "GetKeyCodeMap"}, -        {8, nullptr, "GetQuestFlag"}, +        {8, &SET::GetQuestFlag, "GetQuestFlag"},          {9, nullptr, "GetKeyCodeMap2"},      };      // clang-format on diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h index 31f9cb296..b154e08aa 100644 --- a/src/core/hle/service/set/set.h +++ b/src/core/hle/service/set/set.h @@ -42,6 +42,7 @@ private:      void GetAvailableLanguageCodes2(Kernel::HLERequestContext& ctx);      void GetAvailableLanguageCodeCount(Kernel::HLERequestContext& ctx);      void GetAvailableLanguageCodeCount2(Kernel::HLERequestContext& ctx); +    void GetQuestFlag(Kernel::HLERequestContext& ctx);  };  } // namespace Service::Set diff --git a/src/core/settings.h b/src/core/settings.h index e2ffcaaf7..0e0b4e15c 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -416,6 +416,7 @@ struct Values {      bool dump_exefs;      bool dump_nso;      bool reporting_services; +    bool quest_flag;      // WebService      bool enable_telemetry; diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 2d78e2b60..8d3d7bfdc 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -245,13 +245,13 @@ Shader CachedShader::CreateStageFromMemory(const ShaderParameters& params,          static_cast<u32>(code_size_b / sizeof(u64)), std::move(program_code),          std::move(program_code_b))); -    return std::make_shared<CachedShader>(params, program_type, std::move(result)); +    return std::shared_ptr<CachedShader>(new CachedShader(params, program_type, std::move(result)));  }  Shader CachedShader::CreateStageFromCache(const ShaderParameters& params,                                            Maxwell::ShaderProgram program_type,                                            GLShader::ProgramResult result) { -    return std::make_shared<CachedShader>(params, program_type, std::move(result)); +    return std::shared_ptr<CachedShader>(new CachedShader(params, program_type, std::move(result)));  }  std::tuple<GLuint, BaseBindings> CachedShader::GetProgramHandle(GLenum primitive_mode, diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h index 964f680bc..01af9b28a 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.h +++ b/src/video_core/renderer_opengl/gl_shader_cache.h @@ -52,9 +52,6 @@ struct ShaderParameters {  class CachedShader final : public RasterizerCacheObject {  public: -    explicit CachedShader(const ShaderParameters& params, Maxwell::ShaderProgram program_type, -                          GLShader::ProgramResult result); -      static Shader CreateStageFromMemory(const ShaderParameters& params,                                          Maxwell::ShaderProgram program_type,                                          ProgramCode&& program_code, ProgramCode&& program_code_b); @@ -81,6 +78,9 @@ public:                                                        BaseBindings base_bindings);  private: +    explicit CachedShader(const ShaderParameters& params, Maxwell::ShaderProgram program_type, +                          GLShader::ProgramResult result); +      // Geometry programs. These are needed because GLSL needs an input topology but it's not      // declared by the hardware. Workaround this issue by generating a different shader per input      // topology class. diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 5a456e603..781771e16 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -475,6 +475,7 @@ void Config::ReadDebuggingValues() {      Settings::values.dump_nso = ReadSetting(QStringLiteral("dump_nso"), false).toBool();      Settings::values.reporting_services =          ReadSetting(QStringLiteral("reporting_services"), false).toBool(); +    Settings::values.quest_flag = ReadSetting(QStringLiteral("quest_flag"), false).toBool();      qt_config->endGroup();  } @@ -858,6 +859,7 @@ void Config::SaveDebuggingValues() {                   QString::fromStdString(Settings::values.program_args), QStringLiteral(""));      WriteSetting(QStringLiteral("dump_exefs"), Settings::values.dump_exefs, false);      WriteSetting(QStringLiteral("dump_nso"), Settings::values.dump_nso, false); +    WriteSetting(QStringLiteral("quest_flag"), Settings::values.quest_flag, false);      qt_config->endGroup();  } diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp index 63426fe4f..9a13bb797 100644 --- a/src/yuzu/configuration/configure_debug.cpp +++ b/src/yuzu/configuration/configure_debug.cpp @@ -37,6 +37,7 @@ void ConfigureDebug::SetConfiguration() {      ui->dump_exefs->setChecked(Settings::values.dump_exefs);      ui->dump_decompressed_nso->setChecked(Settings::values.dump_nso);      ui->reporting_services->setChecked(Settings::values.reporting_services); +    ui->quest_flag->setChecked(Settings::values.quest_flag);  }  void ConfigureDebug::ApplyConfiguration() { @@ -48,6 +49,7 @@ void ConfigureDebug::ApplyConfiguration() {      Settings::values.dump_exefs = ui->dump_exefs->isChecked();      Settings::values.dump_nso = ui->dump_decompressed_nso->isChecked();      Settings::values.reporting_services = ui->reporting_services->isChecked(); +    Settings::values.quest_flag = ui->quest_flag->isChecked();      Debugger::ToggleConsole();      Log::Filter filter;      filter.ParseFilterString(Settings::values.log_filter); diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui index 4a7e3dc3d..7e109cef0 100644 --- a/src/yuzu/configuration/configure_debug.ui +++ b/src/yuzu/configuration/configure_debug.ui @@ -7,7 +7,7 @@      <x>0</x>      <y>0</y>      <width>400</width> -    <height>357</height> +    <height>474</height>     </rect>    </property>    <property name="windowTitle"> @@ -181,6 +181,22 @@      </widget>     </item>     <item> +    <widget class="QGroupBox" name="groupBox_5"> +     <property name="title"> +      <string>Advanced</string> +     </property> +     <layout class="QVBoxLayout" name="verticalLayout"> +      <item> +       <widget class="QCheckBox" name="quest_flag"> +        <property name="text"> +         <string>Kiosk (Quest) Mode</string> +        </property> +       </widget> +      </item> +     </layout> +    </widget> +   </item> +   <item>      <spacer name="verticalSpacer">       <property name="orientation">        <enum>Qt::Vertical</enum> diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 9ac92e937..8fe266f19 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp @@ -383,6 +383,7 @@ void Config::ReadValues() {      Settings::values.dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false);      Settings::values.reporting_services =          sdl2_config->GetBoolean("Debugging", "reporting_services", false); +    Settings::values.quest_flag = sdl2_config->GetBoolean("Debugging", "quest_flag", false);      const auto title_list = sdl2_config->Get("AddOns", "title_ids", "");      std::stringstream ss(title_list); diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h index 6538af098..b4f50d27d 100644 --- a/src/yuzu_cmd/default_ini.h +++ b/src/yuzu_cmd/default_ini.h @@ -224,6 +224,9 @@ gdbstub_port=24689  dump_exefs=false  # Determines whether or not yuzu will dump all NSOs it attempts to load while loading them  dump_nso=false +# Determines whether or not yuzu will report to the game that the emulated console is in Kiosk Mode +# false: Retail/Normal Mode (default), true: Kiosk Mode +quest_flag =  [WebService]  # Whether or not to enable telemetry | 
