Lioncash
18918f5f2f
kernel/vm_manager: Rename CodeStatic/CodeMutable to Code and CodeData respectively
...
Makes it more evident that one is for actual code and one is for actual
data. Mutable and static are less than ideal terms here, because
read-only data is technically not mutable, but we were mapping it with
that label.
2019-03-21 11:43:35 -04:00
Lioncash
56c80a2a21
kernel/vm_manager: Amend flag values for CodeMutable
...
This should actually be using the data flags, rather than the code
flags.
2019-03-21 11:23:14 -04:00
Lioncash
c221308a66
core/memory: Remove unnecessary includes
...
In 93da8e0abf
, the page table construct
was moved to the common library (which utilized these inclusions). Since
the move, nothing requires these headers to be included within the
memory header.
2019-03-21 09:48:54 -04:00
bunnei
839c0f829b
Merge pull request #2260 from lioncash/sdl
...
input_common/sdl: Correct return values within GetPollers implementations
2019-03-21 00:20:49 -04:00
Lioncash
109b78a6d6
common/bit_util: Fix bad merge duplicating the copy constructor
...
Introduced as a result of #2090 , we already define the copy constructor
further down below, so this isn't needed.
2019-03-20 23:48:37 -04:00
bunnei
3e930304fe
Merge pull request #2090 from FearlessTobi/port-4599
...
Port citra-emu/citra#4244 and citra-emu/citra#4599 : Changes to BitField
2019-03-20 23:44:20 -04:00
bunnei
52f36ea1c7
Merge pull request #2262 from lioncash/enum
...
file_sys/content_archive: Amend name of Data_Unknown5 enum entry
2019-03-20 23:13:32 -04:00
bunnei
b72664abfd
Merge pull request #2273 from lioncash/guard
...
common/uint128: Add missing header guard
2019-03-20 23:13:06 -04:00
bunnei
2117edd0f8
memory_manager: Cleanup FindFreeRegion.
2019-03-20 23:12:28 -04:00
bunnei
5a5fccaa23
memory_manager: Use Common::AlignUp in public interface as needed.
2019-03-20 22:58:49 -04:00
Lioncash
f2c41ba256
common/uint128: Add missing header guard
2019-03-20 22:39:00 -04:00
Lioncash
b0d70096a1
common/uint128: Add missing top-file source text
2019-03-20 22:38:25 -04:00
bunnei
e76f442a0e
Merge pull request #2268 from lioncash/codeset
...
core/kernel: Migrate CodeSet to its own source files
2019-03-20 22:37:58 -04:00
bunnei
72837e4b3d
memory_manager: Bug fixes and further cleanup.
2019-03-20 22:36:03 -04:00
bunnei
3ae0de9b53
memory: Check that core is powered on before attempting to use GPU.
...
- GPU will be released on shutdown, before pages are unmapped.
- On subsequent runs, current_page_table will be not nullptr, but GPU might not be valid yet.
2019-03-20 22:36:03 -04:00
bunnei
19330f45d3
maxwell_dma: Check for valid source in destination before copy.
...
- Avoid a crash in Octopath Traveler.
2019-03-20 22:36:03 -04:00
bunnei
197dcf0b5e
memory_manager: Add protections for invalid GPU addresses.
...
- Avoid a crash in Xenoblade Chronicles 2.
2019-03-20 22:36:03 -04:00
bunnei
21eb4cfa7f
gl_rasterizer_cache: Check that backing memory is valid before creating a surface.
...
- Fixes a crash in Puyo Puyo Tetris.
2019-03-20 22:36:02 -04:00
bunnei
22d3dfbcd4
gpu: Rewrite virtual memory manager using PageTable.
2019-03-20 22:36:02 -04:00
bunnei
241563d15c
gpu: Move GPUVAddr definition to common_types.
2019-03-20 22:36:02 -04:00
Lioncash
1b6adb5308
common/CMakeLists: Amend boost dependency
...
When #2247 was created, thread_queue_list.h was the only user of
boost-related code, however #2252 moved the page table struct into
common, which makes use of Boost.ICL, so we need to add the dependency
to the common library's link interface again.
2019-03-20 21:42:13 -04:00
bunnei
872a7bee72
Merge pull request #2267 from FernandoS27/fix-2238
...
Fix crash caused by #2238 .
2019-03-20 21:36:55 -04:00
bunnei
e8ff8a66b0
Merge pull request #2247 from lioncash/include
...
common/thread_queue_list: Remove unnecessary dependency on boost
2019-03-20 21:34:12 -04:00
bunnei
723ad4512f
Merge pull request #2224 from lioncash/opus
...
hwopus: Leverage multistream API for decoding regular Opus packets
2019-03-20 21:33:37 -04:00
bunnei
c1409602da
Merge pull request #2239 from FearlessTobi/port-4684
...
Port citra-emu/citra#4684 : "frontend: qt: fix a freeze where if you click on entry in the game list too fast, citra will hang"
2019-03-20 21:33:05 -04:00
Lioncash
8f454a5c68
kernel/process: Make MapSegment lambda reference parameter const
...
The segment itself isn't actually modified.
2019-03-20 13:07:09 -04:00
Lioncash
1b6bd9d6df
kernel: Move CodeSet structure to its own source files
...
Given this is utilized by the loaders, this allows avoiding inclusion of
the kernel process definitions where avoidable.
This also keeps the loading format for all executable data separate from
the kernel objects.
2019-03-20 13:07:04 -04:00
bunnei
9d11303a36
Merge pull request #2264 from lioncash/linker
...
core/loader: Remove vestigial Linker class
2019-03-20 12:31:00 -04:00
Fernando Sahmkow
8a320a6ee2
Fix crash caused by 2238.
2019-03-19 22:45:34 -04:00
Fernando Sahmkow
9c7319a4d4
Fix small bug that kept a thread as a condvar thread after being signalled.
2019-03-19 22:43:13 -04:00
Lioncash
1342c53e27
loader: Remove Linker class
...
Given the class is now currently unused, it can be removed.
2019-03-19 21:32:02 -04:00
Lioncash
ab00552118
loader: Remove Linker inheritance from NRO and NSO loaders
...
Neither the NRO or NSO loaders actually make use of the functions or
members provided by the Linker interface, so we can just remove the
inheritance altogether.
2019-03-19 21:31:59 -04:00
Fernando Sahmkow
acbdfdae64
Add CondVar Thread State.
2019-03-19 20:32:47 -04:00
Fernando Sahmkow
774f139e65
Small fixes to address_arbiter to better match the IDB.
2019-03-19 20:32:46 -04:00
xperia64
ec74a4fd4a
Fix getopt on systems where char is unsigned by default
2019-03-19 23:53:40 +01:00
Lioncash
b8c7072206
file_sys/content_archive: Amend name of Data_Unknown5 enum entry
...
While we're at it, give each entry some documentation.
2019-03-19 15:58:38 -04:00
bunnei
746167f11a
Merge pull request #2258 from lioncash/am
...
service/am: Supply remaining missing IAudioController functions
2019-03-18 22:20:36 -04:00
Lioncash
eb335f51ca
input_common/sdl: Correct return values within implementations of GetPollers()
...
In both cases, we weren't actually returning anything, which is
undefined behavior.
2019-03-18 11:40:38 -04:00
Lioncash
874826b6dd
input_common/sdl: Use a type alias to shorten declaration of GetPollers
...
Just makes the definitions a little bit more tidy.
2019-03-18 11:40:35 -04:00
bunnei
8dc2f01eae
Merge pull request #2259 from lioncash/fsp
...
fsp_srv: Unstub SetCurrentProcess
2019-03-18 11:13:52 -04:00
bunnei
e05136f70b
Merge pull request #2254 from lioncash/redundant
...
input_common/sdl_impl: Minor cleanup in SDLState constructor
2019-03-18 11:13:20 -04:00
Lioncash
9f092554c2
fsp_srv: Unstub SetCurrentProcess
...
This just acts as a basic setter for a given PID value and performs no
further checking, so we can just store the passed in value.
2019-03-18 10:38:01 -04:00
Lioncash
26b809549b
service/am: Add basic implementation of ChangeMainAppletMasterVolume
...
All this does is supply a new volume level and a fade time in
nanoseconds for the volume transition to occur within.
2019-03-18 09:18:34 -04:00
Lioncash
c07ebeac19
service/am: Unstub SetTransparentVolumeRate()
...
Like the other volume setter, this mainly just sets a data member within
the service, nothing too special.
2019-03-18 09:18:34 -04:00
Lioncash
ecd3afdc8e
service/am: Unstub SetExpectedMasterVolume()
...
This function passes in the desired main applet and library applet
volume levels. We can then just pass those values back within the
relevant volume getter functions, allowing us to unstub those as well.
The initial values for the library and main applet volumes differ. The
main applet volume is 0.25 by default, while the library applet volume
is initialized to 1.0 by default in the services themselves.
2019-03-18 09:18:34 -04:00
bunnei
30f228a8c9
Merge pull request #2238 from lioncash/thread
...
kernel/thread: Amend conditional test and assignment within UpdatePriority()
2019-03-17 22:27:33 -04:00
bunnei
57ca1e3e69
Merge pull request #2252 from bunnei/move-page-table
...
core: Move PageTable struct into Common.
2019-03-17 14:42:57 -04:00
Lioncash
e6612d6d8d
CMakeLists: Move off of modifying CMAKE_*-related flags
...
Modifying CMAKE_* related flags directly applies those changes to every
single CMake target. This includes even the targets we have in the
externals directory.
So, if we ever increased our warning levels, or enabled particular ones,
or enabled any other compilation setting, then this would apply to
externals as well, which is often not desirable.
This makes our compilation flag setup less error prone by only applying
our settings to our targets and leaving the externals alone entirely.
This also means we don't end up clobbering any provided flags on the
command line either, allowing users to specifically use the flags they
want.
2019-03-17 06:55:24 -04:00
Lioncash
114060fd87
input_common/sdl_impl: Make lambda capture more specific in SDLState constructor
...
We don't need to universally capture by reference. We specifically just
need to capture the this pointer.
2019-03-17 04:02:52 -04:00
Lioncash
d74aa13bd3
input_common/sdl_impl: Remove unnecessary std::chrono::duration construction
...
Specifying the time unit itself is sufficient here.
2019-03-17 04:02:52 -04:00
Lioncash
834d3fe336
input_common/sdl_impl: Remove unused variable in SDLState constructor
2019-03-17 04:02:48 -04:00
Lioncash
13bc74e957
CMakeLists: Move compilation flags into the src directory
...
We generally shouldn't be hijacking CMAKE_CXX_FLAGS, etc as a means to
append flags to the targets, since this adds the compilation flags to
everything, including our externals, which can result in weird issues
and makes the build hierarchy fragile.
Instead, we want to just apply these compilation flags to our targets,
and let those managing external libraries to properly specify their
compilation flags.
This also results in us not getting as many warnings, as we don't raise
the warning level on every external target.
2019-03-17 01:49:09 -04:00
bunnei
41566c615b
Merge pull request #2251 from bunnei/skip-zero-flush
...
gl_rasterizer: Skip zero addr/sized regions on flush/invalidate.
2019-03-17 01:40:32 -04:00
bunnei
9ad3b01d30
Merge pull request #2249 from lioncash/ipc
...
ipc_helpers: Allow pushing and popping floating-point values
2019-03-16 22:22:03 -04:00
bunnei
ed7a1e1443
Merge pull request #2245 from lioncash/unused-def
...
kernel/thread: Actually remove the definition of ExitCurrentThread()
2019-03-16 22:12:40 -04:00
bunnei
93da8e0abf
core: Move PageTable struct into Common.
2019-03-16 22:05:40 -04:00
bunnei
032e4c4ca3
gl_rasterizer: Skip zero addr/sized regions on flush/invalidate.
2019-03-16 22:03:19 -04:00
bunnei
2392e146b0
Merge pull request #2244 from bunnei/gpu-mem-refactor
...
video_core: Refactor to use MemoryManager interface for all memory access.
2019-03-16 21:59:45 -04:00
bunnei
bf41132aa9
Merge pull request #2243 from bunnei/mem-simplify-cache
...
memory: Simplify rasterizer cache operations.
2019-03-16 21:59:30 -04:00
bunnei
059465d496
Merge pull request #2129 from FernandoS27/cntpct
...
Correct CNTPCT from using CPU Cycles to using Clock Cycles
2019-03-16 21:58:59 -04:00
Lioncash
64444ff481
ipc_helpers: Allow pushing and popping floating-point values
...
Certain values that are passed through the IPC buffer are actually
floating point values, not solely integral values.
2019-03-16 14:05:03 -04:00
Lioncash
f71c598907
common/thread_queue_list: Remove unnecessary dependency on boost
...
We really don't need to pull in several headers of boost related
machinery just to perform the erase-remove idiom (particularly with
C++20 around the corner, which adds universal container std::erase and
std::erase_if, which we can just use instead).
With this, we don't need to link in anything boost-related into common.
2019-03-16 05:01:39 -04:00
Lioncash
99f982dce2
kernel/thread: Actually remove the definition of ExitCurrentThread()
...
This was intended to be removed in
51d7f6bffc
, but I guess I forgot to
actually save the file like a dingus.
2019-03-16 00:51:44 -04:00
bunnei
bdf2da4ee8
Merge pull request #2242 from lioncash/thread-fn
...
kernel/thread: Remove WaitCurrentThread_Sleep() and ExitCurrentThread()
2019-03-16 00:43:09 -04:00
bunnei
10118c71e0
memory: Simplify rasterizer cache operations.
2019-03-16 00:41:08 -04:00
bunnei
574e89d924
video_core: Refactor to use MemoryManager interface for all memory access.
...
# 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-16 00:38:48 -04:00
bunnei
47b622825c
Merge pull request #2237 from bunnei/cache-host-addr
...
gpu: Use host address for caching instead of guest address.
2019-03-16 00:05:24 -04:00
Lioncash
51d7f6bffc
kernel/thread: Move thread exiting logic from ExitCurrentThread to svcExitThread
...
Puts the operation on global state in the same places as the rest of the
svc calls.
2019-03-15 23:58:37 -04:00
Lioncash
c892cf01fa
kernel/thread: Migrate WaitCurrentThread_Sleep into the Thread interface
...
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-15 23:58:31 -04:00
Lioncash
db47d7e471
kernel/thread: Expand documentation of nominal_priority and current_priority
...
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-15 23:02:14 -04:00
Lioncash
e0d1f11968
kernel/thread: Make bracing consistent within UpdatePriority()
2019-03-15 23:02:10 -04:00
Lioncash
39483b92b7
kernel/thread: Amend condition within UpdatePriority()
...
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-15 23:01:43 -04:00
Lioncash
0b78cfcc53
kernel/thread: Maintain priority ordering of added mutex waiting threads
...
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-15 23:01:39 -04:00
bunnei
06ac6460d3
Merge pull request #2048 from FearlessTobi/port-3924
...
Port citra-emu/citra#3924 : "citra_qt: Settings (configuration) rework"
2019-03-15 22:23:38 -04:00
liushuyu
59f16f2e02
frontend: qt: fix a freeze where if you click on entry in the game list too fast, citra will hang
2019-03-15 16:10:21 +01:00
bunnei
2eaf6c41a4
gpu: Use host address for caching instead of guest address.
2019-03-14 22:34:42 -04:00
bunnei
84d3cdf7d7
Merge pull request #2233 from ReinUsesLisp/morton-cleanup
...
video_core/morton: Miscellaneous changes
2019-03-14 21:23:12 -04:00
bunnei
6788ebffc8
Merge pull request #2229 from ReinUsesLisp/vk-sampler-cache
...
vk_sampler_cache: Implement a sampler cache
2019-03-14 21:22:34 -04:00
Lioncash
d71cad6ed0
core/hle/kernel/mutex: Remove usages of global system accessors
...
Removes the use of global system accessors, and instead uses the
explicit interface provided.
2019-03-14 20:55:52 -04:00
Lioncash
555cd26ec2
core/hle/kernel: Make Mutex a per-process class.
...
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-14 20:55:52 -04:00
bunnei
2d9546848e
Merge pull request #2230 from lioncash/global
...
kernel/process: Remove use of global system accessors
2019-03-14 20:42:46 -04:00
bunnei
8bd17aa044
Merge pull request #2216 from ReinUsesLisp/rasterizer-system
...
gl_rasterizer: Use system instance passed from argument
2019-03-14 16:37:05 -04:00
bunnei
4e6c667586
Merge pull request #2227 from lioncash/override
...
renderer_opengl/gl_global_cache: Add missing override specifiers
2019-03-13 17:05:49 -04:00
ReinUsesLisp
ffe2e50458
video_core/morton: Use enum to describe MortonCopyPixels128 mode
2019-03-13 16:35:21 -03:00
ReinUsesLisp
6ed6129b4f
video_core/morton: Remove unused parameter in MortonSwizzle
2019-03-13 16:35:10 -03:00
ReinUsesLisp
9030a8259f
video_core/morton: Remove clang-format off when it's not needed
2019-03-13 16:16:45 -03:00
ReinUsesLisp
fdf76a25ab
video_core/morton: Remove unused functions
2019-03-13 16:15:54 -03:00
bunnei
e7850a7f11
Merge pull request #2226 from lioncash/private
...
kernel/server_port: Make data members private
2019-03-13 14:44:21 -04:00
bunnei
c1ea6a39a0
Merge pull request #2223 from lioncash/error
...
core/hle/result: Tidy up the base error code result header.
2019-03-13 14:43:14 -04:00
bunnei
0a923b4ab3
Merge pull request #2187 from FearlessTobi/port-sdl-things
...
Port various Citra changes to input_common, including deadzone support
2019-03-13 11:46:57 -04:00
bunnei
e8a21f5276
Merge pull request #2166 from lioncash/vi-init-service
...
service/vi: Unstub GetDisplayService
2019-03-13 10:01:54 -04:00
Lioncash
5379063108
core/hle/kernel/svc: Implement svcUnmapTransferMemory
...
Similarly, like svcMapTransferMemory, we can also implement
svcUnmapTransferMemory fairly trivially as well.
2019-03-13 06:04:49 -04:00
Lioncash
567134f874
core/hle/kernel/svc: Implement svcMapTransferMemory
...
Now that transfer memory handling is separated from shared memory, we
can implement svcMapTransferMemory pretty trivially.
2019-03-13 06:04:49 -04:00
Lioncash
cb198d7985
core/hle/kernel: Split transfer memory handling out into its own class
...
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-13 06:04:44 -04:00
ReinUsesLisp
a63295a872
video_core/texture: Fix up sampler lod bias
2019-03-13 00:45:54 -03:00
Mat M
a3734d7e31
vk_sampler_cache: Use operator== instead of memcmp
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-03-12 21:05:36 -03:00
ReinUsesLisp
aa59d77c3b
vk_sampler_cache: Implement a sampler cache
2019-03-12 20:20:57 -03:00
Lioncash
6eddb60db0
kernel/process: Remove use of global system accessors
...
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-12 19:03:28 -04:00
bunnei
3bfd199497
Merge pull request #2211 from lioncash/arbiter
...
kernel: Make the address arbiter instance per-process
2019-03-12 17:54:48 -04:00
bunnei
0f6dd7b64e
Merge pull request #2222 from lioncash/cstr
...
service/service: Remove unncessary calls to c_str()
2019-03-12 17:54:20 -04:00