aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-16externals: Update opus to latest masterLioncash
Prevents yuzu from getting 2000+ warnings in MSVC in a future change.
2019-03-16kernel/thread: Actually remove the definition of ExitCurrentThread()Lioncash
This was intended to be removed in 51d7f6bffcc0498a47abc7de27bf0906fc523dae, but I guess I forgot to actually save the file like a dingus.
2019-03-16Merge pull request #2241 from lioncash/compile-flagsbunnei
CMakeLists: Remove now-unnecessary GCC special-casing
2019-03-16Merge pull request #2242 from lioncash/thread-fnbunnei
kernel/thread: Remove WaitCurrentThread_Sleep() and ExitCurrentThread()
2019-03-16memory: Simplify rasterizer cache operations.bunnei
2019-03-16video_core: Refactor to use MemoryManager interface for all memory access.bunnei
# Conflicts: # src/video_core/engines/kepler_memory.cpp # src/video_core/engines/maxwell_3d.cpp # src/video_core/morton.cpp # src/video_core/morton.h # src/video_core/renderer_opengl/gl_global_cache.cpp # src/video_core/renderer_opengl/gl_global_cache.h # src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
2019-03-16Merge pull request #2237 from bunnei/cache-host-addrbunnei
gpu: Use host address for caching instead of guest address.
2019-03-15kernel/thread: Move thread exiting logic from ExitCurrentThread to svcExitThreadLioncash
Puts the operation on global state in the same places as the rest of the svc calls.
2019-03-15kernel/thread: Migrate WaitCurrentThread_Sleep into the Thread interfaceLioncash
Rather than make a global accessor for this sort of thing. We can make it a part of the thread interface itself. This allows getting rid of a hidden global accessor in the kernel code.
2019-03-15kernel/thread: Expand documentation of nominal_priority and current_priorityLioncash
Aims to disambiguate why each priority instance exists a little bit. While we're at it, also add an explanatory comment to UpdatePriority().
2019-03-15kernel/thread: Make bracing consistent within UpdatePriority()Lioncash
2019-03-15kernel/thread: Amend condition within UpdatePriority()Lioncash
This condition was checking against the nominal thread priority, whereas the kernel itself checks against the current priority instead. We were also assigning the nominal priority, when we should be assigning current_priority, which takes priority inheritance into account. This can lead to the incorrect priority being assigned to a thread. Given we recursively update the relevant threads, we don't need to go through the whole mutex waiter list. This matches what the kernel does as well (only accessing the first entry within the waiting list).
2019-03-15kernel/thread: Maintain priority ordering of added mutex waiting threadsLioncash
The kernel keeps the internal waiting list ordered by priority. This is trivial to do with std::find_if followed by an insertion.
2019-03-16yuzu: Make hotkeys configurable via the GUIAdityarup Laha
* Adds a new Hotkeys tab in the Controls group. * Double-click a Hotkey to rebind it.
2019-03-15Merge pull request #2048 from FearlessTobi/port-3924bunnei
Port citra-emu/citra#3924: "citra_qt: Settings (configuration) rework"
2019-03-15CMakeLists: Remove now-unnecessary GCC special-casingLioncash
This issue has since been fixed in newer versions of Boost, so we don't need to worry about this anymore.
2019-03-15gdbstub: Fix some bugs in IsMemoryBreak() and ServeBreak. Add workaround to ↵Dimitri A
let watchpoints break into GDB. (#4651) * gdbstub: fix IsMemoryBreak() returning false while connected to client As a result, the only existing codepath for a memory watchpoint hit to break into GDB (InterpeterMainLoop, GDB_BP_CHECK, ARMul_State::RecordBreak) is finally taken, which exposes incorrect logic* in both RecordBreak and ServeBreak. * a blank BreakpointAddress structure is passed, which sets r15 (PC) to NULL * gdbstub: DynCom: default-initialize two members/vars used in conditionals * gdbstub: DynCom: don't record memory watchpoint hits via RecordBreak() For now, instead check for GDBStub::IsMemoryBreak() in InterpreterMainLoop and ServeBreak. Fixes PC being set to a stale/unhit breakpoint address (often zero) when a memory watchpoint (rwatch, watch, awatch) is handled in ServeBreak() and generates a GDB trap. Reasons for removing a call to RecordBreak() for memory watchpoints: * The``breakpoint_data`` we pass is typed Execute or None. It describes the predicted next code breakpoint hit relative to PC; * GDBStub::IsMemoryBreak() returns true if a recent Read/Write operation hit a watchpoint. It doesn't specify which in return, nor does it trace it anywhere. Thus, the only data we could give RecordBreak() is a placeholder BreakpointAddress at offset NULL and type Access. I found the idea silly, compared to simply relying on GDBStub::IsMemoryBreak(). There is currently no measure in the code that remembers the addresses (and types) of any watchpoints that were hit by an instruction, in order to send them to GDB as "extended stop information." I'm considering an implementation for this. * gdbstub: Change an ASSERT to DEBUG_ASSERT I have never seen the (Reg[15] == last_bkpt.address) assert fail in practice, even after several weeks of (locally) developping various branches around GDB. Only leave it inside Debug builds.
2019-03-15frontend: qt: fix a freeze where if you click on entry in the game list too ↵liushuyu
fast, citra will hang
2019-03-14gpu: Use host address for caching instead of guest address.bunnei
2019-03-14Merge pull request #2233 from ReinUsesLisp/morton-cleanupbunnei
video_core/morton: Miscellaneous changes
2019-03-14Merge pull request #2229 from ReinUsesLisp/vk-sampler-cachebunnei
vk_sampler_cache: Implement a sampler cache
2019-03-14core/hle/kernel/mutex: Remove usages of global system accessorsLioncash
Removes the use of global system accessors, and instead uses the explicit interface provided.
2019-03-14core/hle/kernel: Make Mutex a per-process class.Lioncash
Makes it an instantiable class like it is in the actual kernel. This will also allow removing reliance on global accessors in a following change, now that we can encapsulate a reference to the system instance in the class.
2019-03-14Merge pull request #2230 from lioncash/globalbunnei
kernel/process: Remove use of global system accessors
2019-03-14Merge pull request #2216 from ReinUsesLisp/rasterizer-systembunnei
gl_rasterizer: Use system instance passed from argument
2019-03-13Merge pull request #2227 from lioncash/overridebunnei
renderer_opengl/gl_global_cache: Add missing override specifiers
2019-03-13video_core/morton: Use enum to describe MortonCopyPixels128 modeReinUsesLisp
2019-03-13video_core/morton: Remove unused parameter in MortonSwizzleReinUsesLisp
2019-03-13video_core/morton: Remove clang-format off when it's not neededReinUsesLisp
2019-03-13video_core/morton: Remove unused functionsReinUsesLisp
2019-03-13Merge pull request #2226 from lioncash/privatebunnei
kernel/server_port: Make data members private
2019-03-13Merge pull request #2223 from lioncash/errorbunnei
core/hle/result: Tidy up the base error code result header.
2019-03-13Merge pull request #2187 from FearlessTobi/port-sdl-thingsbunnei
Port various Citra changes to input_common, including deadzone support
2019-03-13Merge pull request #2166 from lioncash/vi-init-servicebunnei
service/vi: Unstub GetDisplayService
2019-03-13Merge pull request #2231 from ReinUsesLisp/fixup-biasbunnei
video_core/texture: Fix up sampler lod bias
2019-03-13core/hle/kernel/svc: Implement svcUnmapTransferMemoryLioncash
Similarly, like svcMapTransferMemory, we can also implement svcUnmapTransferMemory fairly trivially as well.
2019-03-13core/hle/kernel/svc: Implement svcMapTransferMemoryLioncash
Now that transfer memory handling is separated from shared memory, we can implement svcMapTransferMemory pretty trivially.
2019-03-13core/hle/kernel: Split transfer memory handling out into its own classLioncash
Within the kernel, shared memory and transfer memory facilities exist as completely different kernel objects. They also have different validity checking as well. Therefore, we shouldn't be treating the two as the same kind of memory. They also differ in terms of their behavioral aspect as well. Shared memory is intended for sharing memory between processes, while transfer memory is intended to be for transferring memory to other processes. This breaks out the handling for transfer memory into its own class and treats it as its own kernel object. This is also important when we consider resource limits as well. Particularly because transfer memory is limited by the resource limit value set for it. While we currently don't handle resource limit testing against objects yet (but we do allow setting them), this will make implementing that behavior much easier in the future, as we don't need to distinguish between shared memory and transfer memory allocations in the same place.
2019-03-13video_core/texture: Fix up sampler lod biasReinUsesLisp
2019-03-12vk_sampler_cache: Use operator== instead of memcmpMat M
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-03-12vk_sampler_cache: Implement a sampler cacheReinUsesLisp
2019-03-12kernel/process: Remove use of global system accessorsLioncash
Now that we pass in a reference to the system instance, we can utilize it to eliminate the global accessors in Process-related code.
2019-03-12Merge pull request #2211 from lioncash/arbiterbunnei
kernel: Make the address arbiter instance per-process
2019-03-12Merge pull request #2222 from lioncash/cstrbunnei
service/service: Remove unncessary calls to c_str()
2019-03-12video_core/texture: Add a raw representation of TSCEntryReinUsesLisp
2019-03-12Merge pull request #2215 from ReinUsesLisp/samplersbunnei
gl_rasterizer: Encapsulate sampler queries into methods
2019-03-11renderer_opengl/gl_global_cache: Replace indexing for assignment with ↵Lioncash
insert_or_assign The previous code had some minor issues with it, really not a big deal, but amending it is basically 'free', so I figured, "why not?". With the standard container maps, when: map[key] = thing; is done, this can cause potentially undesirable behavior in certain scenarios. In particular, if there's no value associated with the key, then the map constructs a default initialized instance of the value type. In this case, since it's a std::shared_ptr (as a type alias) that is the value type, this will construct a std::shared_pointer, and then assign over it (with objects that are quite large, or actively heap allocate this can be extremely undesirable). We also make the function take the region by value, as we can avoid a copy (and by extension with std::shared_ptr, a copy causes an atomic reference count increment), in certain scenarios when ownership isn't a concern (i.e. when ReserveGlobalRegion is called with an rvalue reference, then no copy at all occurs). So, it's more-or-less a "free" gain without many downsides.
2019-03-11renderer_opengl/gl_global_cache: Append missing override specifiersLioncash
Two of the functions here are overridden functions, so we can append these specifiers to make it explicit.
2019-03-11set_sys: Move constants to anonymous namespaceZach Hilman
2019-03-11kernel/server_port: Make data members privateLioncash
With this, all kernel objects finally have all of their data members behind an interface, making it nicer to reason about interactions with other code (as external code no longer has the freedom to totally alter internals and potentially messing up invariants).