Permalink
Switch branches/tags
Nothing to show
Commits on Dec 15, 2018
  1. Merge pull request #1902 from lioncash/audio

    bunnei committed Dec 15, 2018
    audio_core: Make g_sink_details internally linked
Commits on Dec 14, 2018
  1. Merge pull request #1899 from lioncash/state

    bunnei committed Dec 14, 2018
    vm_manager/svc: Modify MemoryState enum, and correct error handling for svcQueryMemory
  2. Merge pull request #1871 from lioncash/move

    bunnei committed Dec 14, 2018
    yuzu/wait_tree: Pass QString by value and std::move in the initializer list for WaitTreeText
  3. Merge pull request #1900 from lioncash/wrapper

    bunnei committed Dec 14, 2018
    svc_wrap: Correct register index for a wrapper specialization
Commits on Dec 13, 2018
  1. audio_core: Make g_sink_details internally linked

    lioncash committed Dec 13, 2018
    We can hide the direct array from external view and instead provide
    functions to retrieve the necessary info. This has the benefit of
    completely hiding the makeup of the SinkDetails structure from the rest
    of the code.
    
    Given that this makes the array hidden, we can also make the array
    constexpr by altering the members slightly. This gets rid of several
    static constructor calls related to std::vector and std::function.
    
    Now we don't have heap allocations here that need to occur before the
    program can even enter main(). It also has the benefit of saving a
    little bit of heap space, but this doesn't matter too much, since the
    savings in that regard are pretty tiny.
Commits on Dec 12, 2018
  1. Merge pull request #1890 from jschmer/master

    lioncash committed Dec 12, 2018
    Fix Process object leak on emulation stop
  2. svc: Enable svcQueryProcessMemory

    lioncash committed Dec 12, 2018
    svcQueryProcessMemory is trivial to implement, given all the behavior
    necessary for it is present, it just needs a handler for it.
  3. svc: Write out the complete MemoryInfo structure in QueryProcessMemory

    lioncash committed Dec 12, 2018
    In the previous change, the memory writing was moved into the service
    function itself, however it still had a problem, in that the entire
    MemoryInfo structure wasn't being written out, only the first 32 bytes
    of it were being written out. We still need to write out the trailing
    two reference count members and zero out the padding bits.
    
    Not doing this can result in wrong behavior in userland code in the following
    scenario:
    
    MemoryInfo info;                 // Put on the stack, not quaranteed to be zeroed out.
    svcQueryMemory(&info, ...);
    
    if (info.device_refcount == ...) // Whoops, uninitialized read.
    
    This can also cause the wrong thing to happen if the user code uses
    std::memcmp to compare the struct, with another one (questionable, but
    allowed), as the padding bits are not guaranteed to be a deterministic
    value. Note that the kernel itself also fully zeroes out the structure
    before writing it out including the padding bits.
  4. svc: Handle memory writing explicitly within QueryProcessMemory

    lioncash committed Dec 12, 2018
    Moves the memory writes directly into QueryProcessMemory instead of
    letting the wrapper function do it. It would be inaccurate to allow the
    handler to do it because there's cases where memory shouldn't even be
    written to. For example, if the given process handle is invalid.
    
    HOWEVER, if the memory writing is within the wrapper, then we have no
    control over if these memory writes occur, meaning in an error case, 68
    bytes of memory randomly get trashed with zeroes, 64 of those being
    written to wherever the memory info address points to, and the remaining
    4 being written wherever the page info address points to.
    
    One solution in this case would be to just conditionally check within
    the handler itself, but this is kind of smelly, given the handler
    shouldn't be performing conditional behavior itself, it's a behavior of
    the managed function. In other words, if you remove the handler from the
    equation entirely, does the function still retain its proper behavior?
    In this case, no.
    
    Now, we don't potentially trash memory from this function if an invalid
    query is performed.
  5. vm_manager: Correct ordering of last two struct members of MemoryInfo

    lioncash committed Dec 12, 2018
    These should be swapped.
  6. svc_wrap: Correct register index for a wrapper specialization

    lioncash committed Dec 12, 2018
    This would result in svcSetMemoryAttribute getting the wrong value for
    its third parameter. This is currently fine, given the service function
    is stubbed, however this will be unstubbed in a future change, so this
    needs to change.
  7. vm_manager: Amend the returned values for invalid memory queries in Q…

    lioncash committed Dec 12, 2018
    …ueryMemory()
    
    The kernel returns a memory info instance with the base address set to
    the end of the address space, and the size of said block as
    0 - address_space_end, it doesn't set both of said members to zero.
  8. vm_manager: Migrate memory querying to the VMManager interface

    lioncash committed Dec 12, 2018
    Gets rid of the need to directly access the managed VMAs outside of the
    memory manager itself just for querying memory.
  9. vm_manager: Migrate MemoryInfo and PageInfo to vm_manager.h

    lioncash committed Dec 12, 2018
    Gets the two structures out of an unrelated header and places them with
    the rest of the memory management code.
    
    This also corrects the structures. PageInfo appears to only contain a
    32-bit flags member, and the extra padding word in MemoryInfo isn't
    necessary.
  10. vm_manager: Amend MemoryState enum members

    lioncash committed Dec 12, 2018
    Amends the MemoryState enum to use the same values like the actual
    kernel does. Also provides the necessary operators to operate on them.
    This will be necessary in the future for implementing
    svcSetMemoryAttribute, as memory block state is checked before applying
    the attribute.
  11. Fix Process object leak on emulation stop

    jschmer committed Dec 10, 2018
    The Process object kept itself alive indefinitely because its handle_table
    contains a SharedMemory object which owns a reference to the same Process object,
    creating a circular ownership scenario.
    
    Break that up by storing only a non-owning pointer in the SharedMemory object.
  12. Merge pull request #1891 from DarkLordZach/istorage-getsize

    lioncash committed Dec 12, 2018
    fsp_srv: Implement IStorage::GetSize
  13. Merge pull request #1893 from lioncash/warn

    bunnei committed Dec 12, 2018
    gl_shader_cache: Resolve truncation compiler warning
  14. Merge pull request #1895 from lioncash/uninit

    bunnei committed Dec 12, 2018
    patch_manager: Prevent use of a dangling pointer within PatchRomFS
Commits on Dec 11, 2018
  1. Merge pull request #1877 from heapo/audio_interp

    bunnei committed Dec 11, 2018
    Perf: Avoid (expensive) audio interpolation when sample rates already match
  2. Merge pull request #1888 from marcosvitali/glFrontFacing

    bunnei committed Dec 11, 2018
    gl_shader_decompiler: IPA fix FrontFacing.
  3. patch_manager: Prevent use of a dangling pointer within PatchRomFS

    lioncash committed Dec 11, 2018
    fmt::format() returns a std::string instance by value, so calling
    .c_str() on it here is equivalent to doing:
    
    auto* ptr = std::string{}.c_str();
    
    The data being pointed to isn't guaranteed to actually be valid anymore
    after that expression ends. Instead, we can just take the string as is,
    and provide the necessary formatting parameters.
  4. gl_shader_cache: Dehardcode constant in CalculateProgramSize()

    lioncash committed Dec 11, 2018
    This constant is related to the size of the instruction.
  5. gl_shader_cache: Resolve truncation compiler warning

    lioncash committed Dec 11, 2018
    The previous code would cause a warning, as it was truncating size_t
    (64-bit) to a u32 (32-bit) implicitly.
  6. Merge pull request #1846 from lioncash/dir

    bunnei committed Dec 11, 2018
    file_sys/directory: Amend path buffer size for directory entries
  7. Merge pull request #1819 from DarkLordZach/disable-addons

    bunnei committed Dec 11, 2018
    patch_manager: Add support for disabling patches
  8. Merge pull request #1887 from FearlessTobi/port-4476

    bunnei committed Dec 11, 2018
    Port citra-emu/citra#4476: "web_service: move telemetry condition from TelemetrySession constructor to destructor"
  9. Merge pull request #1883 from lioncash/log-fsp

    bunnei committed Dec 11, 2018
    service/fsp_srv: Correct returned value in GetGlobalAccessLogMode()
  10. Merge pull request #1885 from lioncash/data_id

    bunnei committed Dec 11, 2018
    file_sys/save_data_factory: Update SaveDataSpaceId enum
Commits on Dec 10, 2018
  1. fsp_srv: Implement IStorage::GetSize

    DarkLordZach committed Dec 10, 2018
    Takes no input and returns the size as a u64. Needed by Katamari Damacy Reroll to boot.
  2. Merge pull request #1740 from FernandoS27/shader_props

    bunnei committed Dec 10, 2018
    Implemented Shader Unique Identifiers
  3. Merge pull request #1872 from lioncash/proc-info

    Hexagon12 committed Dec 10, 2018
    kernel/process: Set ideal core from metadata
  4. Merge pull request #1880 from DarkLordZach/cache-storage

    Hexagon12 committed Dec 10, 2018
    savedata_factory: Add CacheStorage and delete TemporaryStorage on boot
  5. Merge pull request #1876 from lioncash/vma

    bunnei committed Dec 10, 2018
    vm_manager: Make vma_map private
  6. Merge pull request #1862 from marcosvitali/tlds

    bunnei committed Dec 10, 2018
    gl_shader_decompiler: TLDS/TLD4/TLD4S Reworked reflecting the source registers, bugs fixed and modularize.