aboutsummaryrefslogtreecommitdiff
path: root/src/yuzu/bootmanager.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Frontend: Don't call DoneCurrent if the context isnt already currentJames Rowe2020-03-301-1/+4
|
* Address review and fix broken yuzu-tester buildJames Rowe2020-03-251-66/+31
|
* Frontend/GPU: Refactor context managementJames Rowe2020-03-241-190/+185
| | | | | | | | | | | | | | | | | | | | Changes the GraphicsContext to be managed by the GPU core. This eliminates the need for the frontends to fool around with tricky MakeCurrent/DoneCurrent calls that are dependent on the settings (such as async gpu option). This also refactors out the need to use QWidget::fromWindowContainer as that caused issues with focus and input handling. Now we use a regular QWidget and just access the native windowHandle() directly. Another change is removing the debug tool setting in FrameMailbox. Instead of trying to block the frontend until a new frame is ready, the core will now take over presentation and draw directly to the window if the renderer detects that its hooked by NSight or RenderDoc Lastly, since it was in the way, I removed ScopeAcquireWindowContext and replaced it with a simple subclass in GraphicsContext that achieves the same result
* frontend: qt: bootmanager: Acquire a shared context in main emu thread.bunnei2020-02-251-10/+5
|
* frontend: qt: bootmanager: Vulkan: Restore support for VK backend.bunnei2020-02-251-77/+128
|
* frontend: qt: bootmanager: OpenGL: Implement separate presentation thread.bunnei2020-02-251-200/+204
|
* core: frontend: Refactor scope_acquire_window_context to scope_acquire_context.bunnei2020-02-251-2/+2
|
* yuzu/bootmanager: Define Vulkan widget only when enabledReinUsesLisp2020-01-291-0/+2
|
* yuzu: Implement Vulkan frontendReinUsesLisp2020-01-291-53/+229
| | | | | Adds a Qt and SDL2 frontend for Vulkan. It also finishes the missing bits on Vulkan initialization.
* yuzu/bootmanager: Remove {glx,wgl}MakeCurrent on SwapBuffersReinUsesLisp2020-01-061-9/+2
| | | | | | | | MakeCurrent is a costly (according to Nsight's profiler it takes a tenth of a millisecond to complete), and we don't have a reason to call it because: - Qt no longer signals a warning if it's not called - yuzu no longer supports macOS
* Merge pull request #2514 from ReinUsesLisp/opengl-compatZach Hilman2019-06-071-6/+2
|\ | | | | video_core: Drop OpenGL core in favor of OpenGL compatibility
| * rasterizer_opengl: Remove OpenGL core profileReinUsesLisp2019-05-301-6/+2
| |
* | yuzu/bootmanager: Log out screenshot destination pathLioncash2019-06-031-6/+11
| | | | | | | | | | | | | | We can make this message more meaningful by indicating the location the screenshot has been saved to. We can also log out whenever a screenshot could not be saved (e.g. due to filesystem permissions or some other reason).
* | yuzu/bootmanager: Treat the resolution factor as a u32Lioncash2019-06-031-2/+3
| | | | | | | | | | | | | | | | | | Treating it as a u16 can result in a sign-conversion warning when performing arithmetic with it, as u16 promotes to an int when aritmetic is performed on it, not unsigned int. This also makes the interface more uniform, as the layout interface now operates on u32 across the board.
* | yuzu/bootmanager: Default EmuThread's destructor in the cpp fileLioncash2019-06-031-0/+2
| | | | | | | | | | This class contains non-trivial members, so we should default the destructor's definition within the cpp file.
* | yuzu/bootmanager: unsigned -> u32Lioncash2019-06-031-8/+8
| | | | | | | | Same thing (for platforms we support), less reading.
* | yuzu/bootmanager: Change false literal to 0 for setSwapInterval()Lioncash2019-06-031-1/+1
| | | | | | | | This function is defined as taking an int, not a bool.
* | yuzu/bootmanager: Remove pointer downcast in GRenderWindow's constructorLioncash2019-06-031-3/+2
| | | | | | | | | | | | | | | | We can just pass a pointer to GMainWindow directly and make it a requirement of the interface. This makes the interface a little safer, since this would technically otherwise allow any random QWidget to be the parent of a render window, downcasting it to GMainWindow (which is undefined behavior).
* | yuzu/bootmanager: Remove unnecessary pointer castsLioncash2019-06-031-5/+6
|/ | | | | We can just invoke these functions by qualifying the object name before the function.
* Merge pull request #2518 from ReinUsesLisp/sdl2-windowbunnei2019-05-291-2/+1
|\ | | | | yuzu_cmd: Split emu_window OpenGL implementation into its own file
| * emu_window: Pass OnMinimalClientAreaChangeRequest argument by copyReinUsesLisp2019-05-261-2/+1
| | | | | | | | | | There's no performance improvement in passing an unsigned pair by reference.
* | gl_shader_cache: Use shared contexts to build shaders in parallelReinUsesLisp2019-05-201-9/+9
|/
* yuzu/bootmanager: Specify string conversions explicitlyLioncash2019-05-201-2/+4
| | | | | Allows the bootmanager code to compile with implicit string conversions disabled.
* yuzu/bootmanager: Explicitly enable deprecated OpenGL features on compatReinUsesLisp2019-05-171-0/+1
| | | | | | | Nvidia's proprietary driver creates a real OpenGL compatibility profile without this option, meanwhile Intel (and probably AMD, I haven't tested it) require that QSurfaceFormat::FormatOption::DeprecatedFunctions is explicitly enabled.
* Allow picking a Compatibility Profile for OpenGL.Fernando Sahmkow2019-04-201-1/+5
| | | | | | This option allows picking the compatibility profile since a lot of bugs are fixed in it. We devs will use this option to easierly debug current problems in our Core implementation.:wq
* yuzu/bootmanager: Replace unnnecessary constructor initializer list member ↵Lioncash2019-04-171-2/+2
| | | | | | | | | | of GGLContext The default constructor will always run, even when not specified, so this is redundant. However, the context member can indeed be initialized in the constructor initializer list.
* yuzu/bootmanager: Resolve constructor initializer list warningsLioncash2019-04-161-2/+1
| | | | | Resolves -Wreorder warnings. These will automatically be initialized to nullptr anyways, so these were redundant.
* Merge pull request #2017 from jroweboy/glwidgetbunnei2019-04-131-70/+138
|\ | | | | Frontend: Migrate to QOpenGLWindow and support shared contexts
| * bootmanager: Bypass input focus issuesReinUsesLisp2019-03-251-44/+57
| |
| * bootmanager: Bypass resizing issueReinUsesLisp2019-03-251-7/+12
| |
| * bootmanager: Delete container to avoid crash on game restartingReinUsesLisp2019-03-251-13/+8
| | | | | | | | | | While we are at it, remove nullptr checks for deletion, since the C++ standard defines that delete does it by its own
| * QT: Hide GLWidget immediately after showing.James Rowe2019-01-211-0/+2
| | | | | | | | | | | | With the loading screen merged, we don't want to actually show at this point, but it still needs to be shown to actually create the context. Turns out you can just show and hide it immediately and it'll work.
| * QT Frontend: Migrate to QOpenGLWindowJames Rowe2019-01-211-19/+72
| |
* | general: Use deducation guides for std::lock_guard and std::unique_lockLioncash2019-04-011-1/+1
| | | | | | | | | | | | | | Since C++17, the introduction of deduction guides for locking facilities means that we no longer need to hardcode the mutex type into the locks themselves, making it easier to switch mutex types, should it ever be necessary in the future.
* | frontend: qt: fix a freeze where if you click on entry in the game list too ↵liushuyu2019-03-151-3/+1
| | | | | | | | fast, citra will hang
* | Merge pull request #2187 from FearlessTobi/port-sdl-thingsbunnei2019-03-131-1/+0
|\ \ | | | | | | Port various Citra changes to input_common, including deadzone support
| * | Input: Remove global variables from SDL InputJames Rowe2019-03-021-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | Changes the interface as well to remove any unique methods that frontends needed to call such as StartJoystickEventHandler by conditionally starting the polling thread only if the frontend hasn't started it already. Additionally, moves all global state into a single SDLState class in order to guarantee that the destructors are called in the proper order
* | | bootmanager: Ensure that we have a context for shader loading.bunnei2019-03-061-4/+6
|/ /
* / gl_shader_cache: Link loading screen with disk shader cache loadReinUsesLisp2019-02-061-0/+9
|/
* QT Frontend: Add a Loading screen with progressbarJames Rowe2019-01-191-2/+9
| | | | | | | | | | | | With shader caches on the horizon, one requirement is to provide visible feedback for the progress. The shader cache reportedly takes several minutes to load for large caches that were invalidated, and as such we should provide a loading screen with progress. Adds a loading screen widget that will be shown until the first frame of the game is swapped. This was chosen in case shader caches are not being used, several games still take more than a few seconds to launch and could benefit from a loading screen.
* yuzu, video_core: Screenshot functionalityzhupengfei2018-12-181-0/+18
| | | | Allows capturing screenshot at the current internal resolution (native for software renderer), but a setting is available to capture it in other resolutions. The screenshot is saved to a single PNG in the current layout.
* Update OpenGL's backend version from 3.3 to 4.3FernandoS272018-11-211-1/+1
|
* bootmanager: Use QStringLiteral instead of std::string to represent the ↵Lioncash2018-10-241-4/+2
| | | | | | | | | window title This gets rid of an unnecessary type conversion. We can just use the regular QStringLiteral to already format the string as the type setWindowTitle accepts instead of converting from a std::string instance.
* implemented touch in Qt and SDLNeatNit2018-10-091-7/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | change TouchToPixelPos to return std::pair<int, int> static_cast (SDL) various minor style and code improvements style - PascalCase for function names made touch events private const pointer arg in touch events make TouchToPixelPos a const member function did I do this right? braces on barely-multiline if remove question comment (confirmed in Discord) fixed consts remove unused parameter from TouchEndEvent DRY - High-DPI scaled touch put in separate function also fixes a bug where if you start touching (with either mouse or touchscreen) and drag the mouse to the LEFT of the emulator window, the touch point jumps to the RIGHT side of the touchscreen; draggin to above the window would make it jump to the bottom. implicit conversion from QPoint to QPointF, apparently I have no idea what const even means but I'll put it here anyway remove unused or used-once variables make touch scaling functions const, and put their implementations together removed unused FingerID parameters QTouchEvent forward declaration; add comment to TouchBegin that was lost in an edit better DRY in SDL To do -> TODO(NeatNit) remove unused include
* Port #4141 from citra: Joystick hotplug support (#1275)Tobias2018-09-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Joystick hotplug support (#4141) * use SDL_PollEvent instead of SDL_JoystickUpdate Register hot plugged controller by GUID if they were configured in a previous session * Move SDL_PollEvent into its own thread * Don't store SDLJoystick pointer in Input Device; Get pointer on each GetStatus call * Fix that joystick_list gets cleared after SDL_Quit * Add VirtualJoystick for InputDevices thats never nullptr * fixup! Add VirtualJoystick for InputDevices thats never nullptr * fixup! fixup! Add VirtualJoystick for InputDevices thats never nullptr * Remove SDL_GameController, make SDL_Joystick* unique_ptr * fixup! Remove SDL_GameController, make SDL_Joystick* unique_ptr * Adressed feedback; fixed handling of same guid reconnects * fixup! Adressed feedback; fixed handling of same guid reconnects * merge the two joystick_lists into one * make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! fixup! make SDLJoystick a member of VirtualJoystick * SDLJoystick: Addressed review comments * Address one missed review comment
* frontend: Set swap interval to 0fearlessTobi2018-09-061-0/+1
|
* OpenGL: Use MakeCurrent/DoneCurrent for multithreaded rendering.bunnei2018-07-141-1/+4
|
* Port #3505 from CItrafearlessTobi2018-07-071-6/+7
|
* string_util: Remove StringFromFormat() and related functionsLioncash2018-04-291-2/+4
| | | | Given we utilize fmt, we don't need to provide our own functions for formatting anymore
* qt: Migrate to Qt 5 signal/slot connection syntax where applicableLioncash2018-01-181-2/+2
|