Subv
7a27a11770
GPU: Added Z buffer registers to Maxwell3D's reg structure.
2018-03-19 16:55:33 -05:00
Subv
21d9519032
GPU: Added the render target (RT) registers to Maxwell3D's reg structure.
2018-03-19 16:46:29 -05:00
Subv
dcae0c9a4f
GPU: Added the TSC registers to the Maxwell3D register structure.
2018-03-19 00:36:25 -05:00
Subv
cff7b29bba
GPU: Added the TIC registers to the Maxwell3D register structure.
2018-03-19 00:32:57 -05:00
Subv
03156d0c9a
GPU: Implement macro 0xE1A BindTextureInfoBuffer in HLE.
...
This macro simply sets the current CB_ADDRESS to the texture buffer address for the input shader stage.
2018-03-18 19:03:40 -05:00
Subv
7b6868e908
GPU: Implement the BindStorageBuffer macro method in HLE.
...
This macro binds the SSBO Info Buffer as the current ConstBuffer.
This buffer is usually bound to c0 during shader execution.
Games seem to use this macro instead of directly writing the address for some reason.
2018-03-18 16:50:42 -05:00
Subv
85d820b1b4
GPU: Handle writes to the CB_DATA method.
...
Writing to this method will cause the written value to be stored in the currently-set ConstBuffer plus CB_POS.
This method is usually used to upload uniforms or other shader-visible data.
2018-03-18 15:23:24 -05:00
Subv
a64b936cbe
GPU: Move the GPU's class constructor and destructors to a cpp file.
...
This should reduce recompile times when editing the Maxwell3D register structure.
2018-03-18 15:23:24 -05:00
Sebastian Valle
46f9d4b4a3
Merge pull request #246 from Subv/gpu_macro_calls
...
GPU: Store uploaded GPU macros and keep track of the number of method arguments.
2018-03-18 15:13:40 -05:00
Subv
aa586fa268
GPU: Store uploaded GPU macros and keep track of the number of method parameters.
2018-03-18 11:51:46 -05:00
Subv
7ac8657432
GPU: Macros are specific to the Maxwell3D engine, so handle them internally.
2018-03-18 11:51:45 -05:00
Subv
ccb8da1512
GPU: Renamed ShaderType to ShaderStage as that is less confusing.
2018-03-17 18:32:57 -05:00
Subv
88698c156f
GPU: Store shader constbuffer bindings in the GPU state.
2018-03-17 18:32:57 -05:00
Subv
66dae22790
GPU: Corrected some register offsets and removed superfluous macro registers.
2018-03-17 18:32:56 -05:00
Subv
1d9d9c16e8
GPU: Make the SetShader macro call do the same as the real macro's code.
...
It'll now set the CB_SIZE, CB_ADDRESS and CB_BIND registers when it's called.
Presumably this SetShader function is binding the constant shader uniforms to buffer 1 (c1[]).
2018-03-17 18:32:55 -05:00
Subv
579000e747
GPU: Corrected the parameter documentation for the SetShader macro call.
...
Register 0xE24 is actually a macro that sets some shader parameters in the register structure.
Macros are uploaded to the GPU at startup and have their own ISA, we'll probably write an interpreter for this in the future.
2018-03-17 13:55:42 -05:00
Subv
f93d769a1c
GPU: Handle the SetShader method call (0xE24) and store the shader config.
2018-03-16 22:51:06 -05:00
Subv
d2888f7e90
GPU: Added the vertex array registers.
2018-03-16 22:47:45 -05:00
Subv
29feece4b8
GPU: Process command mode 5 (IncreaseOnce) differently from other commands.
...
Accumulate all arguments before calling the desired method.
Note: Maybe we should do the same for the NonIncreasing mode?
2018-03-16 20:32:44 -05:00
Subv
bf310a41b8
GPU: Assert that we get a 0 CODE_ADDRESS register in the 3D engine.
...
Shader address calculation depends on this value to some extent, we do not currently know what it being 0 entails.
2018-03-16 19:24:41 -05:00
Subv
cbec739e7b
GPU: Added Maxwell registers for Shader Program control.
2018-03-16 19:23:11 -05:00
Subv
5fb4c718cc
GPU: Intercept writes to the VERTEX_END_GL register.
...
This is the register that gets written after a game calls DrawArrays().
We should collect all GPU state and draw using our graphics API here.
2018-03-04 19:14:04 -05:00
Subv
84e1c0a430
FS: Use the correct error code when trying to open files that don't exist.
2018-03-04 14:34:48 -05:00
Subv
e4b7a1d160
FS: Stubbed CreateSaveData. It currently does nothing.
2018-03-04 14:31:57 -05:00
Subv
0eefe6e4d1
FS: Make EnsureSaveData create the savedata folder when called for the first time.
2018-03-04 14:30:07 -05:00
Subv
248881fa7f
CoreTiming: Unschedule the pending events when an Interface is destroyed.
2018-03-04 10:34:25 -05:00
Subv
656e7aab29
Vi: Signal the BufferQueue's Native Handle right after ReleaseBuffer is called.
...
This prevents a thread starvation issue in Puyo Puyo Tetris.
We should hwtest this behavior and figure out where exactly this event is signaled.
2018-03-03 11:51:36 -05:00
Subv
3209cff530
SaveData: Use the current titleid when opening the savedata archive.
2018-03-01 19:03:54 -05:00
Subv
827f8ca3c7
Kernel: Store the program id in the Process class instead of the CodeSet class.
...
There may be many CodeSets per Process, so it's wasteful and overcomplicated to store the program id in each of them.
2018-03-01 19:03:53 -05:00
Subv
cc6e4ae6cf
FS: Implement MountSaveData and some of the IFile interface.
2018-03-01 19:03:53 -05:00
Subv
d140c8ecf7
Filesystem: Added a SaveData Factory and associated Disk_FileSystem.
2018-03-01 19:03:52 -05:00
Subv
6e38081165
ResultCode: Mark any error code that isn't 0 as an error.
2018-02-27 09:44:35 -05:00
Subv
5ab285f1f9
AM: Corrected the response in EnsureSaveData.
...
The values are still unknown and the function is still considered a stub.
Puyo Puyo Tetris now tries to call fsp-srv:MountSaveData.
2018-02-18 18:09:52 -05:00
Subv
94ee8fc97b
Kernel/IPC: Add a small delay after each SyncRequest to prevent thread starvation.
...
Ported from citra PR #3091
The delay specified here is from a Nintendo 3DS, and should be measured in a Nintendo Switch.
This change is enough to prevent Puyo Puyo Tetris's main thread starvation.
2018-02-18 13:25:48 -05:00
Subv
416f692f6e
nvmap: Make IocFromId return the same existing handle instead of creating a new one.
...
Games like Puyo Puyo Tetris and BOTW seem to depend on the buffer always having the same handle
2018-02-17 14:01:01 -05:00
Subv
d758332425
Parcel: Ensure we don't read past the end of the parcels in Vi.
2018-02-17 14:00:44 -05:00
Subv
2662de6e52
Vi: Mark all fences as NO_FENCE in the DequeueBuffer response parcel.
2018-02-17 14:00:30 -05:00
Subv
1b64160d83
Vi: Always write the IGBPBuffer in the RequestBuffer response parcel.
...
This may break libnx homebrew due to a bug in libnx but is required by official games since they always assume that the buffer will be there.
2018-02-17 13:59:45 -05:00
Subv
7a1917e0fd
nvhost-ctrl: Stub NVHOST_IOCTL_CTRL_EVENT_WAIT.
2018-02-14 22:57:57 -05:00
Subv
35d0d06885
Vi: Mark the fences as valid in the DequeueBuffer response parcel.
2018-02-14 22:57:56 -05:00
Subv
d18446f63a
Vi: Added a missing u32 in the DequeueBuffer response parcel.
2018-02-14 22:57:56 -05:00
Subv
b78ffc4abf
Vi: Don't write the IGBPBuffer in the IGBPRequestBufferResponseParcel.
2018-02-14 22:57:55 -05:00
Subv
8dee5663b3
Vi: Properly write the BufferProducerFence object in the DequeueBuffer response parcel.
2018-02-14 22:57:54 -05:00
Subv
ac61a7d1e6
GPU: Partially implemented the QUERY_* registers in the Maxwell3D engine.
...
Only QueryMode::Write is supported at the moment.
2018-02-12 12:34:41 -05:00
Subv
6cddf9d88e
Make a GPU class in VideoCore to contain the GPU state.
...
Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there.
2018-02-11 23:44:12 -05:00
Subv
e01a8f2187
GPU: Added a command processor to decode the GPU pushbuffers and forward the commands to their respective engines.
2018-02-11 22:42:48 -05:00
Subv
ba2426aa3f
nvdrv: Make the GPU memory manager available to nvhost-gpu.
2018-02-11 21:30:23 -05:00
Subv
b0489c9a64
Services: Added a todo about returning interfaces as domain objects in lm, hid and time.
2018-01-22 20:40:43 -05:00
Subv
7efa6e8801
Time: Don't create unnecessary ports when retrieving the clock service sessions.
2018-01-22 17:42:11 -05:00
Subv
1003996e80
HID: Don't create an unnecessary port in CreateAppletResource.
2018-01-22 17:41:31 -05:00
Subv
1a9c96e4de
LM: Don't create an unnecessary port in Initialize.
2018-01-22 17:35:40 -05:00
Subv
67c43e9200
IPC: Don't create an unnecessary port when using PushIpcInterface outside of a domain.
2018-01-22 17:31:23 -05:00
Subv
10c67bf395
AppletOE: Stubbed CreateManagedDisplayLayer to create a new layer in the Default display.
...
This function is used by libnx to obtain a new layer.
2018-01-22 13:50:22 -05:00
Subv
eb58f852f8
AppletOE: Make ISelfController keep a reference to nvflinger.
...
It'll be needed when we implement CreateManagedDisplayLayer.
2018-01-22 13:46:36 -05:00
Subv
42859461f3
Services: Vi shouldn't be responsible for creating nvflinger.
...
It is now created during Service initialization and passed to all the services that need it.
2018-01-22 13:40:02 -05:00
Subv
8d7686ff8e
VI: Move BufferQueue and NVFlinger to their own folder/namespace.
2018-01-22 11:54:58 -05:00
Subv
749043c809
VI: Implement the Query transaction of IHOSBinderDriver, and stubbed some results.
2018-01-21 11:13:47 -05:00
Subv
cb75b56e45
NV: Implemented the nvdrv service, which uses the same interface as nvdrv:a
2018-01-16 19:04:09 -05:00
Subv
30657f9ca1
NV: Move the nvdrv classes into the Nvidia namespace, and move the functionality to a s single module that services call.
2018-01-16 19:03:49 -05:00
Subv
f827b17dd4
VI: Stubbed GetNativeHandle, Create/DestroyStrayLayer and CloseDisplay
2018-01-16 19:01:03 -05:00
Subv
c5a0408ccc
Services: Stubbed APM::OpenSession and the ISession interface.
...
# Conflicts:
# src/core/hle/service/am/applet_oe.cpp
# src/core/hle/service/apm/apm.cpp
2018-01-16 19:00:32 -05:00
Subv
f7dc637a61
AppletOE: Stub a bunch of functions required by libnx homebrew.
2018-01-16 18:58:06 -05:00
Subv
bf0e20c571
SVC: Correct some return values in svcGetInfo and added TitleId and PrivilegedProcessId stubs.
...
# Conflicts:
# src/core/hle/kernel/svc.cpp
2018-01-16 18:50:23 -05:00
Subv
3442f4b96a
SVC: Add 4.0.0+ comment to GetInfoType enum values.
2018-01-16 18:44:39 -05:00
Subv
5bc14e791a
IPC: Push domain objects as move handles when not in a domain.
2018-01-16 18:42:08 -05:00
Subv
1ca800ccee
NV: Move the nv device nodes to their own directory and namespace.
2018-01-10 23:28:40 -05:00
Subv
977ce4abbc
VI: Use a Pulse event instead of OneShot for the vblank events.
...
This prevents missing frames if the vblank fires between the DequeueBuffer and Wait(vsync) calls
2018-01-10 23:28:36 -05:00
Subv
34ae2ec644
NV: Expose the nvdisp_disp0 device and a weak reference to the nvdrv:a service.
...
NVFlinger will call into the nvdisp_disp0 device to perform screen flips, bypassing the ioctl interface.
We now have the address of the framebuffer to draw, we just need to actually put it on the screen.
2018-01-10 23:28:29 -05:00
Subv
e21fbd9ae5
NV: Determine what buffer to draw for each layer of each display.
...
Don't try to draw buffers that the guest application is using, only queued buffers are eligible for drawing.
Drawing actual pixels is still not implemented.
2018-01-10 23:28:25 -05:00
Subv
404149e475
NV: Signal all display's vsync event 60 times per second.
2018-01-10 23:28:22 -05:00
Subv
d205dee0a6
NV: Give each display its own vsync event.
2018-01-10 23:28:19 -05:00
Subv
927569bed8
NV: Keep track of Displays, Layers and BufferQueues in nvflinger.
2018-01-10 23:28:16 -05:00
Subv
fb73e8b723
IPC: Allow passing arguments to the Interfaces when using PushIpcInterface
2018-01-10 23:28:13 -05:00
Subv
25f29c2f4f
NV: Implemented (with stubs) the vi:m service and some of its subservices.
...
The homebrew display test application now properly writes graphics data to the graphics buffer but we still don't have a way to compose the display layers.
2018-01-10 23:28:09 -05:00
Subv
94a5e97eb3
NV: Implemented the nvdrv:a service and the /dev/nvmap device.
2018-01-10 23:28:05 -05:00
Subv
ab86b80cac
IPC: Corrected some definitions for the buffer C descriptor flags.
2018-01-10 23:28:02 -05:00
Subv
ba02f0deef
svc: Stub ResetSignal and CreateTransferMemory
2018-01-10 23:27:59 -05:00
Subv
0a1278081e
svc: Stub SetMemoryAttribute
2018-01-10 23:27:56 -05:00
Subv
7ad20154fc
Threads: Added enum values for the Switch's 4 cpu cores and implemented svcGetInfo(AllowedCpuIdBitmask)
2018-01-10 01:01:55 -05:00
Subv
188feba457
Services: Allow lm to log single-character messages.
2018-01-10 00:41:29 -05:00
Subv
c2ee513d35
SVC: Fixed WaitSynchronization with multiple handles when none is immediately ready.
2018-01-09 15:02:43 -05:00
Subv
bc91ebacc1
SVC: Implemented CancelSynchronization.
2018-01-09 15:02:04 -05:00
Subv
a418f6e77b
ErrorCodes: Updated the InvalidHandle and Timeout kernel error codes.
2018-01-09 12:05:10 -05:00
Subv
8d9250fa70
SVC: Fixed WaitSynchronization with multiple handles when at least one of them is ready.
2018-01-09 11:53:50 -05:00
Subv
db3a525166
Kernel: Actually wake up the requested number of threads in Semaphore::Release.
...
Also properly keep track of data in guest memory, this fixes managing the semaphore from userland.
It was found that Semaphores are actually Condition Variables, with Release(1) and Release(-1) being equivalent to notify_one and notify_all. We should change the name of the class to reflect this.
2018-01-08 21:12:54 -05:00
Subv
1bbe9309da
Kernel: Properly keep track of mutex lock data in the guest memory. This fixes userland locking/unlocking.
2018-01-08 21:12:51 -05:00
Subv
2a3f8e8484
Kernel: Allow chaining WaitSynchronization calls inside a wakeup callback.
2018-01-08 21:12:49 -05:00
Subv
c12c756539
IPC: Make DuplicateSession return the Domain instead of the Session if the request was made on a Domain interface.
2018-01-07 17:12:07 -05:00
Subv
e3b4c8e043
AppletOE: Fixed command buffer structure for ReceiveMessage.
2018-01-07 17:12:05 -05:00
Subv
ad965501d0
IPC: Corrected some command headers in the IPC Controller interface.
2018-01-07 17:12:03 -05:00
Subv
166286e976
IPC: Corrected some command header sizes in appletOE.
2018-01-07 17:12:01 -05:00
Subv
ba2ffd7b81
IPC: Take the number of domain objects as a parameter in MakeBuilder.
2018-01-07 17:11:58 -05:00
Subv
5f41477f9c
SM: Fixed connecting to services with an 8-byte name, like appletOE.
2018-01-07 17:11:56 -05:00
Subv
80f6df5414
IPC: Fixed pushing ResultCodes into the command buffer.
...
They should have 32 bits of padding after the error code now.
2018-01-07 17:11:54 -05:00
Subv
32847d8b86
IPC: Add functions to read the input move/copy objects from an IPC request.
2018-01-07 17:11:51 -05:00
Subv
7e3561b1cd
IPC: Don't attempt to read the command buffer if it holds a Close request.
2018-01-07 17:11:49 -05:00
Subv
0368324f79
IPC Cleanup: Remove 3DS-specific code and translate copy, move and domain objects in IPC requests.
...
Popping objects from the buffer is still not implemented.
2018-01-07 17:11:47 -05:00
Subv
b0ceb4df70
IPC: Skip the entire u64 of the command id when receiving an IPC request.
...
Service code now doesn't have to deal with this.
2018-01-07 17:11:45 -05:00
Subv
226786f0b0
IPC: Use the correct size when pushing raw data to the command buffer and fixed pushing domain objects.
...
Domain object ids are always stored immediately after the raw data.
2018-01-07 17:11:43 -05:00
Sebastian Valle
20e19a340c
Merge pull request #2991 from Subv/getpointer
...
Remove more usages of GetPointer.
2017-10-08 10:11:12 -05:00