Lioncash
313cc36fec
kernel/vm_manager: Handle stack/TLS IO region placement better
...
Handles the placement of the stack a little nicer compared to the
previous code, which was off in a few ways. e.g.
The stack (new map) region, shouldn't be the width of the entire address
space if the size of the region calculation ends up being zero. It
should be placed at the same location as the TLS IO region and also have
the same size.
In the event the TLS IO region contains a size of zero, we should also
be doing the same thing. This fixes our memory layout a little bit and
also resolves some cases where assertions can trigger due to the memory
layout being incorrect.
2019-07-05 21:57:31 -04:00
Lioncash
48807e9a24
core/reporter: Allow moves into SaveToFile()
...
Taking the json instance as a constant reference, makes all moves into
the parameter non-functional, resulting in copies. Taking it by value
allows moves to function.
2019-07-05 17:45:34 -04:00
Lioncash
2321656dbe
core/reporter: Add missing includes and forward declarations
...
Adds missing inclusions to prevent potential compilation issues.
2019-07-05 17:45:24 -04:00
Lioncash
e721c344ae
core/reporter: Remove unnecessary namespace qualifiers
...
The Reporter class is part of the Core namespace, so the System class
doesn't need to be qualified.
2019-07-05 17:09:26 -04:00
Lioncash
6ec48af222
core/reporter: Remove pessimizing move in GetHLERequestContextData()
...
This can inhibit copy-elision, so we can remove this redundant move.
2019-07-05 17:08:13 -04:00
Lioncash
f12eb40834
core/reporter: Make bracing consistent
...
Makes all control statements braced, regardless of their size, making
code more uniform.
2019-07-05 17:05:27 -04:00
Lioncash
7ad11e3867
core/reporter: Return in error case in SaveToFile()
...
If the path couldn't be created, then we shouldn't be attempting to save
the file.
2019-07-05 17:02:32 -04:00
Zach Hilman
772c86a260
Merge pull request #2601 from FernandoS27/texture_cache
...
Implement a new Texture Cache
2019-07-05 13:39:13 -04:00
Fernando Sahmkow
3b9d89839d
texture_cache: Address Feedback
2019-07-05 09:46:53 -04:00
Fernando Sahmkow
30b176f92b
texture_cache: Correct Texture Buffer Uploading
2019-07-04 19:38:19 -04:00
Zach Hilman
3f3a93f13b
Merge pull request #2669 from FearlessTobi/move-cpujit-setting
...
yuzu: Move CPU Jit setting to Debug tab
2019-07-04 15:33:59 -04:00
Zach Hilman
54a02d14fd
Merge pull request #2555 from lioncash/tls
...
kernel/process: Decouple TLS handling from threads
2019-07-04 15:32:32 -04:00
fearlessTobi
447bdac298
yuzu: Remove CPU Jit setting from the UI
...
A normal user shouldn't change this, as it will slow down the emulation and can lead to bugs or crashes. The renaming is done in order to prevent users from leaving this on without a way to turn it off from the UI.
2019-07-04 14:48:08 +02:00
bunnei
cca663792f
Merge pull request #2670 from DarkLordZach/fix-merge-discrep-1
...
gl_shader_cache: Make CachedShader constructor private
2019-07-04 03:03:44 -04:00
bunnei
3c7eed16dc
Merge pull request #2658 from ogniK5377/QueryAudioDeviceOutputEvent
...
IAudioDevice::QueryAudioDeviceOutputEvent
2019-07-04 01:42:22 -04:00
bunnei
70b595a63b
Merge pull request #2638 from DarkLordZach/quest-flag
...
set: Implement GetQuestFlag with config option
2019-07-04 01:40:41 -04:00
Zach Hilman
ad50cd7df9
gl_shader_cache: Make CachedShader constructor private
...
Fixes missing review comments introduced.
2019-07-03 20:39:46 -04:00
Lioncash
e23110bd9f
kernel/process: Default initialize all member variables
...
Ensures a Process instance is always created with a deterministic
initial state.
2019-07-03 20:31:40 -04:00
Lioncash
abdce723eb
kernel/process: Decouple TLS handling from threads
...
Extracts out all of the thread local storage management from thread
instances themselves and makes the owning process handle the management
of the memory. This brings the memory management slightly more in line
with how the kernel handles these allocations.
Furthermore, this also makes the TLS page management a little more
readable compared to the lingering implementation that was carried over
from Citra.
2019-07-03 20:31:40 -04:00
Lioncash
55481df50f
kernel/vm_manager: Add overload of FindFreeRegion() that operates on a boundary
...
This will be necessary for making our TLS slot management slightly more
straightforward. This can also be utilized for other purposes in the
future.
We can implement the existing simpler overload in terms of this one
anyways, we just pass the beginning and end of the ASLR region as the
boundaries.
2019-07-03 20:29:49 -04:00
Zach Hilman
beb3d77a79
Merge pull request #2613 from ogniK5377/InitalizeApplicationInfo
...
Implemented InitializeApplicationInfo & InitializeApplicationInfoRestricted
2019-07-03 20:23:56 -04:00
Zach Hilman
e86af37ecb
Merge pull request #2608 from ogniK5377/Time_GetSharedMemoryNativeHandle
...
Implement Time::GetSharedMemoryNativeHandle
2019-07-03 20:22:23 -04:00
Zach Hilman
da5a537029
Merge pull request #2563 from ReinUsesLisp/shader-initializers
...
gl_shader_cache: Use static constructors for CachedShader initialization
2019-07-03 20:20:05 -04:00
bunnei
58032e0085
Merge pull request #2604 from ogniK5377/INotificationService
...
Implemented INotificationService
2019-07-02 23:32:57 -04:00
bunnei
2521007c09
Merge pull request #2659 from FernandoS27/safe-caches
...
rasterizer_cache: Protect inherited caches from submission level
2019-07-02 22:27:04 -04:00
Bakugo
b50557d1f0
file_sys: Rename other ContentRecordType members
2019-07-02 00:57:23 +01:00
David Marcec
b82b5e46e7
audren: Only manage wave buffers with a size
...
We shouldn't be incrementing if wave buffers are empty. They are considered invalid/unused wave buffers.
This fixes the issue of certain sounds looping when they shouldn't
2019-07-01 21:20:23 +10:00
Fernando Sahmkow
4705d1b523
rasterizer_cache: Protect inherited caches from submission level
2019-07-01 04:32:01 -04:00
David Marcec
965608e6d1
IAudioDevice::QueryAudioDeviceOutputEvent
...
The event should only be signaled when an output audio device gets changed. Example, Speaker to USB headset. We don't identify different devices internally yet so there's no need to signal the event yet.
2019-07-01 18:05:44 +10:00
Bakugo
c72ef5f405
file_sys/registered_cache: Improve missing metadata error
...
This can happen when installing NSPs too, not just XCIs.
2019-07-01 07:31:32 +01:00
Bakugo
9968c0883a
file_sys/submission_package: Don't warn about missing DeltaFragment NCAs
...
DeltaFragments are not useful to us and are often not included in patch NSPs.
2019-07-01 06:46:05 +01:00
Bakugo
79163fca80
file_sys/registered_cache: Ignore DeltaFragment NCAs during installation
...
DeltaFragments are only used to download and apply partial patches on a real console, and are not useful to us at all. Most patch NSPs do not include them, and when they do, it's a waste of space to install them.
2019-07-01 06:37:22 +01:00
Bakugo
306a24aad7
file_sys: Rename ContentRecordType::Patch to DeltaFragment
...
Avoids potential confusion, since patches and DeltaFragments are not the same thing. Actual full patches are listed under the Program type.
2019-07-01 06:32:13 +01:00
David Marcec
472210bf72
hid:StartLrAssignmentMode, hid:StopLrAssignmentMode, hid:SwapNpadAssignment
...
StartLrAssignmentMode and StopLrAssignmentMode don't require any implementation as it's just used for showing the screen of changing the controller orientation if the user wishes to do so. Ever since #1634 this has not been needed as users can specify the controller orientation from the config and swap at any time. We store a private member just in case this gets used for anything extra in the future
2019-07-01 15:12:57 +10:00
bunnei
d992909636
Merge pull request #2583 from FernandoS27/core-timing-safe
...
Core_Timing: Make core_timing threadsafe by default.
2019-06-30 12:54:00 -04:00
ReinUsesLisp
6e1db6b703
texture_cache: Pack sibling queries inside a method
2019-06-29 20:47:46 -03:00
ReinUsesLisp
8eae66907e
texture_cache: Use std::vector reservation for sampled_textures
2019-06-29 20:10:31 -03:00
ReinUsesLisp
f6f1a8f26a
texture_cache: Style changes
2019-06-29 19:52:37 -03:00
ReinUsesLisp
dd9ace502b
texture_cache: Use std::array for siblings_table
2019-06-29 18:54:13 -03:00
ReinUsesLisp
3f3c3ca5f9
texture_cache: Address feedback
2019-06-29 17:29:39 -03:00
Zach Hilman
7e5d7773cc
am: Implement SetCpuBoostMode in terms of APM
2019-06-28 22:46:51 -04:00
Zach Hilman
e2ad3e1fb0
core: Keep instance of APM Controller
2019-06-28 22:46:31 -04:00
Zach Hilman
e52306ca60
apm: Implement SetCpuBoostMode
2019-06-28 22:46:00 -04:00
Zach Hilman
1c6e6305ea
apm: Add getters for performance config and mode
2019-06-28 22:45:31 -04:00
Zach Hilman
9175b00e7d
apm: Add apm:am service
...
8.0.0+ identical version of apm
2019-06-28 22:44:30 -04:00
Zach Hilman
65eb9cbb28
apm: Add Controller class to manage speed data and application
2019-06-28 22:43:51 -04:00
Zach Hilman
d40f38967e
fsp-srv: Implement GetAccessLogVersionInfo
...
Returns some misc. data about logging to help the game determine if it should log.
2019-06-28 21:05:42 -04:00
Zach Hilman
554e2f2f98
reporter: Add report class for filesystem access logs
2019-06-28 21:02:50 -04:00
Zach Hilman
db2fdd0352
fsp-srv: Implement OutputAccessLogToSdCard
...
Allows games to log data to the SD.
2019-06-28 21:02:34 -04:00
Zach Hilman
f477c5dfdd
set: Implement GetQuestFlag
...
Simply returns a true/false value indicating if the system is a kiosk system. This has been mapped to a config option for the purposes of yuzu.
2019-06-28 18:38:47 -04:00
Zach Hilman
efa7d8d04b
settings: Add config option for kiosk (quest) mode
2019-06-28 18:37:33 -04:00
bunnei
bb4a1e059c
Merge pull request #2533 from DarkLordZach/memory-frozen
...
memory: Add class to manage and enforce memory freezing
2019-06-28 14:03:38 -04:00
David Marcec
dfe4b3f723
Attemp clang format fix?
...
Seems to be an issue with clang format
2019-06-28 22:08:50 +10:00
David Marcec
7d417d501d
Added errors.h to cmakelist
2019-06-28 15:31:29 +10:00
David Marcec
c2146c4eef
Addressed issues
2019-06-28 15:29:38 +10:00
David Marcec
fd6549be73
Addressed issues
2019-06-28 15:19:51 +10:00
David Marcec
0b03e8a98f
Implemented InitializeApplicationInfo & InitializeApplicationInfoRestricted
...
InitializeApplicationInfoRestricted will need further implementation as it's checking for other user requirements about the game. As we're emulating, we're assuming the user owns the game so we skip these checks currently, implementation will need to be added further on
2019-06-27 16:44:42 +10:00
Zach Hilman
bce4bfffb6
pm: Implement pm:shell and pm:dmnt GetApplicationPid
...
Returns the process ID of the current application or 0 if no app is running.
2019-06-26 19:07:34 -04:00
Zach Hilman
354c254cde
pm: Implement pm:dmnt GetTitlePid
...
Takes a title ID and searches for a matching process, returning error if it doesn't exist, otherwise the process ID.
2019-06-26 19:06:51 -04:00
Zach Hilman
49af3bcdcb
pm: Implement pm:info GetTitleId
...
Searches the process list for a process with the specified ID, returning the title ID if it exists.
2019-06-26 19:05:04 -04:00
bunnei
5829ba1ccc
Merge pull request #2548 from DarkLordZach/applet-shopn
...
applets: Implement backend and default frontend for Parental Controls and EShop (ShopN) applets
2019-06-26 15:55:24 -04:00
David Marcec
f67039c067
Addressed issues
2019-06-26 16:52:34 +10:00
Zach Hilman
d10fc2d727
glue: Correct missing bytes in ApplicationLaunchParameter
2019-06-25 22:25:10 -04:00
Fernando Sahmkow
223ca80753
texture_cache: Correct variable naming.
2019-06-25 19:35:08 -04:00
Fernando Sahmkow
5aeabd9a17
gl_texture_cache: Correct asserts
2019-06-25 19:26:59 -04:00
Fernando Sahmkow
88bc39374f
texture_cache: Corrections, documentation and asserts
2019-06-25 18:36:19 -04:00
Fernando Sahmkow
c0abc7124d
surface_params: Corrections, asserts and documentation.
2019-06-25 18:03:25 -04:00
Fernando Sahmkow
fb234560b0
copy_params: use constexpr for constructor
2019-06-25 17:42:50 -04:00
Fernando Sahmkow
18d24fbdd0
gl_texture_cache: Corrections and fixes
2019-06-25 17:40:08 -04:00
Fernando Sahmkow
36665ce0b2
gl_resource_manager: Correct MakeStreamCopy
2019-06-25 17:32:04 -04:00
Fernando Sahmkow
58c8a44e7a
texture_cache: Query MemoryManager from the system
2019-06-25 17:26:00 -04:00
David Marcec
19dc36ce06
Implement Time::GetSharedMemoryNativeHandle
...
This PR attempts to implement the shared memory provided by GetSharedMemoryNativeHandle. There is still more work to be done however that requires a rehaul of the current time module to handle clock contexts. This PR is mainly to get the basic functionality of the SharedMemory working and allow the use of addition to it whilst things get improved on.
Things to note:
Memory Barriers are used in the SharedMemory and a better solution would need to be done to implement this. Currently in this PR I’m faking the memory barriers as everything is sync and single threaded. They work by incrementing the counter and just populate the two data slots. On data reading, it will read the last added data.
Specific values in the shared memory would need to be updated periodically. This isn't included in this PR since we don't actively do this yet. In a later PR when time is refactored this should be done.
Finally, as we don't handle clock contexts. When time is refactored, we will need to update the shared memory for specific contexts. This PR does this already however since the contexts are all identical and not separated. We're just updating the same values for each context which in this case is empty.
Tiime:SetStandardUserSystemClockAutomaticCorrectionEnabled, Time:IsStandardUserSystemClockAutomaticCorrectionEnabled are also partially implemented in this PR. The reason the implementation is partial is because once again, a lack of clock contexts. This will be improved on in a future PR.
This PR closes issue #2556
2019-06-26 00:45:53 +10:00
David Marcec
192f1f7ebe
SizedNotificationInfo should be 0x10 bytes, user_uuid is incorrect, this should be the users account id
2019-06-25 15:19:37 +10:00
David Marcec
5d005b87a3
fixed spelling errors and fixed issue with Pop not returning the SizedNotificationInfo
2019-06-25 11:23:23 +10:00
Zach Hilman
3c4238657d
applets: Pass current process title ID to applets
...
Avoids using system accessor to get current process in applet code.
2019-06-24 20:07:10 -04:00
Zach Hilman
01ff38cca8
general_frontend: Add documentation for parental controls and ecommerce applets
2019-06-24 20:05:11 -04:00
Zach Hilman
73dcb13619
web_browser: Only delete temporary directory if it was created
...
Prevents crashes with ShopN applet occasionally.
2019-06-24 20:05:11 -04:00
Zach Hilman
d018ac2c60
web_browser: Take ECommerce applet frontend optionally in constructor
...
If it is needed but wasn't passed (or passed nullptr), the Shop handling code will alert and throw an error.
2019-06-24 20:05:11 -04:00
Zach Hilman
54684feffa
frontend: Add base class and default impl for ECommerce applet frontend
2019-06-24 20:05:11 -04:00
Zach Hilman
3898c3903e
web_browser: Use function tables for execute and initialize
...
Allows easy handling of multiple shim types, as they have enough in common to be the same backend but not enough to share init/exec.
2019-06-24 20:05:11 -04:00
Zach Hilman
675aa5f719
web_browser: Correct structures and properly parse TLVs/ShimKind
...
Much, much more HW-accurate and allows us to easily support all of the different web 'shim' types.
2019-06-24 20:05:11 -04:00
Zach Hilman
b889167b2c
yuzu: Accept default applets for Parental Controls and ECommerce
2019-06-24 20:05:11 -04:00
Zach Hilman
e447d8aafa
applets: Track ECommerce and Parental Control applet frontends
2019-06-24 20:05:11 -04:00
Zach Hilman
6ff9008230
web_browser: Rename OpenPage to OpenPageLocal
...
This is more representative of what actually occurs, as web does support remote URLs which wouldn't need a romfs callback. This paves for easy future support of this with a call like 'OpenPageRemote' or similar.
2019-06-24 20:05:11 -04:00
Zach Hilman
c96450f6e2
frontend: Add base class and default impl of parent controls applet frontend
2019-06-24 20:05:11 -04:00
Zach Hilman
9d2d349d7b
applets: Implement Auth applet backend
...
This is responsible for parental controls and supports verifying, changing, and registering PIN codes.
2019-06-24 20:05:11 -04:00
Zach Hilman
d40a38df8d
core: Keep track of ARPManager and register current application on boot
2019-06-24 19:27:35 -04:00
Zach Hilman
ce21973022
glue: Implement arp:w and arp:r services
...
These keep track of running process' launch properties and control properties and allows for issuing and reading them by process and title ID.
2019-06-24 19:26:16 -04:00
Zach Hilman
df3ee4f444
glue: Add errors for glue/arp services
2019-06-24 19:20:28 -04:00
Zach Hilman
4fab0d392b
glue: Add scaffolding for bgtc:t and bgtc:sc services
2019-06-24 19:20:06 -04:00
Zach Hilman
9003e19797
arp: Move to glue services
...
Glue is the name of the sysmodule that contains both arp and bgtc.
2019-06-24 19:17:48 -04:00
Zach Hilman
5f8d2a2044
glue: Add manager to keep track of application registry
...
Manages mapping between title IDs and application launch and control properties.
2019-06-24 19:17:13 -04:00
Zach Hilman
db2e5e5fa6
registered_cache: Add getter to determine source slot in content provider union
...
Used to determine StorageId source for application data.
2019-06-24 19:10:17 -04:00
Zach Hilman
a468273221
patch_manager: Add getter for title version
2019-06-24 19:05:50 -04:00
ReinUsesLisp
7565389700
texture_cache: Include "core/core.h"
2019-06-24 02:15:57 -03:00
ReinUsesLisp
e723441e37
gl_texture_cache: Explicitly add indirect include
2019-06-24 02:13:55 -03:00
ReinUsesLisp
34841a41c3
texture_cache/surface_view: Address feedback
2019-06-24 02:09:56 -03:00
ReinUsesLisp
0837290992
texture_cache/surface_base: Address feedback
2019-06-24 02:08:52 -03:00
ReinUsesLisp
75de730e28
video_core/surface: Address feedback
2019-06-24 02:07:11 -03:00
ReinUsesLisp
10a83653ee
decode/texture: Address feedback
2019-06-24 02:05:05 -03:00
ReinUsesLisp
4504302abc
renderer_opengl/utils: Remove unused includes and unused forward declaration
2019-06-24 02:03:37 -03:00
ReinUsesLisp
4b2ff1e00e
gl_texture_cache: Address some feedback
2019-06-24 02:01:44 -03:00
ReinUsesLisp
0b6df52109
gl_shader_disk_cache: Address feedback
2019-06-24 01:59:32 -03:00
ReinUsesLisp
b8b05a484a
gl_shader_decompiler: Address feedback
2019-06-24 01:56:38 -03:00
ReinUsesLisp
4d63f97945
shader_bytecode: Include missing <array>
2019-06-24 01:51:02 -03:00
ReinUsesLisp
de982deb25
common/alignment: Address feedback
2019-06-24 01:47:09 -03:00
David Marcec
e49ae3bf92
Implemented INotificationService
2019-06-24 12:26:45 +10:00
Thomas May
334e6370f9
Update reporter.cpp
2019-06-22 14:39:52 +01:00
bunnei
a9f3c54871
Merge pull request #2579 from ReinUsesLisp/fix-aoffi-test
...
gl_device: Fix TestVariableAoffi test
2019-06-21 15:28:55 -04:00
bunnei
69e490b303
Merge pull request #2602 from lioncash/cast
...
service/acc: Silence truncation warnings
2019-06-21 15:27:25 -04:00
bunnei
8f8fa82c83
Merge pull request #2575 from DarkLordZach/process-id-types
...
kernel: Differentiate kernel and user processes when picking ID
2019-06-21 15:25:50 -04:00
bunnei
e2f7933b3f
Merge pull request #2546 from DarkLordZach/kips
...
loader, file_sys: Add support for parsing and loading KIP (Kernel Internal Process) files
2019-06-21 14:28:18 -04:00
bunnei
96412848a9
Merge pull request #2482 from DarkLordZach/prepo
...
core: Add detailed local reporting feature for development
2019-06-21 14:05:18 -04:00
bunnei
100ed88e15
Merge pull request #2291 from DarkLordZach/homebrew-testing
...
yuzu_tester: Add and implement testing utility for homebrew
2019-06-21 11:42:38 -04:00
Lioncash
82cd87f6c2
service/acc: Silence truncation warnings
...
The sanitizing function ensures that the returned type is always the
correct type. This eliminates warnings without extra casts.
2019-06-21 10:04:31 -04:00
Fernando Sahmkow
d1812316e1
texture_cache: Style and Corrections
2019-06-20 21:24:47 -04:00
Fernando Sahmkow
51ba60b27e
shader_cache: Correct versioning and size calculation.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
97c8c9f49a
texture_cache: Eliminate linear textures fallthrough
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
6acdae0e4c
texture_cache: Correct format R16U as sibling
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
d7587842eb
texture_cache: Implement texception detection and texture barriers.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
198a0395bb
texture_cache: Corrections to buffers and shadow formats use.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
fed773a86c
texture_cache: Implement Irregular Views in surfaces
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
082740d34d
surface: Correct format S8Z24
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
03d489dcf5
texture_cache: Initialize all siblings to invalid pixel format.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
9422cf7c10
gl_texture_cache: Use Stream Buffers instead of Persistant for Buffer Copies.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
fac3706253
gl_texture_cache: Correct Image Blit
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
7232a1ed16
decoders: correct block calculation
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
3dd7643214
texture_cache: Use siblings textures on Rebuild and fix possible error on blitting
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
4db28f72f6
texture_cache: Remove old rasterizer cache
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
2d83553ea7
texture_cache: Implement siblings texture formats.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
cb728797b0
fermi2d: Correct Origin Mode
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
a56f687793
texture_cache: correct texture buffer on surface params
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
b01f9c8a70
texture_cache: eliminate accelerated depth->color/color->depth copies due to driver instability.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
561ce29c98
texture_cache: correct mutex locks
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
b7de31ac97
shader_ir: Fix image copy rebase issues
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
6f69f06873
texture_cache: Don't Image Copy if component types differ
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
9f755218a1
texture_cache: move some large methods to cpp files
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
3809041c24
texture_cache: Optimize GetSurface and use references on functions that don't change a surface.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
60bf761afb
texture_cache: Implement Buffer Copy and detect Turing GPUs Image Copies
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
228f516bb4
texture_cache uncompress-compress is untopological.
...
This makes conflicts between non compress and compress textures to be
auto recycled. It also limits the amount of mipmaps a texture can have
if it goes above it's limit.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
9251354152
texture_cache: Correct copying between compressed and uncompressed formats
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
0966665fc2
texture_cache: Only load on recycle with accurate GPU.
...
Testing so far has proven this to be quite safe as texture memory read
added a 2-5ms load to the current cache.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
ea1525dab1
Fix rebase errors
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
bdf9faab33
texture_cache: Handle uncontinuous surfaces.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
e60ed2bb3e
texture_cache: return null surface on invalid address
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
fcac55d5bf
texture_cache: Add checks for texture buffers.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
175aa343ff
texture_cache: Fermi2D reform and implement View Mirage
...
This also does some fixes on compressed textures reinterpret and on the
Fermi2D engine in general.
2019-06-20 21:38:33 -03:00
ReinUsesLisp
1bf4154e7d
gl_shader_decompiler: Implement image binding settings
2019-06-20 21:38:33 -03:00
ReinUsesLisp
9097301d92
shader: Implement bindless images
2019-06-20 21:38:33 -03:00
ReinUsesLisp
06c4ce8645
shader: Decode SUST and implement backing image functionality
2019-06-20 21:38:33 -03:00
ReinUsesLisp
007ffbef1c
gl_rasterizer: Track texture buffer usage
2019-06-20 21:38:33 -03:00
ReinUsesLisp
58c0d37422
video_core: Make ARB_buffer_storage a required extension
2019-06-20 21:36:12 -03:00
ReinUsesLisp
07f7ce1da2
gl_rasterizer_cache: Use texture buffers to emulate texture buffers
2019-06-20 21:36:12 -03:00
ReinUsesLisp
b8c75a845b
maxwell_3d: Partially implement texture buffers as 1D textures
2019-06-20 21:36:12 -03:00
ReinUsesLisp
6c81c8f5b7
gl_shader_decompiler: Allow 1D textures to be texture buffers
2019-06-20 21:36:12 -03:00
ReinUsesLisp
4e81fc8296
shader: Implement texture buffers
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
d267948a73
texture_cache: loose TryReconstructSurface when accurate GPU is not on.
...
Also corrects some asserts.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
6162cb922e
texture_cache: Document the most important methods.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
4530511ee4
texture_cache: Try to Reconstruct Surface on bigger than overlap.
...
This fixes clouds in SMO Cap Kingdom and lens on Cloud Kingdom.
Also moved accurate_gpu setting check to Pick Strategy
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
a79831d9d0
texture_cache: Implement Guard mechanism
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
7731a0e2d1
texture_cache: General Fixes
...
Fixed ASTC mipmaps loading
Fixed alignment on openGL upload/download
Fixed Block Height Calculation
Removed unalign_height
2019-06-20 21:36:12 -03:00
ReinUsesLisp
c2ed348bdd
surface_params: Ensure pitch is always written to avoid surface leaks
2019-06-20 21:36:12 -03:00
ReinUsesLisp
9098905dd1
gl_framebuffer_cache: Use a hashed struct to cache framebuffers
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
d65a4af895
texture_cache return invalid buffer on deactivated color_mask
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
6bd034eae9
engine_upload: Addapt to new Texture Cache
2019-06-20 21:36:12 -03:00
ReinUsesLisp
2131f71573
surface_params: Optimize CreateForTexture
...
Instead of using Common::AlignUp, use Common::AlignBits to align the
texture compression factor.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
41b4674458
gl_texture_cache: Make main views be proxy textures instead of a full view.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
07cc7e0c12
texture_cache: Add ASync Protections
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
1bbc9debfb
Remove Framebuffer reconfiguration and restrict rendertarget protection
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
5192521dc3
texture_cache: Implement GPU Dirty Flags
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
94f2be5473
texture_cache: Optimize GetMipBlockHeight and GetMipBlockDepth
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
a4a58be2d4
texture_cache: Implement L1_Inner_cache
2019-06-20 21:36:12 -03:00
ReinUsesLisp
345e73f2fe
video_core: Use un-shifted block sizes to avoid integer divisions
...
Instead of storing all block width, height and depths in their shifted
form:
block_width = 1U << block_shift;
Store them like they are provided by the emulated hardware (their
block_shift form). This way we can avoid doing the costly
Common::AlignUp operation to align texture sizes and drop CPU integer
divisions with bitwise logic (defined in Common::AlignBits).
2019-06-20 21:36:12 -03:00
ReinUsesLisp
28d7c2f5a5
texture_cache: Change internal cache from lists to vectors
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
b347543e83
Reduce amount of size calculations.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
4e2071b6d9
texture_cache: Correct premature texceptions
...
Due to our current infrastructure, it is possible for a mipmap to be set
on as a render target before a texception of that mipmap's superset be
set afterwards. This is problematic as we rely on texture views to set
up texceptions and protecting render targets targets for 3D texture
rendering.
One simple solution is to configure framebuffers after texture setup but
this brings other problems. This solution, forces a reconfiguration of
the framebuffers after such event happens.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
ba677ccb5a
texture_cache: Implement guest flushing
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
de0b1cb2b2
Fixes to mipmap's process and reconstruct process
2019-06-20 21:36:12 -03:00
ReinUsesLisp
e0002599ac
surface_base: Add parenthesis to EmplaceOverview's predicate
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
324e470879
Texture Cache: Implement Blitting and Fermi Copies
2019-06-20 21:36:12 -03:00
ReinUsesLisp
549fd18ac4
surface_view: Add constructor for ViewParams
2019-06-20 21:36:12 -03:00
ReinUsesLisp
16e8625a30
surface_base: Split BreakDown into layered and non-layered variants
2019-06-20 21:36:12 -03:00
ReinUsesLisp
2b30000a1e
surface_base: Silence truncation warnings and minor renames and reordering
2019-06-20 21:36:12 -03:00
ReinUsesLisp
03d10ea3b4
copy_params: Use constructor instead of C-like initialization
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
1af4414861
Correct Mipmaps View method in Texture Cache
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
d86f9cd709
Change texture_cache chaching from GPUAddr to CacheAddr
...
This also reverses the changes to make invalidation and flushing through
the GPU address.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
b711cdce78
Corrections to Structural Matching
...
The texture will now be reconstructed if the width only matches on GoB
alignment.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
bc930754cc
Implement Texture Cache V2
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
3d471e732d
Correct Surface Base and Views for new Texture Cache
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
3b26206dbd
Add OGLTextureView
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
6b0695b3cd
Deglobalize Memory Manager on texture cahe and Implement Invalidation and Flushing using GPUVAddr
2019-06-20 21:36:11 -03:00
ReinUsesLisp
6c410104f4
texture_cache: Remove execution context copies from the texture cache
...
This is done to simplify the OpenGL implementation, it is needed for
Vulkan.
2019-06-20 21:36:11 -03:00
ReinUsesLisp
fa59a7b4d8
gl_texture_cache: Implement fermi copies
2019-06-20 21:36:11 -03:00
ReinUsesLisp
1b4503c571
texture_cache: Split texture cache into different files
2019-06-20 21:36:11 -03:00
ReinUsesLisp
5f3aacdc37
texture_cache: Move staging buffer into a generic implementation
2019-06-20 21:36:11 -03:00
ReinUsesLisp
2787a0c287
texture_cache: Flush 3D textures in the order they are drawn
2019-06-20 21:36:11 -03:00
ReinUsesLisp
4b396f375c
gl_texture_cache: Minor changes
2019-06-20 21:36:11 -03:00
ReinUsesLisp
0cefb7bcb4
gl_texture_cache: Add copy from multiple overlaps into a single surface
2019-06-20 21:36:11 -03:00
ReinUsesLisp
84139586c9
gl_texture_cache: Attach surface textures instead of views
2019-06-20 21:36:11 -03:00
ReinUsesLisp
fb94871791
gl_texture_cache: Add fast copy path
2019-06-20 21:36:11 -03:00