1
0
Fork 0
Commit Graph

7584 Commits

Author SHA1 Message Date
Pengfei Zhu 41bff0e3b7
Merge pull request #5316 from lioncash/init
core: Resolve -Wreorder warnings
2020-05-02 15:42:31 +08:00
Lioncash 563a540dfd core: Resolve -Wreorder warnings
Ensures the initialization order matches the actual order that the class
member variables will be initialized in.
2020-05-01 23:32:46 -04:00
Lioncash a32ad7f1f2 soc_u: Prevent undefined behavior with CTRPollFD
This class is memcpy-ed and memcpy has the requirement that data passed
to it must be trivially copyable, otherwise the behavior is undefined.

This is trivial to resolve as BitField was made trivially copyable a
while ago, so this explicit copy assignment operator isn't necessary.
2020-05-01 22:30:10 -04:00
Pengfei Zhu e212dc3a1f
Merge pull request #5297 from lioncash/missing
gl_rasterizer: Amend missing return value in branch in SetupGeometryShader()
2020-05-02 08:07:49 +08:00
Pengfei Zhu 70a43be714
Merge pull request #5306 from lioncash/view2
file-sys: Make use of std::string_view where applicable
2020-05-02 08:07:10 +08:00
Pengfei Zhu 8e7abecf7e
Merge pull request #5307 from lioncash/guard
file_sys/seed_db: Add missing include guard
2020-05-02 08:04:58 +08:00
Pengfei Zhu 5a008a74fa
Merge pull request #5304 from lioncash/layered
layered_fs: Mark functions as static where applicable
2020-05-02 08:02:35 +08:00
Pengfei Zhu 6907568034
Merge pull request #5309 from lioncash/dtor
applets: Make destructors virtual where applicable
2020-05-02 08:02:14 +08:00
Pengfei Zhu 59984df603
Merge pull request #5308 from lioncash/rsa
core/hw/rsa: Minor cleanup
2020-05-02 08:01:58 +08:00
Pengfei Zhu 4d7487bd34
Merge pull request #5298 from lioncash/unused
gl_rasterizer: Silence various compilation warnings
2020-05-01 23:34:36 +08:00
Pengfei Zhu 037c857bd6
Merge pull request #5303 from lioncash/namespace
service/ir: Remove erroneous forward declaration
2020-05-01 23:04:01 +08:00
Pengfei Zhu 017f0c469e
Merge pull request #5301 from lioncash/chunk
common: Remove chunk_file.h
2020-05-01 23:02:47 +08:00
Pengfei Zhu 6a0636d631
Merge pull request #5296 from lioncash/flatten
gl_rasterizer_cache: Flatten LoadCustomTexture()
2020-05-01 23:01:47 +08:00
Pengfei Zhu 2eacb11c53
Merge pull request #5292 from lioncash/alloc
gl_shader_manager: Eliminate variable shadowing
2020-05-01 22:57:55 +08:00
Pengfei Zhu 1bb9a71a01
Merge pull request #5291 from lioncash/trunc
renderer_opengl: Resolve compiler truncation warnings
2020-05-01 22:56:46 +08:00
Lioncash 89eeb64854 applets/swkbd: Make destructor virtual
Prevents undefined behavior when destroying a derived class through a
base class pointer.
2020-05-01 10:44:31 -04:00
Lioncash aeb6a037ed applets/mii_selector: Make destructor virtual
Prevents undefined behavior when destroying derived classes through a
base class pointer.
2020-05-01 10:42:57 -04:00
Lioncash 3ab0701192 core/hw/rsa: Make GetSignature() a const member function
This doesn't directly modify instance state, so it can be made const.
2020-05-01 10:17:43 -04:00
Ben fd1b254635
Merge pull request #5290 from lioncash/shader
gl_shader_gen: Minor interface cleanup
2020-05-01 16:16:25 +02:00
Lioncash c55e81b946 core/hw/rsa: Make operator bool explicit
Prevents error-prone implicit conversions to bool from occurring.
2020-05-01 10:14:50 -04:00
Lioncash 75bac1e514 core/hw/rsa: Take std::vector instances by value
Allows us to std::move them and allow calling code to eliminate copies
from occurring entirely.
2020-05-01 10:14:07 -04:00
Lioncash 98385b75d6 file_sys/seed_db: Add missing include guard
Prevents any potential inclusion errors from occurring.
2020-05-01 09:59:58 -04:00
Lioncash 10a32c94b6 title_metadata: Take std::vector by const reference in Load()
This isn't modified in the implementation, so this can be a const
reference to eliminate an unnecessary heap reallocation.
2020-05-01 09:53:44 -04:00
Lioncash 147073a5a0 file-sys: Make use of std::string_view where applicable
Same behavior, but makes the interface more flexible and allows
non-std::string instances to be used with it.
2020-05-01 09:49:36 -04:00
Lioncash 37a6ea72e5 layered_fs: Mark functions as static where applicable
Makes them internally linked and prevents potential
-Wmissing-declaration warnings.
2020-05-01 09:35:59 -04:00
Lioncash 9cff314abb service/ir: Remove erroneous forward declaration
This can be removed as it's not used. Even if it were however, it would
be an incorrect forward declaration, as ServiceManager exists within the
Service::SM namespace, not the top-level SM namespace.
2020-05-01 08:54:27 -04:00
Lioncash 246cea229c common: Remove chunk_file.h
This is part of Dolphin's serialization code, which isn't used and
probably never will be, considering that savestates are implemented with
boost.
2020-05-01 08:23:59 -04:00
Lioncash 763778e6c0 gl_rasterizer: Make const on references consistent
Applies const to auto& instances that would actually resolve to a const
reference for readability and explicitness.
2020-05-01 06:19:20 -04:00
Lioncash 437453d32b gl_rasterizer: Amend missing return value in branch in SetupGeometryShader()
Previously undefined behavior was being invoked in the case that
geometry shaders weren't supported.
2020-05-01 06:10:32 -04:00
Lioncash 81768bf0c2 gl_rasterizer: Resolve truncation warnings 2020-05-01 06:08:20 -04:00
Lioncash df97021f55 gl_rasterizer: Make use of std::string_view in IsVendorAmd()
Same behavior, no heap allocation.

strings returned from glGetString() are guaranteed to be static strings,
so this is safe to do. They're also guaranteed to be null-terminated.
2020-05-01 05:57:25 -04:00
Lioncash de140a5870 gl_rasterizer: Default destructor in the cpp file 2020-05-01 05:53:40 -04:00
Lioncash ea08178dde gl_rasterizer: Remove unused emu_window variable in RasterizerOpenGL
Silences an unused private variable warning.
2020-05-01 05:52:48 -04:00
Lioncash 59a614a70f gl_rasterizer_cache: Remove unnecessary reference parameter in LoadCustomTexture()
This is only ever used in a self-referential manner, so we can make use
of the texture info member directly.
2020-05-01 05:42:35 -04:00
Lioncash e342f36e02 gl_rasterizer_cache: Flatten LoadCustomTexture()
Makes the control flow much nicer to follow, as we don't store to a
local before returning anymore.
2020-05-01 05:33:47 -04:00
Mat M 85d37c9994
gl_shader_disk: Make use of std::nullopt where applicable (#5293)
Some implementations can use the std::nullopt_t constructor of
std::optional to avoid needing to completely zero out the internal
buffer of the optional and instead only set the validity byte within it.

e.g. Consider the following function:

std::optional<std::vector<ShaderDiskCacheRaw>> fn() {
    return {};
}

With libc++ this will result in the following code generation on x86-64:

Fn():
  mov     rax, rdi
  vxorps  xmm0, xmm0, xmm0
  vmovups ymmword ptr [rdi], ymm0
  vzeroupper
  ret

With libstdc++, we also get the similar equivalent:

Fn():
  vpxor   xmm0, xmm0, xmm0
  mov     rax, rdi
  vmovdqu XMMWORD PTR [rdi], xmm0
  vmovdqu XMMWORD PTR [rdi+16], xmm0
  ret

If we change this function to return std::nullopt instead, then this
simplifies both the code gen from libc++ and libstdc++ down to:

Fn():
  mov     BYTE PTR [rdi+24], 0
  mov     rax, rdi
  ret

Given how little of a change is necessary to result in better code
generation, this is essentially a "free" very minor optimization.
2020-04-30 22:42:32 -05:00
Lioncash f20120e5a7 gl_shader_gen: Mark hash implementations as noexcept
These shouldn't throw at all, so we can mark the interface as such.
2020-04-30 22:57:36 -04:00
Lioncash ca4f7266c0 gl_shader_manager: Remove unused variable within LoadDiskCache() 2020-04-30 22:48:57 -04:00
Lioncash 138539c9a0 gl_shader_manager: Eliminate variable shadowing
Resolves a few -Wshadow warnings.
2020-04-30 22:46:58 -04:00
Lioncash 2d83b39532 gl_shader_manager: Avoid unnecessary std::vector copy in LoadDiskCache()
Same behavior, but without an unnecessary reallocation.
2020-04-30 22:43:03 -04:00
Lioncash e118cb1e0b renderer_opengl: Resolve compiler truncation warnings
Resolves numerous truncation warnings on MSVC.
2020-04-30 22:26:14 -04:00
Lioncash d23ffe9b42 gl_shader_gen: Mark PicaVSConfig reference parameter as const
This isn't mutated whatsoever, so this can be marked const.
2020-04-30 22:07:25 -04:00
FearlessTobi 7f8151b9b9 savedata_archive: Make GetFreeBytes return a more accurate value
Previously, we were returning a value that was way too big, causing an integer overflow in Fractured Souls.
According to wwylele, the biggest oberserved save size for 3DS is 1MB, so this new value should leave plenty of room, even if games use a bigger size.
2020-04-29 05:42:40 +02:00
Mat M 98fe5f82c5
memory: Make getter functions const qualified where applicable (#5251)
Many of these functions are capable of being used within const contexts,
so we can apply the const qualifier in some cases and add const based
overloads for others, which makes the interface a little bit more
flexible and const-correct.
2020-04-28 14:43:52 -05:00
Mat M 96832a2c82
core/memory: Make use of std::move in Entry::operator= (#5233)
* core/memory: Amend unusual return value of operator=

operator= usually returns a reference to this. Given there's no comment
explaining why void was used, this can be assumed to be an oversight.

* core/memory: Make use of std::move in Entry::operator=

Same behavior, minus the need for an atomic reference count increment
and decrement (since MemoryRef contains a std::shared_ptr).
2020-04-28 14:39:02 -05:00
Ben 9dc0f38ffd
Merge pull request #5241 from lioncash/pica
pica_state: Make use of std::array where applicable
2020-04-28 09:01:41 +02:00
Marshall Mohror 8a0b0c2fc7
texture_filters: update ScaleForce (#5270)
* texture_filters: update ScaleForce

* texture_filters: optimize scale_force

* texture_filters/scale_force: optimize final offset calculation
2020-04-27 23:50:47 -05:00
Lioncash 41b7df4a32 command_processor: Resolve undefined behavior type punning
We can use std::memcpy to achieve the same behavior without undefined
behavior. Once Citra moves to C++20 we can convert this over to
std::bit_cast.
2020-04-27 15:35:21 -04:00
Lioncash 5ac4636a14 pica_state: Make use of std::array
Same behavior, stronger typing.
2020-04-27 15:35:18 -04:00
Ben ed304e2877
Merge pull request #5179 from vitor-k/reenable-hidapi
Reenable hidapi for SDL2.0.12 and up
2020-04-27 16:35:51 +02:00
badda71 f18aef0579
add program counter in unmapped memory access log messages (#5149)
* add program counter in unmapped memory access log messages
2020-04-27 16:31:34 +02:00
xperia64 03145e307b Add measured frame cycles 2020-04-26 18:02:25 -04:00
xperia64 5e95b35900 Update FPS to roughly match the actual 3DS rate 2020-04-26 03:22:11 -04:00
xperia64 a0e8255b65 Update cycles and explanation 2020-04-26 03:14:54 -04:00
Mat M bc14f485c4
gl_shader_disk_cache: std::move entries in LoadTransferable() (#5249) 2020-04-24 17:49:54 +02:00
Pengfei Zhu 77ffe37c46
Merge pull request #5247 from lioncash/copy3
swrasterizer/proctex: Take regs by const reference
2020-04-24 22:07:03 +08:00
Ben 39463f1f6d
ArmInterface: return ref instead of copy for GetTimer (#5227)
* ArmInterface: return ref instead of copy for GetTimer

* ArmInterface: add const ref GetTimer

* ArmInterface: return raw pointer instead of shared_ptr in GetTimer

* remove more unnecessary shared_ptr usage

* Fix save states

* fix unit tests
2020-04-22 07:44:58 +02:00
xperia64 3a1601a534 Change audio_frame_ticks with length explanation 2020-04-21 23:40:34 -04:00
xperia64 38c3c9c74b
Add sample rate field to AAC decoder (#5195)
* Add sample rate field to AAC decoder

* Fix TODO comment

* Remove unneeded conversion
2020-04-21 20:34:50 -05:00
Mat M 8b43dff849
gl_shader_gen: Convert file-scope std::string into a std::string_view (#5263)
Same behavior, no heap allocations at program start up
2020-04-21 20:31:58 -05:00
Marshall Mohror db5b8b9c88
video_core: reduce string allocations in shader decompiler (#5261)
* video_core: reduce string allocations in shader decompiler

* use append for indentation instead of resize

Co-authored-by: Mat M. <mathew1800@gmail.com>
2020-04-20 22:08:58 -05:00
Mat M b82d4315fe
custom_tex_cache: Remove reliance on the global system instance (#5252)
Removes direct usages of Core::System::GetInstance() and instead passes
the direct necessities through the interface.
2020-04-20 21:50:16 -05:00
Hamish Milne 6783289909 CR actions 2020-04-20 16:30:49 +01:00
Hamish Milne 55c9162d02 Clean up the Callback (don't store a shared_ptr to parent) 2020-04-20 16:29:50 +01:00
Hamish Milne d5a962cb81
Fix savestates compatibility (#5256)
* Fix savestates compatibility
2020-04-20 16:21:37 +02:00
Sebastian Valle 3597921ec5
Merge pull request #5235 from lioncash/move
ipc_helpers: Make PushStaticBuffer take std::vector by value
2020-04-19 21:51:52 -05:00
Sebastian Valle bcc80d0871
Merge pull request #5243 from lioncash/move2
geometry_pipeline: std::move vertex handler in SetVertexHandler()
2020-04-19 21:48:48 -05:00
Sebastian Valle 1469ad339c
Merge pull request #5244 from lioncash/move3
gl_shader_manager: std::move std::string where applicable
2020-04-19 21:48:15 -05:00
Sebastian Valle acf18ce4dd
Merge pull request #5245 from lioncash/guard
video_core: Add missing header guards
2020-04-19 21:47:45 -05:00
Sebastian Valle df92b37bbf
Merge pull request #5248 from lioncash/view
post_processing_opengl: Make use of std::string_view with GetPostProcessingShaderCode()
2020-04-19 21:46:48 -05:00
Ben 0f72dd6d85
Merge pull request #5250 from lioncash/build
core/memory: Fix #5246
2020-04-19 19:39:32 +02:00
Ben ca722f1bb1
Merge pull request #5242 from lioncash/noexcept
gl_resource_manager: Make use of noexcept on move assignment and move constructors
2020-04-19 16:56:24 +02:00
Ben 362956a69b
Merge pull request #5240 from lioncash/primitive
primitive_assembly: Minor changes
2020-04-19 16:55:56 +02:00
Ben 1856752b61
Merge pull request #5203 from Subv/apt_title_allowed
Services/APT: Implemented the IsTitleAllowed function.
2020-04-19 16:50:47 +02:00
Ben 08dddbac4c
Merge pull request #5239 from lioncash/fwd
video_core: Amend misplaced forward declarations
2020-04-19 12:12:22 +02:00
Ben 182aa1e39d
Merge pull request #5238 from lioncash/return
kernel/shared_page: Silence missing return warning in GetInitTime()
2020-04-19 11:31:45 +02:00
Mat M 8014c67faa
service: Resolve trivially avoidable copies (#5237)
* am/am: Avoid redundant copy in GetProgramInfoFromCia()

We can just use a reference to the title metadata. Avoids copying
several data entries and std::vector instances that don't need to be
copied.

* hle/service: Avoid redundant copying of std::string

GetUserPath() returns the path as a reference, so we can make use of
said reference to avoid making copies.
2020-04-19 09:24:37 +02:00
Mat M e54b640e0b
nwm/nwm_uds: Avoid copying all elements in channel_data map where applicable (#5236)
By using a reference here, we avoid copying every single element in the
map, each of which contains a std::share_ptr and std::deque containing
std::vectors.
2020-04-19 07:57:57 +02:00
Lioncash 99eedced4a core/memory: Fix #5246
We can simplify the overload sent to be less confusing (and
error-prone), while also unbreaking 32-bit builds.
2020-04-19 01:56:03 -04:00
Lioncash 623cc926ed post_processing_opengl: Make use of std::string_view with GetPostProcessingShaderCode()
Same behavior, but doesn't result in an allocating copy of the passed in
string. Particularly given the string is only compared against other
existing strings.
2020-04-18 22:27:44 -04:00
Lioncash e2533e8edb swrasterizer/proctex: Take regs and state by const reference
Avoids unnecessarily copying 512 bytes and 3584 bytes upon every
invocation.
2020-04-18 22:16:05 -04:00
Lioncash 82b55b763c swrasterizer/proctex: Make CombineAndMap() internally linked
This isn't used outside of this source file, so it can be marked
internally linked.
2020-04-18 22:09:36 -04:00
Lioncash 7a3d4d7642 video_core: Add missing header guards
Ensures errors related to multiple inclusions never happen.
2020-04-18 22:06:37 -04:00
Lioncash c72d9b806b gl_shader_manager: std::move std::string where applicable
Prevents unnecessary copies from occurring. In the case of ShaderCache,
we can just remove the parameter, given it's unused.
2020-04-18 21:40:21 -04:00
Lioncash 12d4c835db geometry_pipeline: std::move vertex handler in SetVertexHandler()
std::function is allowed to internally allocate, so this prevents
potential reallocations from occurring, should that case ever happen.
2020-04-18 21:26:47 -04:00
Lioncash 12279b22cc gl_resource_manager: Make use of noexcept on move assignment and move constructors
Several standard constructors generally check if objects can be moved in
a non-throwing manner (usually via std::move_if_noexcept) to preserve
its exception guarantees. This means that if these were used with
certain containers any reallocations internally would cause resource
churn, as copies would be necessary instead of moves.

This way, if they're every used in that manner, the right behavior is
always performed.
2020-04-18 21:12:03 -04:00
Lioncash 2cefd16850 primitive_assembly: Mark constructor explicit
Prevents any implicit constructions from occurring, given the
constructor isn't a converting constructor.
2020-04-18 20:42:39 -04:00
Lioncash 59bb84b86c primitive_assembly: Take triangle_handler by reference
Avoids copying the std::function when we don't need to. Particularly
given the std::function isn't actually stored anywhere, so there's no
need to move it.
2020-04-18 20:40:45 -04:00
Lioncash e38e79e27e primitive_assembly: Make use of std::array where applicable
Same behavior, minus any potential implicit array to pointer decay.
2020-04-18 20:39:07 -04:00
Lioncash dd2a86bed1 video_core: Amend misplaced forward declarations
ShaderProgramManager was placed within the wrong namespace. Backend
simply isn't necessary, so it can be removed.
2020-04-18 20:12:22 -04:00
Lioncash f7ad004fb0 kernel/shared_page: Silence missing return warning in GetInitTime()
We can use UNREACHABLE_MSG to indicate that this path isn't intended to
be reached, as it would indicate a wrong enum value.
2020-04-18 19:48:54 -04:00
Lioncash 7eabcdf1c3 apt/applet_manager: std::move parameter in GlanceParameter()
Same behavior, minus a redundant copy.
2020-04-18 19:22:03 -04:00
Lioncash a6e37b48e9 ipc_helpers: Make PushStaticBuffer take std::vector by value
Allows interfaces to move the vector into the calls, avoiding any
reallocations.

Many existing call sites already std::move into the parameter, expecting
a move to occur. Only a few remain where this wasn't already
being done, which we can convert over.
2020-04-18 19:17:11 -04:00
Lioncash 8b22c80ba2 core/memory: Resolve sign conversion in serialize()
auto i = 0 deduces to an int, which was being compared with a size_t
within the loop condition.
2020-04-18 18:50:40 -04:00
Hamish Milne 397bd1bb73
Fix MIC_U serialization and timing (#5223)
* Fix MIC_U serialization and timing

* Better sample rate conversion

* Actually should be every 15 samples

* Reduce rounding errors
2020-04-18 20:52:56 +02:00
Sebastian Valle 75c9784239
Services/APT: Implemented the GetCaptureInfo function. (#5194)
This one is similar to the ReceiveCaptureBufferInfo function except it doesn't clear the capture buffer, according to 3dbrew.

This function is used by the Home Menu
2020-04-18 20:48:09 +02:00
Hamish Milne c5a3bf9728 Fix clang format 2020-04-18 15:14:01 +01:00
Hamish Milne 1fb3c9f08c Fix Address Arbiter serialization 2020-04-18 15:10:54 +01:00
B3n30 922a5f738a fix typo; updated comment about apples bad driver 2020-04-18 15:55:19 +02:00
B3n30 1e54f27cde Add flag to disable seperable shaders for osx Intel GPUs. Default is false 2020-04-18 13:37:58 +02:00
Subv 07f49e588e Services/APT: Implemented the IsTitleAllowed function.
The Home Menu uses this to determine whether it is allowed to launch an app (call StartApplication)

This is a no-op for us, we allow any and all titles to be launched. The official APT module holds a list of some forbidden titles like some versions of IronFall and Flipnote Studio 3D.
2020-04-18 00:26:08 -05:00
Pengfei Zhu 8967b403b9
Merge pull request #5196 from Subv/apt_sys_menu_arg
Services/APT: Implemented the Store/LoadSysMenuArg functions.
2020-04-18 13:24:10 +08:00
Pengfei Zhu 47829ee095
Merge pull request #5213 from Subv/fs_resource
Services/FS: Stubbed GetSdmcArchiveResource and GetNandArchiveResource.
2020-04-18 13:22:21 +08:00
Ben Russell fb941c56d8 common/file_util: Allow access to files on network shares
On Windows, network shares use paths like \\server\share\file which were
being broken by FileUtil::SanitizePath() removing double slashes.

Changed the code in SanitizePath to permit a double-backslash if it
occurs at the start of a filepath (on Windows only).
2020-04-18 04:36:12 +02:00
Ben c605bb42db
Merge pull request #4908 from hamish-milne/feature/savestates-2
Save states
2020-04-17 21:52:51 +02:00
Hamish Milne f5b23eff4b Correctly register AddressArbiter as a type of WakeupCallback 2020-04-17 14:13:22 +01:00
Tobias 32cbb1bc77
input_common/udp: Port various changes from yuzu (#5133) 2020-04-17 02:50:28 +02:00
Hamish Milne 026a63bcf7
Merge pull request #5130 from B3n30/warn_if_cia_contend_is_encrypted
Show an error if CIA contend is encrypted
2020-04-17 00:09:36 +01:00
Hamish Milne ab998b04c8
Merge pull request #5108 from B3n30/load_aes_key_X0x25_from_nativeFirm
Load NCCHSecure2 keyX from native firm
2020-04-17 00:07:15 +01:00
Hamish Milne 7af4b1a18e Merge branch 'master' into feature/savestates-2 2020-04-17 00:01:43 +01:00
Hamish Milne 9afd58cec2
Merge pull request #5185 from MerryMage/fix-gdbstub
gdbstub: Fix some gdbstub jankiness
2020-04-16 23:52:00 +01:00
Hamish Milne d6c84227d8 Fixed NWM not responding 2020-04-16 20:44:25 +01:00
Marshall Mohror 55ecaa0344
video_core: add ScaleForce to texture filters (#5210)
* video_core: add ScaleForce to texture filters

* fix erroneous namespace end comment

Co-Authored-By: Valentin Vanelslande <vvanelslandedev@gmail.com>

* move copyright header to shader file

Co-authored-by: Valentin Vanelslande <vvanelslandedev@gmail.com>
2020-04-16 13:33:14 -05:00
Hamish Milne 9cd669db84 Merge branch 'master' into feature/savestates-2 2020-04-16 19:03:49 +01:00
Subv 0d8c3ee1d3 Services/APT: Implemented the Store/LoadSysMenuArg functions.
They are called by the Home Menu during initialization.

These functions will not see much use until we actually implement application jumping and system rebooting. For now we just need them to prevent some unmapped reads in the Home Menu due to the static buffers not being properly set up.
2020-04-15 22:32:11 -05:00
Sebastian Valle 49a686faee
Merge pull request #5112 from vitor-k/ling-warnings
Qt Linguistic warnings
2020-04-15 22:18:08 -05:00
Subv 783e7af5b2 Services/FS: Stubbed GetSdmcArchiveResource and GetNandArchiveResource.
Also rewritten how GetArchiveResource works so that they all use the same interface.
We should decide what to do with these at some point.

Related to #3131 and #3110
2020-04-15 16:52:55 -05:00
Sebastian Valle 9ae37da292
Kernel/Process: Fixed scheduling multiple processes in the SysCore using Dynarmic (#5193)
* Kernel/Process: Notify the CPUs that a new pagetable has been set every time the process they're executing changes.

Previously the page table would only be changed when the current CPU's page table was changed, this lead to stale JIT states and the PC going to 0 when context-switching a different core inside the ThreadManager::SwitchContext function because the JIT for a new pagetable is only constructed upon receiving the change notification.

* Kernel/Process: Use the relevant CPU's last process to determine when to switch its current process.

Previously it was checking the kernel's current_process variable, which gets overwritten every time a CPU runs its slice. The rescheduling happens after all CPUs have run their slice so the code was effectively only checking the last CPU's process.
2020-04-15 14:35:19 +02:00
Valentin Vanelslande 263e5be78e
Fix Luigi's Mansion can't remove amiibo bug (#5200)
* Fix Luigi's Mansion can't remove amiibo bug
2020-04-14 14:33:49 +02:00
Marshall Mohror 45dfb3aacc
Merge pull request #5186 from hamish-milne/feature/fix-5067
Revert one change from #4844
2020-04-13 23:57:46 -05:00
Hamish Milne 3a651ac9fc Fix clang format 2020-04-13 18:08:15 +01:00
Marshall Mohror d5a435fdf0
Merge pull request #5162 from tbsp/log_user_ips
Added user IP to log events for join/left/kicked/banned
2020-04-13 12:05:42 -05:00
Hamish Milne 4d6bd9b569 Fix the merge 2020-04-13 11:50:27 +01:00
Hamish Milne e733eed6bd Merge remote-tracking branch 'upstream/master' into feature/savestates-2 2020-04-13 11:36:05 +01:00
Hamish Milne d53e94db88 Show save/load errors to the user 2020-04-12 23:12:15 +01:00
Sebastian Valle e480a8032b
Debuggers/Qt: Show the threads process names and ids in the Wai… (#5201) 2020-04-12 23:44:51 +02:00
Hamish Milne 915c426dc9 Merge remote-tracking branch 'upstream/master' into feature/savestates-2 2020-04-12 22:26:24 +01:00
Mat M f75cc8be64
Merge pull request #5184 from MerryMage/dyn-update-2020-04
Update dynarmic (Apr 2020)
2020-04-12 09:10:21 -04:00
Hamish Milne 828f88d20a Merge branch 'master' into feature/savestates-2 2020-04-12 11:24:06 +01:00
Hamish Milne 77c4b26e6c Attempt to improve save/load during frame advance 2020-04-11 22:25:57 +01:00
Hamish Milne 19872b599b Fix button state not persisting between loads 2020-04-11 20:47:14 +01:00
Hamish Milne 34af0d3452 Attempt to fix network bug 2020-04-11 20:33:38 +01:00
Hamish Milne 4be752dd98 Allow GDB debugging through loads 2020-04-11 19:47:31 +01:00
Hamish Milne e6b40486c5 Add a couple of useful SVC logs 2020-04-11 19:47:06 +01:00
Hamish Milne 3871d74bc2 Fix mic sharedmemory not being deallocated 2020-04-11 19:33:21 +01:00
Subv 0e88940df1 Warnings/Thread: Added missing case for the Dormant thread status in ResumeFromWait. 2020-04-11 12:24:09 -05:00
Subv 47417e762b Warnings/Qt: Removed unused variable from lambda capture list. 2020-04-11 12:24:09 -05:00
Subv b80911162f Warnings/QtMotionControls: There is no need to use std::move after std::make_unique.
This fixes a Clang warning about the move preventing copy elision (-Wpessimizing-move)
2020-04-11 12:24:09 -05:00
Subv 64b612bd60 Warnings/GLWindow: Initialize the members of OpenGLWindow in the order they are defined. 2020-04-11 12:24:09 -05:00
Subv d17557c02c Warnings/Network: Initialize the members of Room::RoomImpl in the order they are defined. 2020-04-11 12:24:09 -05:00
Subv 7903f6fbfc Warnings/Network: Handle ENET_EVENT_TYPE_NONE and ENET_EVENT_TYPE_CONNECT in the network packet loop.
ENET_EVENT_TYPE_NONE is basically a no-op.

ENET_EVENT_TYPE_CONNECT should not happen since we are already connected. Assert in case we do receive it.
2020-04-11 12:23:57 -05:00
Hamish Milne e9ab8f82d4 Add disk archive serialization (fix crash in driver renegade etc.) 2020-04-11 11:52:11 +01:00
Hamish Milne a210e7e2bd Sync GPU state after loading (fix FE terrain bug) 2020-04-11 10:28:52 +01:00
Hamish Milne 7b3a8e9bf5 Fix clang format 2020-04-10 20:22:40 +01:00
Hamish Milne 7988978661 Fix VFP registers serialization (0 fps when loading etc.) 2020-04-10 19:36:38 +01:00
Hamish Milne 432ac24503 Fix memory region serialization (OSK crash) 2020-04-10 16:51:01 +01:00
Hamish Milne 3278a4d7ef Fix crashes when loading with cameras active 2020-04-10 14:02:18 +01:00
MerryMage f2499953c0 travis: Update xcode
Update to 10.2 (required for CTAD to work correctly)
2020-04-07 22:07:06 +01:00
MerryMage 8b7b6e9f74 arm_dynarmic: Remove dependence on interpreter 2020-04-07 19:07:59 +01:00
Vitor K 23921e3203
Option to hide mouse on inactivity (#5094)
* Add and implement option to hide mouse on iniactivity
+ clang format

* Set mouse hide timeout as a constant

* Address review comments, decrease mouse inactivity timeout to 2500ms

* Hide mouse: fix menubar bugs

squashable

* Hide mouse: ensure status bar has the default pointer
2020-04-07 09:58:51 -05:00
Hamish Milne eb78fe0c10
Revert one change from #4844
This fixes #5067 by reverting a speculative change made in a previous PR.

From this one can conclude that, for disabled textures, black (0,0,0,1) is the correct colour and clear (0,0,0,0) is not.
2020-04-07 15:38:24 +01:00
Marshall Mohror d37b0476ad
video_core/renderer_opengl/gl_rasterizer_cache: Create Format Reinterpretation Framework (#5170)
* video_core/renderer_opengl/gl_rasterizer_cache: Create Format Reinterpretation Framework

Adds RGBA4 -> RGB5A1 reinterpretation commonly used by virtual console
If no matching surface can be found, ValidateSurface checks for a surface in the cache which is reinterpretable to the requested format.
If that fails, the cache is checked for any surface with a matching bit-width. If one is found, the region is flushed.
If not, the region is checked against dirty_regions to see if it was created entirely on the GPU.
If not, then the surface is flushed.

Co-Authored-By: James Rowe <jroweboy@users.noreply.github.com>
Co-Authored-By: Ben <b3n30@users.noreply.github.com>

temporary change to avoid merge conflicts with video dumping

* re-add D24S8->RGBA8 res_scale hack

* adress review comments

* fix dirty region check

* check for surfaces with invalid pixel format, and break logic into separate functions
2020-04-07 09:12:32 -05:00
Hamish Milne e74b44042b Added save + load hotkeys 2020-04-06 23:05:55 +01:00
MerryMage d17ab5cd91 gdbstub: Fix some gdbstub jankiness
1. Ensure that register information available to gdbstub is most up-to-date.
2. There's no reason to check for current_thread == thread when emitting a trap.
   Doing this results in random hangs whenever a step happens upon a thread switch.
2020-04-06 21:24:54 +01:00
Hamish Milne 7ff985cef9 Fixed TAS movie serialization 2020-04-06 21:23:39 +01:00
Hamish Milne ac37de10fc Reconnect cheat_engine during load 2020-04-06 20:26:41 +01:00
MerryMage e04590a06d externals: Update dynarmic to b58048a 2020-04-06 17:31:30 +01:00
Vitor Kiguchi 69f7a83b0e Reenable hidapi for SDL2.0.12 and up 2020-04-04 20:30:09 -03:00
Hamish Milne b5f394dd12 Use placeholders for serialized paths 2020-04-05 00:20:59 +01:00
Marshall Mohror 3b1b8b7e1f
Merge pull request #5123 from vitor-k/disable-hidapi
SDL: Disable hidapi drivers due to compatibility problems with certain controllers
2020-04-03 23:23:03 -05:00
Marshall Mohror 9c7da35382
Merge pull request #5083 from zhaowenlan1779/video-dumping-update
video_core, citra_qt: Video dumping updates
2020-04-03 21:15:32 -05:00
Marshall Mohror 00667c222a
Merge pull request #5117 from FearlessTobi/n3ds-setting
citra_qt/system: Add N3DS mode checkbox and enable it by default
2020-04-03 17:52:31 -05:00
Marshall Mohror f14e973a27
Texture Filtering v2 (#5166)
* video_core/renderer_opengl: Move SurfaceParams into its own file

Some of its enums are needed outside of the rasterizer cache
and trying to use it caused circular dependencies.

* video_core/renderer_opengl: Overhaul the texture filter framework

This should make it less intrusive.
Now texture filtering doesn't have any mutable global state.
The texture filters now always upscale to the internal rendering resolution.
This simplifies the logic in UploadGLTexture and it simply takes the role of BlitTextures at the end of the function.
This also prevent extra blitting required when uploading to a framebuffer surface with a mismatched size.

* video_core/renderer_opengl: Use generated mipmaps for filtered textures

The filtered guest mipmaps often looked terrible.

* core/settings: Remove texture filter factor

* sdl/config: Remove texture filter factor

* qt/config: Remove texture filter factor
2020-04-02 22:42:50 -05:00
Khangaroo d26564d020
Don't dump textures that aren't a power of 2 (#5152)
* don't dump textures that aren't a power of 2

* early return

* include bitset

* revert change to comment block

* explain change
2020-04-01 23:59:24 -05:00
Hamish Milne 74c06bd13e Attempt to fix crashes with LLE applets 2020-04-02 01:43:27 +01:00
Hamish Milne d4ccce1365 Add some member initializers in thread 2020-04-02 00:14:00 +01:00
Hamish Milne 714a85119d Don't crash when getting perf stats 2020-04-01 22:50:19 +01:00
Hamish Milne 5b6ee9a6ab Clear out state before deserialization - fixes many crashes. 2020-04-01 22:06:22 +01:00
tbsp 7b93b51040 Added user IP to log events for join/left/kicked/banned 2020-04-01 08:09:28 -07:00
Hamish Milne f156fdd332 clang format fixes etc. 2020-03-31 18:27:33 +01:00
Hamish Milne 92640fc29c Code review actions (plus hopefully fix the linux CI) 2020-03-31 17:54:28 +01:00
Hamish Milne 9bd189a155 More cleaning up 2020-03-29 19:07:56 +01:00
Hamish Milne 6760ea18b6 Serialize ArchiveManager and other code review actions 2020-03-29 18:56:25 +01:00
Hamish Milne 04aa351c40 Code review - general gardening 2020-03-29 16:14:36 +01:00
Hamish Milne 8f059ae398
Apply suggestions from code review
Co-Authored-By: Mat M. <mathew1800@gmail.com>
2020-03-29 11:39:46 +01:00
B3n30 ab76b0b684 addressed review comments 2020-03-28 22:47:11 +01:00
Hamish Milne 841255cd16 Attempt to fix the linux builds 2020-03-28 21:40:18 +00:00
Hamish Milne de9ae14059 Only serialize wchar paths on windows 2020-03-28 19:29:29 +00:00
Hamish Milne 38e9eb379d
Update src/CMakeLists.txt 2020-03-28 17:23:54 +00:00
Hamish Milne 8f164a16ce Review changes 2020-03-28 17:08:27 +00:00
Hamish Milne 86600e90d3 Merge branch 'feature/savestates-2' of https://github.com/hamish-milne/citra into feature/savestates-2 2020-03-28 16:29:18 +00:00
Hamish Milne d92b3e9754 Code review changes - clarified HTTP serialization 2020-03-28 16:29:15 +00:00
Hamish Milne 26f9364062
Apply suggestions from code review
Co-Authored-By: Ben <bene_thomas@web.de>
2020-03-28 16:28:07 +00:00
Hamish Milne bbf8e876ab
Apply suggestions from code review
Co-Authored-By: Pengfei Zhu <zhupf321@gmail.com>
2020-03-28 16:26:24 +00:00
FearlessTobi b4ac1c0559 citra_qt/system: Add N3DS mode checkbox and enable it by default 2020-03-28 16:49:35 +01:00
Hamish Milne 4aab38f133 Refactored out the horrible static var in CoreTiming 2020-03-28 15:47:36 +00:00
James Rowe a6ee1bf913
HLE Audio: Increase frame position by input buffer sample rate (#5049)
* HLE Audio: Increase frame position by input buffer sample rate

Currently the frame position moves ahead by the number of samples
output, but thats a fixed number based on the 3ds native sample rate.
Instead, based on a homebrew by cyuubi and looking at the lle audio,
this sample position should be moved forward by the number of samples
from the input buffer that was read, based on the buffer's sample rate.
2020-03-28 10:39:50 -05:00
Hamish Milne 917d651a3c Added copyright notices on new files 2020-03-28 15:21:10 +00:00
Hamish Milne 025960bcdd Attempt to fix flatpak CI 2020-03-28 15:10:35 +00:00
Hamish Milne 03379b2072 Merge remote-tracking branch 'upstream/master' into feature/savestates-2 2020-03-28 12:46:24 +00:00
Hamish Milne 7049af744f Merge remote-tracking branch 'upstream/master' into feature/savestates-2 2020-03-28 12:33:21 +00:00
Hamish Milne 1ff8d002a9
Merge pull request #5025 from jroweboy/tomoscrewme
Add CPU Clock Frequency slider
2020-03-28 12:31:41 +00:00
Pengfei Zhu 3edc4a3055
service/ldr_ro: Fix CRO loading when the buffer contained multiple VM areas (#5125)
* vm_manager: Handle multiple areas in ChangeMemoryState

It is possible that a few areas have the same permisson and state, but with different backing pointers. Currently, this function assumes that only one continous area is found, but this is not always the case.

* service/ldr_ro: Handle multiple areas in VerifyBufferState

It is possible that the buffer passed from the game is made up of multiple areas with the same permisson and state but different backing pointers. Change the check to allow that.
2020-03-28 13:26:54 +01:00
Hamish Milne 232b52a27d Minor cleanup 2020-03-28 09:59:45 +00:00
Hamish Milne 3d1180ee21 DSP now works... committing this!! 2020-03-27 22:19:29 +00:00
Hamish Milne 5604613642 More merge fixes 2020-03-27 21:48:58 +00:00
Marshall Mohror 5dbf334ef1
Revert "Use immutable storage when available (#5053)" (#5151)
This reverts commit 407fd15515.
2020-03-26 19:01:18 -05:00
Vitor K 9226bffa96
Set render window to also accept focus via tabbing (Qt::StrongFocus) (#5089) 2020-03-26 13:36:49 -05:00
James Rowe 407fd15515
Use immutable storage when available (#5053)
Going to merge this because I plan to use it.
2020-03-26 12:53:55 -05:00
Marshall Mohror feb5b5a394
common: include algorithm thread_queue_list.h (#5147)
build was failing because the compiler couldn't find std::find
2020-03-25 22:23:39 -05:00
Vitor K 480d3aaf19
common: Port some changes from dolphin (#5127)
* IOFile: Make the move constructor and move assignment operator noexcept

Certain parts of the standard library try to determine whether or not a
transfer operation should either be a copy or a move. The prevalent notion
of move constructors/assignment operators is that they should not throw,
they simply move an already existing resource somewhere else.

This is typically done with 'std::move_if_noexcept'. Like the name says,
if a type's move constructor is noexcept, then the functions retrieves an
r-value reference (for move semantics), or an l-value (for copy semantics)
if it is not noexcept.

As IOFile deletes the copy constructor and copy assignment operators,
using IOFile with certain parts of the standard library can fail in
unexcepted ways (especially when used with various container
implementations). This prevents that.

* fix various instances of -1 being assigned to unsigned types

* do not assign in conditional statements

* File/IOFile: Check _tfopen_s properly

* common/file_util.cpp: address review comments

Co-authored-by: Lioncash <mathew1800@gmail.com>
Co-authored-by: Shawn Hoffman <godisgovernment@gmail.com>
Co-authored-by: Sepalani <sepalani@hotmail.fr>
2020-03-25 14:33:37 -05:00
Pengfei Zhu 25ebf03c35
Merge pull request #5120 from zhaowenlan1779/file-write
service/fs: Update file size on write
2020-03-22 01:00:31 +08:00
zhupengfei b87a15c6b2
citra_qt: Only resume the game if it wasn't paused
When dumping was stopped, the game will be paused and then resumed. However when the game was already paused this will result in the game being unexpectedly resumed, which isn't what we want.
2020-03-22 00:56:57 +08:00
zhupengfei 22bfa7b5de
ffmpeg: Misc fixes
The most important one being adding a mutex to protect the format_context. Apparently it wasn't thread safe (as one'd expect) but I didn't think about that.

Should fix some of the strange issues happening with MP4 muxers, etc.
2020-03-21 12:02:21 +08:00
Jan Beich bb3decb983 video_core: don't use NULL for non-pointer after a7d3489dc9
src/video_core/renderer_opengl/texture_filters/bicubic/bicubic.cpp:51:86: error: cannot initialize a parameter of type 'GLuint' (aka 'unsigned int') with an rvalue of type 'nullptr_t'
    glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, NULL, 0);
                                                                                     ^~~~
src/video_core/renderer_opengl/texture_filters/xbrz/xbrz_freescale.cpp:95:86: error: cannot initialize a parameter of type 'GLuint' (aka 'unsigned int') with an rvalue of type 'nullptr_t'
    glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, NULL, 0);
                                                                                     ^~~~
/usr/include/sys/_null.h:37:14: note: expanded from macro 'NULL'
 #define NULL    nullptr
                 ^~~~~~~
2020-03-19 00:10:43 +00:00
BreadFish64 37384174d9 fix formatting for media-ndk 2020-03-17 21:15:33 -05:00
B3n30 ed51f06097 fix path usage in InstallCia 2020-03-17 13:40:58 +01:00
zhang wei 3410b96400
mediandk for android (#4921) 2020-03-16 21:07:22 -05:00
Ben 590099a17a
CFG: Let GetSystemModel report model based on Settings:is_new_3ds (#5104)
* CFG: Let GetSystemModel report model based on  Settings:is_new_3ds

* Always write ol3ds console model to cfg savegame
2020-03-16 20:05:06 +01:00
Marshall Mohror a7d3489dc9
video_core: add texture filtering (#5017)
video_core: add texture filtering
2020-03-16 09:42:05 -05:00
B3n30 eaaa76b922 Adressed review comments 2020-03-15 21:51:44 +01:00
B3n30 a4457d871c Log if common key during Ticket::Load is missing 2020-03-15 21:10:26 +01:00
B3n30 1d92343344 fix more review comments 2020-03-15 19:00:26 +01:00
B3n30 2465fd423a fix review comments 2020-03-15 18:57:29 +01:00
B3n30 391580c658 fix clang-format 2020-03-15 18:50:52 +01:00
B3n30 ae4ba287d5 warn if cia contend is encrypted 2020-03-15 18:23:19 +01:00
Pengfei Zhu ad3c464e2d
Merge pull request #5116 from zhaowenlan1779/cam-vsync
service/cam: Implement Vsync interrupt events
2020-03-12 10:42:39 +08:00
Hamish Milne da3ab3d56e Merge branch 'master' into feature/savestates-2 2020-03-07 21:23:08 +00:00
Vitor Kiguchi 8e3960b409 sdl_joystick: disable the use of the hidapi drivers due to many problems caused by them.
The main problem is the loss of compatibility with some controllers, but there are also
unwanted changes to the behaviour of PS4 controllers (hardcoded lightbar color).
2020-03-05 21:23:36 -03:00
zhupengfei fc251b32b0
service/fs: Update file size on write
The file's size is stored in FileSessionSlot and retrieved when the game calls GetSize. However, it is not updated when the file is written to, which can possibly change the file size. Therefore, this can cause GetSize to return incorrect results.
2020-03-05 14:50:08 +08:00
Pengfei Zhu 7afcc0d658
Merge pull request #5106 from GovanifY/master
gdbstub: Ensure gdbstub doesn't drop packets crucial to initialization
2020-03-03 23:53:28 +08:00
zhupengfei 28014496c6
Fix incorrect port_id use 2020-03-03 12:13:45 +08:00
zhupengfei eced511382
service/cam: Implement Vsync interrupt callbacks
According to HW tests, this vsync event is signaled for activated cameras at about the same frequency as the frame rate. The last 5 vsync timings are recorded (in microseconds) and can be retrieved with the service function.

Also, corrected the default frame_rate to 15, according to HW test.

This should fix the missing camera images in certain games.
2020-03-01 17:07:43 +08:00
Vitor Kiguchi c9b6233f59 NetworkMessage: create ErrorManager class to provide a context to tr 2020-02-29 20:48:58 -03:00
Vitor Kiguchi d7f6cc3951 game_list_p.h: Specify the context for tr 2020-02-29 20:29:36 -03:00
Tobias 6d3d9f7a8a
core: Add support for N3DS memory mappings (#5103)
* core: Add support for N3DS memory mappings

* Address review comments
2020-02-29 19:48:27 +01:00
Marshall Mohror ab8cb17ab7
Merge pull request #5111 from BreadFish64/interval
video_core: use explicit interval type in texture cache
2020-02-29 11:25:04 -06:00
zhupengfei 0fe832bb49
Make the arrays const 2020-02-29 09:11:34 +08:00
BreadFish64 cfd2ab6121 video_core: use explicit interval type in texture cache
The default is discrete_interval which has dynamic open-ness.
We only use right_open intervals anyway. In theory this could allow some compile-time optimizations.
2020-02-28 13:45:19 -06:00
zhupengfei 9d57325a8b
core/file_sys: Add alternative override pathes for ExeFS files
You can now directly place ExeFS overrides/patches inside the mod folder (instead of the exefs subfolder). This allows us to have drop-in compatibility with Luma3DS mods.
2020-02-28 23:36:17 +08:00
zhupengfei a50ba7192b
citra_qt: Split options into 'Specific' and 'Generic'
For easier usage. Also made the option list sortable.
2020-02-28 18:26:20 +08:00
zhupengfei f3e9780d10
ffmpeg: Avoid listing child classes for AVFormatContext and AVCodecContext
As they actually have every encoder/format as their child classes, this will result in a lot of extra options being added.
2020-02-28 16:40:13 +08:00
zhupengfei a28eac08ae
ffmpeg: Properly handle non-planar formats
For non-planar formats, only the first data plane is used. Therefore,
they need to be handled differently in certain places.
2020-02-27 16:55:20 +08:00
zhupengfei c9c26955d2
dumping_dialog: Prompt when path is empty 2020-02-27 16:55:19 +08:00
zhupengfei 8868d4db86
citra_qt: Fixed a bug when dumping dialog is cancelled or closed 2020-02-27 16:55:18 +08:00
zhupengfei c38202bd30
dumping_dialog: Add a line edit for the options
So that users can just paste a set of parameters they found elsewhere.
2020-02-27 16:55:18 +08:00
zhupengfei 0a4be71913
citra_qt: Add simple video dumping error reporting
This is just a simple message that tells the user to refer to the log
2020-02-27 16:55:17 +08:00
zhupengfei 71c64c2617
citra_qt: Use the new dumping dialog
Note that it is only compiled in for FFmpeg video dumper enabled builds
2020-02-27 16:55:16 +08:00
zhupengfei f82ba41fe0
citra_qt/dumping: Add dumping dialog
This is the main dialog of video dumping. This dialog allows the user to set output format, output path, video/audio encoder and video/audio bitrate.

When a format is selected, the list of video and audio encoders are updated. Only encoders of codecs that can be contained in the format is shown.
2020-02-27 16:55:16 +08:00
zhupengfei e769d90aa8
citra_qt/dumping: Add options dialog
This is a simple list of name-value pairs of options. Users can double-click on an option to set or modify its value.
2020-02-27 16:55:15 +08:00
zhupengfei 94bc09d3ae
citra_qt/dumping: Add option set dialog
This dialog allows changing the value and unsetting one option. There are three possible variants of this dialog:

1. The LineEdit layout. This is used for normal options like string and duration, and just features a textbox for the user to type in whatever they want to set.

2. The ComboBox layout. This is used when there are named constants for an option, or when the option accepts an enum value like sample_format or pixel_format. A description will be displayed for the currently selected named constant. The user can also select 'custom' and type in their own value.

3. The CheckBox-es layout. This is used for flags options. A checkbox will be displayed for each named constant and the user can tick the flags they want to set.
2020-02-27 16:55:14 +08:00
zhupengfei 8c4bcf9f59
ffmpeg: Add ListFormats and ListEncoders
These two functions allow the frontend to get a list of encoders/formats and their specific options.

Retrieving the options is harder than it sounds due to FFmpeg's strange AVClass and AVOption system. For example, for integer and flags options, 'named constants' can be set. They are of type `AV_OPT_TYPE_CONST` and are categoried according to the `unit` field. An option can recognize all constants of the same `unit`.
2020-02-27 16:55:14 +08:00
zhupengfei 4161163d9c
ffmpeg: Correctly handle sample rates
Previously, we just used the native sample rate for encoding. However, some encoders like libmp3lame doesn't support it. Therefore, we now use a supported sample rate (preferring the native one if possible).

FFmpeg requires audio data to be sent in a sequence of frames, each containing the same specific number of samples. Previously, we buffered input samples in FFmpegBackend. However, as the source and destination sample rates can now be different, we should buffer resampled data instead. swresample have an internal input buffer, so we now just forward all data to it and 'gradually' receive resampled data, at most one frame_size at a time. When there is not enough resampled data to form a frame, we will record the current offset and request for less data on the next call.

Additionally, this commit also fixes a flaw. When an encoder supports variable frame sizes, its frame size is reported to be 0, which breaks our buffering system. Now we treat variable frame size encoders as having a frame size of 160 (the size of a HLE audio frame).
2020-02-27 16:55:13 +08:00
zhupengfei 8b9c01ded9
ffmpeg: Correctly handle sample format
We previously assumed that the first preferred sample format is planar, but that may not be true for all codecs. Instead we should find a supported sample format that is planar.
2020-02-27 16:55:12 +08:00
zhupengfei 17461b5d11
ffmpeg: Correctly set pixel format
While YUV420P is widely used, not all encoders accept it (e.g. Intel QSV only accepts NV12). We should use the codec's preferred pixel format instead as we need to rescale the frame anyway.
2020-02-27 16:55:11 +08:00
zhupengfei 834da14329
citra, citra_qt: Add video dumping config read/write
The default values are VP9/libvorbis just like before. The default configuration is provided for VP9
2020-02-27 16:55:11 +08:00
zhupengfei 016f8be0b8
core/dumping: Allow format/encoder selection+configuration
The ParamPackage got modified so that we can use range-based for on it
2020-02-27 16:55:10 +08:00
zhupengfei 3c6765e87c
core: Properly std::move things around 2020-02-27 16:55:09 +08:00
zhupengfei 06a0d86e9c
video_core, core: Move pixel download to its own thread
This uses the mailbox model to move pixel downloading to its own thread, eliminating Nvidia's warnings and (possibly) making use of GPU copy engine.

To achieve this, we created a new mailbox type that is different from the presentation mailbox in that it never discards a rendered frame.

Also, I tweaked the projection matrix thing so that it can just draw the frame upside down instead of having the CPU flip it.
2020-02-27 16:55:08 +08:00
B3n30 ebeea43fb8 Load RSA slot_0 data from bootrom; load and decrypt data from native firm for NCCHSecure2 keyslot 2020-02-26 16:43:53 +01:00
Pengfei Zhu 5b54a99f96
Merge pull request #5088 from zhaowenlan1779/layered-fs
core/file_sys: LayeredFS support
2020-02-25 07:48:10 +08:00
Gauvain "GovanifY" Roussel-Tarbouriech 8fedd5c240 gdbstub: small logic bug fix with defer_start 2020-02-24 14:30:24 +01:00
Gauvain "GovanifY" Roussel-Tarbouriech d8bb37fc2f gdbstub: Ensure gdbstub doesn't drop packets crucial to initialization 2020-02-23 21:37:40 +01:00
Pengfei Zhu 1dfcb0937e
Merge pull request #5105 from GovanifY/master
ipc_debugger: Fixing NULL ptr call on multiple clear
2020-02-23 22:31:09 +08:00
liushuyu cff00f38c5
Implements fdk_aac decoder (#4764)
* audio_core: dsp_hle: implements fdk_aac decoder

* audio_core: dsp_hle: clean up and add comments

* audio_core: dsp_hle: move fdk include to cpp file

* audio_core: dsp_hle: detects broken fdk_aac...

... and refuses to initialize if that's the case

* audio_core: dsp_hle: fdk_aac: address comments...

... and rebase commits

* fdk_decoder: move fdk header to cpp file
2020-02-23 11:01:21 +01:00
zhupengfei 8eacfceb6a
layered_fs: Fix missing file size update
This was a silly typo from a previous change.
2020-02-23 15:22:41 +08:00
Marshall Mohror 3ae1b5e2d6
Merge pull request #5047 from BreadFish64/patch-3
fix c++ standard flag for msvc
2020-02-22 21:18:08 -06:00
Gauvain "GovanifY" Roussel-Tarbouriech 2a616fcc5e ipc_debugger: Fixing NULL ptr call on multiple clear 2020-02-23 03:54:29 +01:00
James Rowe 59c159e8a0
Merge pull request #5087 from FearlessTobi/port-3374
Port yuzu-emu/yuzu#3374: "input_common/udp: Minor changes"
2020-02-22 14:54:45 -07:00
Marshall Mohror 688e44bc8b
videocore/renderer_opengl/gl_rasterizer_cache: Move bits per pixel table out of function (#5101)
* videocore/renderer_opengl/gl_rasterizer_cache: Move bits per pixel table out of function

GCC and MSVC copy the table at runtime with the old implementation, which is wasteful and prevents inlining. Unfortunately, static constexpr variables are not legal in constexpr functions, so the table has to be external.
Also replaced non-standard assert with DEBUG_ASSERT_MSG.

* fix case of table name in assert

* set table to private
2020-02-22 14:37:42 -07:00
James Rowe 276d56ca9b Add CPU Clock Frequency slider
This slider affects the number of cycles that the guest cpu emulation
reports that have passed since the last time slice. This option scales
the result returned by a percentage that the user selects. In some games
underclocking the CPU can give a major speedup. Exposing this as an
option will give users something to toy with for performance, while also
potentially enhancing games that experience lag on the real console
2020-02-21 16:03:07 -07:00
Marshall Mohror 990d27f4f9 Remove C++ standard flag 2020-02-21 16:45:02 -06:00
Ben 55ec7031cc
Core timing 2.0 (#4913)
* Core::Timing: Add multiple timer, one for each core

* revert clang-format; work on tests for CoreTiming

* Kernel:: Add support for multiple cores, asserts in HandleSyncRequest because Thread->status == WaitIPC

* Add some TRACE_LOGs

* fix tests

* make some adjustments to qt-debugger, cheats and gdbstub(probably still broken)

* Make ARM_Interface::id private, rework ARM_Interface ctor

* ReRename TimingManager to Timing for smaler diff

* addressed review comments
2020-02-21 19:31:32 +01:00
Ben e3dbdcbdff
HTTP_C::Implement Context::MakeRequest (#4754)
* HTTP_C::Implement Context::MakeRequest

* httplib: Add add_client_cert_ASN1 and set_verify

* HTTP_C: Fix request methode strings case in MakeRequest

* HTTP_C: clang-format and cleanups

* HTTP_C: Add comment about async in BeginRequest and BeginRequestAsync

* Update httplib to contain all the changes we need; adapt http_c and web_services to the changes in httplib; addressed minor review comments

* Add android-ifaddrs
2020-02-21 19:04:04 +01:00
Marshall Mohror 996f1546b2
core: Remove outdated MSVC workarounds (#5099)
* core/hw/gpu: Remove outdated MSVC workarounds

* core/hle/service/hid: Remove MSVC workaround
2020-02-20 13:40:21 -06:00
zhupengfei a487016cb4
core, citra_qt: Implement a save states file format and slot UI
10 slots are offered along with 'Save to Oldest Slot' and 'Load from Newest Slot'.

The savestate format is similar to the movie file format. It is called CST (Citra SavesTate), and is basically a 0x100 byte header (consisting of magic, revision, creation time and title ID) followed by Zstd compressed raw savestate data.

The savestate files are saved to the `states` folder in Citra's user folder. The files are named like `<Title ID>.<Slot ID>.cst`.
2020-02-18 13:19:52 +08:00
zhupengfei 7d880f94db
Add simple zstd compression
Just a simple default compression is able to shrink savestate file size from ~160MB to ~20MB.
2020-02-16 23:25:30 +08:00
Vitor K 4991c0121a
Remove duplicate code from the migration of frame limit to gene… (#5091) 2020-02-15 14:38:20 +01:00
zhupengfei 57efc41973
service/cecd: Add missing SessionData serialization 2020-02-14 17:15:08 +08:00
zhupengfei 7e8041df28
kernel/timer: Add missing base object 2020-02-14 17:13:53 +08:00
Hamish Milne 246ae84a52 Pretty sure ARM/Thread serialization works now 2020-02-13 17:42:12 +08:00
Hamish Milne c983528862 Reworked DSP serialization 2020-02-13 17:42:12 +08:00
James Rowe 55c75b5e3e Add ClearAll to rasterizer cache for fully wiping the cache on save/load 2020-02-13 17:42:11 +08:00
James Rowe 3e34ad6890 Hack: Workaround crash when loading state and gyro is used 2020-02-13 17:42:11 +08:00
Hamish Milne 0effb229cd Fix geometry pipeline; attempt to fix motion controls 2020-02-13 17:42:10 +08:00
Hamish Milne 35c3ca995c Fixed a bug (??) in arm_dynarmic where PageTableChanged could reset the CPU context 2020-02-13 17:42:10 +08:00
Hamish Milne b2370ea353 Fixed setting the right DSP service on deserialization 2020-02-13 17:42:10 +08:00
Hamish Milne 2217b3558d Fixed file services serialization 2020-02-13 17:42:10 +08:00
Hamish Milne c24ea0f0ee Serialize core timing 2020-02-13 17:42:09 +08:00
Hamish Milne 8abc5525be Added Signals; more runtime fixes 2020-02-13 17:42:09 +08:00
Hamish Milne e4f05884c3 Fixed serialization runtime exceptions 2020-02-13 17:42:08 +08:00
Hamish Milne ca971ff31f Serialize file/directory services 2020-02-13 17:42:08 +08:00
Hamish Milne 9525d81344 More base-derived fixes 2020-02-13 17:42:07 +08:00
Hamish Milne 996aba39fe Correct exports; add some file serialization; fix service base object serialization 2020-02-13 17:42:07 +08:00
Hamish Milne f2de70c3fb Fix crash bugs 2020-02-13 17:42:06 +08:00
Hamish Milne 116d22d562 Refactor out the wakeup_callback function pointer 2020-02-13 17:42:05 +08:00
Hamish Milne 7019561fd5 Bind NWM_UDS service in the constructor 2020-02-13 17:42:05 +08:00
Hamish Milne 96432589bd Use shared_ptr for PageTable 2020-02-13 17:42:04 +08:00
Hamish Milne e4afa8e512 Make the tests pass 2020-02-13 17:42:04 +08:00
Hamish Milne 65d96bf6c1 Changed u8* to MemoryRef 2020-02-13 17:42:00 +08:00
Hamish Milne cf985631e0 Minor tidying up 2020-02-13 17:41:27 +08:00
Hamish Milne 26e90a99cd Added basic UI; misc memory fixes 2020-02-13 17:41:27 +08:00
Hamish Milne 558e710e17 Finished archives; remove pod.h 2020-02-13 17:41:26 +08:00
Hamish Milne 2bf5b46460 Basic archive backend serialization 2020-02-13 17:41:26 +08:00
Hamish Milne 2d2c7218ef Serialize CECD, CFG services 2020-02-13 17:41:25 +08:00
Hamish Milne ef2e503281 Serialize QTM, Y2R services 2020-02-13 17:41:24 +08:00
Hamish Milne 92857efca4 Serialize PTM service 2020-02-13 17:41:24 +08:00
Hamish Milne f5e2f873b0 Serialize NWM service 2020-02-13 17:41:24 +08:00
Hamish Milne 571b1062f0 Serialize NIM, PS, PXI, SOC, SSL services 2020-02-13 17:41:23 +08:00
Hamish Milne 2409ee39cb Serialize IR, MVD, NDM, NEWS, NFC 2020-02-13 17:41:23 +08:00
Hamish Milne 3d6e372f96 More clang format fixes. Really need to standardise the version of this 2020-02-13 17:41:23 +08:00
Hamish Milne 01ec2e8a67 Serialize MIC service 2020-02-13 17:41:22 +08:00
Hamish Milne e3c0211b74 Fix clang format 2020-02-13 17:41:22 +08:00
Hamish Milne eb67167b7c Serialize IR service 2020-02-13 17:41:22 +08:00
Hamish Milne 8bd3e8cd27 Serialize HTTP service 2020-02-13 17:41:22 +08:00
Hamish Milne 74361fa3fb Serialize HID service 2020-02-13 17:41:21 +08:00
Hamish Milne 30494c06a4 Serialize GSP service 2020-02-13 17:41:21 +08:00
Hamish Milne 9877bf7d48 Change how the boost target works; disable external warnings in MSVC 2020-02-13 17:41:20 +08:00
Hamish Milne d041901a30 Some more CI fixes 2020-02-13 17:41:20 +08:00
Hamish Milne c7106e232f Fix a bug on mingw 2020-02-13 17:41:16 +08:00
Hamish Milne d6862c2fca Some CI fixes 2020-02-13 17:40:52 +08:00
Hamish Milne 7b846ffa98 clang-format fixes 2020-02-13 17:39:15 +08:00
Hamish Milne d482fb359c Attempting to fix mingw on windows 2020-02-13 17:38:25 +08:00
Hamish Milne 6917eaf53b Use load_construct_data for kernel objects 2020-02-13 17:38:25 +08:00
Hamish Milne 3ed8d95866 Serialize FS service; some compiler fixes 2020-02-13 17:38:24 +08:00
Hamish Milne d1096de245 Added FRD service serialization 2020-02-13 17:38:24 +08:00
Hamish Milne 4354179156 Added ERR service serialization 2020-02-13 17:38:23 +08:00
Hamish Milne 452ae2e371 Added DSP service serialization 2020-02-13 17:38:23 +08:00
Hamish Milne 30fe2bfe38 Added DLP service serialization 2020-02-13 17:38:23 +08:00
Hamish Milne a0c3b91785 Added CSND serialization 2020-02-13 17:38:23 +08:00
Hamish Milne 17b9cbefef CAM service serialization 2020-02-13 17:38:22 +08:00
Hamish Milne 1185d62792 BOSS service serialization 2020-02-13 17:38:22 +08:00
Hamish Milne 5265c79056 APT service serialization 2020-02-13 17:38:21 +08:00
Hamish Milne 3e752002c4 Replace g_kernel with Core::Global etc. 2020-02-13 17:38:21 +08:00
Hamish Milne e707685c2a Serialize AM services 2020-02-13 17:38:20 +08:00
Hamish Milne 89e4e49a63 Finished AC and ACT service serialization 2020-02-13 17:38:20 +08:00
Hamish Milne 3fd5c431f1 Service serialization framework; done AC 2020-02-13 17:38:20 +08:00
Hamish Milne ac0337d8df Started IPC services serialization 2020-02-13 17:38:19 +08:00
Hamish Milne 7a5bde0b44 Serialize service manager, server prt 2020-02-13 17:38:19 +08:00
Hamish Milne 4f95575d41 Serialize some more kernel objects 2020-02-13 17:38:18 +08:00
Hamish Milne 8c81500dee Serialize kernel/hle/memory 2020-02-13 17:38:18 +08:00
Hamish Milne 050c3bdee5 Serialize primitive_assembly 2020-02-13 17:38:18 +08:00
Hamish Milne c284192a87 Serialize geometry_pipeline 2020-02-13 17:38:17 +08:00
Hamish Milne acc89b2251 Fixed an include 2020-02-13 17:38:17 +08:00
Hamish Milne dc0d1ebc95 Added a TODO 2020-02-13 17:38:17 +08:00
Hamish Milne f557d26b40 Added CPU, mutex, process, thread, timer 2020-02-13 17:38:16 +08:00
Hamish Milne 06891d9454 Added client/server objects 2020-02-13 17:38:16 +08:00
Hamish Milne 5035e68dad Added derived kernel objects 2020-02-13 17:38:15 +08:00
Hamish Milne f79c9668a3 Added shader state; WIP kernel objects 2020-02-13 17:38:10 +08:00
Hamish Milne 45788b9c82 Added shader state serialization 2020-02-13 17:34:16 +08:00
Hamish Milne 6f00976ab5 video_core serialization 2020-02-13 17:34:16 +08:00
Hamish Milne ee2cae2093 Added core serialization 2020-02-13 17:34:13 +08:00
Hamish Milne dc04774ece Added POD serialization 2020-02-13 17:27:51 +08:00
Hamish Milne 6940c99ed6 Added boost serialization 2020-02-13 17:27:50 +08:00
Tobias f106e76132
Port yuzu commit: "yuzu/CMakeLists: Disable implicit QString co… (#5074)
* yuzu/CMakeLists: Disable implicit QString conversions

Now that all of our code is compilable with implicit QString
conversions, we can enforce it at compile-time by disabling them.

Co-Authored-By: Mat M. <lioncash@users.noreply.github.com>

* citra_qt: Remove lots of implicit QString conversions

Co-authored-by: Mat M. <mathew1800@gmail.com>
2020-02-11 13:12:09 +01:00
zhupengfei 4273b967b5
core/file_sys: Do not apply the same mods to DLCs
Now you can apply separate mods to DLCs and mods for the original title won't be applied.
2020-02-11 14:03:07 +08:00
FearlessTobi 4c2c27046d Fix compilation 2020-02-10 12:10:42 +01:00
Pengfei Zhu b53b4bfb17 Merge pull request #5062 from FearlessTobi/port-3173
Port yuzu-emu/yuzu#3173: "common: SPSCQueue: Notify after incrementing queue size."
2020-02-10 12:10:45 +08:00
zhupengfei b81c9bd738
fix clang format 2020-02-10 07:41:31 +08:00
Lioncash 7362fe48ac input_common/udp: Add missing override specifiers
Prevents trivial warnings and ensures interfaces are properly
maintained between the base class.
2020-02-09 23:00:02 +01:00