Weiyi Wang
e9ddcdbd0d
Merge pull request #2799 from yuriks/virtual-cached-range-flush
...
Add address conversion functions returning optional, Add function to flush virtual region from rasterizer cache
2017-07-22 10:15:52 +03:00
Yuri Kunde Schlesner
d35e599e3c
Memory: Add function to flush a virtual range from the rasterizer cache
...
This is slightly more ergonomic to use, correctly handles virtual
regions which are disjoint in physical addressing space, and checks only
regions which can be cached by the rasterizer.
2017-06-21 22:57:12 -07:00
Yuri Kunde Schlesner
3d58489b0f
Memory: Fix crash when unmapping a VMA covering cached surfaces
...
Unmapping pages tries to flush any cached GPU surfaces touching that
region. When a cached page is invalidated, GetPointerFromVMA() is used
to restore the original pagetable pointer. However, since that VMA has
already been deleted, this hits an UNREACHABLE case in that function.
Now when this happens, just set the page type to Unmapped and continue,
which arrives at the correct end result.
2017-06-21 22:56:31 -07:00
Yuri Kunde Schlesner
4763b471d6
Memory: Add TryVirtualToPhysicalAddress, returning a boost::optional
2017-06-21 22:55:18 -07:00
Yuri Kunde Schlesner
ba3324f658
Memory: Make PhysicalToVirtualAddress return a boost::optional
...
And fix a few places in the code to take advantage of that.
2017-06-21 22:55:17 -07:00
Yuri Kunde Schlesner
0b7d4b5e1d
Memory: Add constants for the n3DS additional RAM
...
This is 4MB of extra, separate memory that was added on the New 3DS.
2017-05-09 21:43:59 -07:00
bunnei
82da9a8308
Revert "Memory: Always flush whole pages from surface cache"
2016-12-17 19:13:33 -05:00
Yuri Kunde Schlesner
728317a48a
Memory: Always flush whole pages from surface cache
...
This prevents individual writes touching a cached page, but which don't
overlap the surface, from constantly hitting the surface cache lookup.
2016-12-14 23:46:59 -08:00
James Rowe
0028ab79e2
Expose page table to dynarmic for optimized reads and writes to the JIT
2016-11-24 20:41:18 -07:00
wwylele
5c43a5652b
memory: fix IsValidVirtualAddress for RasterizerCachedMemory
...
RasterizerCachedMemory doesn't has pointer but should be considered as valid
2016-09-29 10:01:34 +08:00
Yuri Kunde Schlesner
45751915a0
Use negative priorities to avoid special-casing the self-include
2016-09-21 00:15:56 -07:00
Emmanuel Gil Peyrot
e4393f7ff2
Remove empty newlines in #include blocks.
...
This makes clang-format useful on those.
Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
2016-09-21 11:15:47 +09:00
Emmanuel Gil Peyrot
7e8d205414
Sources: Run clang-format on everything.
2016-09-18 09:38:01 +09:00
wwylele
421aed0e92
Memory: add ReadCString function
2016-08-27 21:38:06 +08:00
Subv
b1b3b24c3c
Memory: Handle RasterizerCachedMemory and RasterizerCachedSpecial page types in the memory block manipulation functions.
2016-05-28 13:52:50 -05:00
Subv
03c9f30ba0
Memory: Make ReadBlock and WriteBlock accept void pointers.
2016-05-28 13:52:49 -05:00
MerryMage
339fa47285
Memory: CopyBlock
2016-05-28 13:44:49 -05:00
MerryMage
bdc5d70e85
Memory: ZeroBlock
2016-05-21 11:14:09 -05:00
MerryMage
d8a8f2d924
Memory: ReadBlock/WriteBlock
2016-05-21 11:12:36 -05:00
MerryMage
32f974e54a
Memory: IsValidVirtualAddress/IsValidPhysicalAddress
2016-05-21 11:12:35 -05:00
tfarley
459035a108
HWRasterizer: Texture forwarding
2016-04-21 17:27:56 -04:00
Yuri Kunde Schlesner
46dc35ae20
Memory: Do correct Phys->Virt address translation for non-APP linheap
2016-03-05 22:09:59 -08:00
MerryMage
e614492dca
Memory: Implement MMIO
2016-01-30 18:41:04 +00:00
Gareth Poole
cfeae1a4f5
Fixed spelling errors
2015-10-09 17:09:52 -04:00
Lioncash
9f37facda2
memory: Get rid of pointer casts
2015-09-10 00:09:55 -04:00
Yuri Kunde Schlesner
e34643a3e4
Kernel: Add more infrastructure to support different memory layouts
...
This adds some structures necessary to support multiple memory regions
in the future. It also adds support for different system memory types
and the new linear heap mapping at 0x30000000.
2015-08-16 01:03:47 -03:00
Yuri Kunde Schlesner
168d376c67
Memory: Move address type conversion routines to memory.cpp/h
...
These helpers aren't really part of the kernel, and mem_map.cpp/h is
going to be moved there next.
2015-08-16 01:03:46 -03:00
Yuri Kunde Schlesner
51820691e7
Memory: Fix unmapping of pages
2015-07-11 23:49:53 -03:00
Emmanuel Gil Peyrot
2d044a67c9
Common: Cleanup memory and misc includes.
2015-06-28 00:36:54 +01:00
Yuri Kunde Schlesner
0a60aa75c2
Kernel: Add VMManager to manage process address spaces
...
This enables more dynamic management of the process address space,
compared to just directly configuring the page table for major areas.
This will serve as the foundation upon which the rest of the Kernel
memory management functions will be built.
2015-05-27 03:24:12 -03:00
Yuri Kunde Schlesner
dd4430609a
Memory: Use a table based lookup scheme to read from memory regions
2015-05-15 00:04:43 -03:00
Yuri Kunde Schlesner
52158c1b8d
Memory: Read SharedPage directly from Memory::Read
2015-05-15 00:04:41 -03:00
Yuri Kunde Schlesner
ec514b16a6
Memory: Read ConfigMem directly from Memory::Read
2015-05-15 00:04:39 -03:00
Yuri Kunde Schlesner
7ada357b2d
Memmap: Re-organize memory function in two files
...
memory.cpp/h contains definitions related to acessing memory and
configuring the address space
mem_map.cpp/h contains higher-level definitions related to configuring
the address space accoording to the kernel and allocating memory.
2015-05-15 00:04:38 -03:00