mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-24 03:32:50 +01:00
Remove whitespace
This commit is contained in:
parent
75fbb3d551
commit
5bb89328d0
12
.github/ISSUE_TEMPLATE/1-regression-report.yml
vendored
12
.github/ISSUE_TEMPLATE/1-regression-report.yml
vendored
@ -29,8 +29,8 @@ body:
|
||||
Please provide the _exact_ build (or commit) information that introduced the regression you're reporting.
|
||||
* Please see [How to find the build that caused a regression](https://wiki.rpcs3.net/index.php?title=Help:Using_different_versions_of_RPCS3#How_to_find_the_build_that_caused_a_regression.3F) in our wiki.
|
||||
* You can find [History of RPCS3 builds](https://rpcs3.net/compatibility?b) here.
|
||||
|
||||
Make sure you're running with settings as close to default as possible
|
||||
|
||||
Make sure you're running with settings as close to default as possible
|
||||
* **Do NOT enable any emulator game patches when reporting issues**
|
||||
* Only change settings that are required for the game to work
|
||||
- type: input
|
||||
@ -48,7 +48,7 @@ body:
|
||||
Obtaining the log file:
|
||||
* Run the game until you find the regression.
|
||||
* Completely close RPCS3 and locate the log file.
|
||||
|
||||
|
||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||
* On Windows it will be in the RPCS3 directory near the executable
|
||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||
@ -70,21 +70,21 @@ body:
|
||||
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
|
||||
* Captures will be stored in RPCS3 folder → captures.
|
||||
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
|
||||
- type: textarea
|
||||
- type: textarea
|
||||
id: captures
|
||||
attributes:
|
||||
label: Attach capture files for visual issues
|
||||
description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
- type: textarea
|
||||
id: system-info
|
||||
attributes:
|
||||
label: System configuration
|
||||
description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
- type: textarea
|
||||
id: other-details
|
||||
attributes:
|
||||
label: Other details
|
||||
|
12
.github/ISSUE_TEMPLATE/2-bug-report.yml
vendored
12
.github/ISSUE_TEMPLATE/2-bug-report.yml
vendored
@ -28,13 +28,13 @@ body:
|
||||
attributes:
|
||||
value: |
|
||||
# Log files
|
||||
|
||||
|
||||
Provide a log file that includes the bug you're reporting.
|
||||
|
||||
|
||||
Obtaining the log file:
|
||||
* Run the game until you find the regression.
|
||||
* Completely close RPCS3 and locate the log file.
|
||||
|
||||
|
||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||
* On Windows it will be in the RPCS3 directory near the executable
|
||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||
@ -55,21 +55,21 @@ body:
|
||||
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
|
||||
* Captures will be stored in RPCS3 folder → captures.
|
||||
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
|
||||
- type: textarea
|
||||
- type: textarea
|
||||
id: captures
|
||||
attributes:
|
||||
label: Attach capture files for visual issues
|
||||
description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
- type: textarea
|
||||
id: system-info
|
||||
attributes:
|
||||
label: System configuration
|
||||
description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
- type: textarea
|
||||
id: other-details
|
||||
attributes:
|
||||
label: Other details
|
||||
|
2
.github/ISSUE_TEMPLATE/3-feature-request.yml
vendored
2
.github/ISSUE_TEMPLATE/3-feature-request.yml
vendored
@ -29,7 +29,7 @@ body:
|
||||
* Why your feature is important to RPCS3.
|
||||
* If the feature is implemented in other projects, attach screenshots.
|
||||
* If this feature is something that a game is trying to use, upload a log file for it.
|
||||
|
||||
|
||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||
* On Windows it will be in the RPCS3 directory near the executable
|
||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||
|
@ -756,7 +756,7 @@ static usz apply_modification(std::basic_string<u32>& applied, const patch_engin
|
||||
// NOP filled
|
||||
std::fill_n(vm::get_super_ptr<u32>(addr), p.value.long_value, 0x60000000);
|
||||
|
||||
// Check if already registered by previous code allocation
|
||||
// Check if already registered by previous code allocation
|
||||
if (relocate_instructions_at != addr)
|
||||
{
|
||||
// Register code
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
TheMitoSan Dark-Theme for RPCS3
|
||||
/*
|
||||
TheMitoSan Dark-Theme for RPCS3
|
||||
Based on Kuroi (Dark) by Ani
|
||||
by themitosan @ twitter.com/themitosan
|
||||
Ani @ https://github.com/AniLeo
|
||||
@ -135,7 +135,7 @@ QPushButton::disabled {
|
||||
}
|
||||
|
||||
QPushButton::pressed {
|
||||
background-color: #333;
|
||||
background-color: #333;
|
||||
}
|
||||
|
||||
/* Log and Debugger borders */
|
||||
@ -193,7 +193,7 @@ QListWidget::item:hover {
|
||||
}
|
||||
|
||||
/* Pad Settings: Controller Image */
|
||||
QLabel#l_controller {
|
||||
QLabel#l_controller {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
@ -230,8 +230,8 @@ QLabel#color_button {
|
||||
}
|
||||
|
||||
/* Search bar on main toolbar */
|
||||
QLineEdit#mw_searchbar {
|
||||
margin-left: 0.7em;
|
||||
QLineEdit#mw_searchbar {
|
||||
margin-left: 0.7em;
|
||||
color: #ecf0f1;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
Envy theme for RPCS3 by drysalter (https://github.com/drysalter)
|
||||
03/04/2019
|
||||
*/
|
||||
@ -19,7 +19,7 @@ Candy Red: #ff007a
|
||||
Yellow: #f2d571
|
||||
Fuchsia: #ff00ff
|
||||
Orange: #ff6000
|
||||
Cyan: #3498d8
|
||||
Cyan: #3498d8
|
||||
|
||||
*/
|
||||
|
||||
@ -209,7 +209,7 @@ QRadioButton::indicator:unchecked {
|
||||
}
|
||||
|
||||
QRadioButton::indicator:disabled {
|
||||
background-color: #4d5058;
|
||||
background-color: #4d5058;
|
||||
}
|
||||
|
||||
/* Combo Boxes */
|
||||
@ -272,7 +272,7 @@ QSlider::handle:horizontal {
|
||||
border: 1px solid #5c5c5c;
|
||||
border-radius: 0.1em;
|
||||
width: 18px;
|
||||
margin: -2px 2;
|
||||
margin: -2px 2;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:hover {
|
||||
@ -335,7 +335,7 @@ QPushButton:disabled {
|
||||
}
|
||||
|
||||
QPushButton::pressed {
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d3038, stop: 1 #2d3038);
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d3038, stop: 1 #2d3038);
|
||||
}
|
||||
|
||||
/* Spinboxes */
|
||||
@ -479,7 +479,7 @@ QListWidget::indicator:disabled {
|
||||
}
|
||||
|
||||
/* Pad Settings: Controller Image */
|
||||
QLabel#l_controller {
|
||||
QLabel#l_controller {
|
||||
color: #8cf944;
|
||||
}
|
||||
|
||||
@ -505,7 +505,7 @@ QLabel#color_button {
|
||||
}
|
||||
|
||||
/* Search bar on main toolbar */
|
||||
QLineEdit#mw_searchbar {
|
||||
QLineEdit#mw_searchbar {
|
||||
color: #ecf0f1;
|
||||
background-color: #2d3038;
|
||||
border: 1px solid #f8f8f8;
|
||||
@ -513,14 +513,14 @@ QLineEdit#mw_searchbar {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
QLineEdit#mw_searchbar:hover {
|
||||
QLineEdit#mw_searchbar:hover {
|
||||
color: #ecf0f1;
|
||||
background-color: #2d3038;
|
||||
border: 1px solid #8cf944;
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
QLineEdit#mw_searchbar:focus {
|
||||
QLineEdit#mw_searchbar:focus {
|
||||
border: 1px solid #8cf944;
|
||||
}
|
||||
|
||||
@ -566,7 +566,7 @@ QTableView {
|
||||
|
||||
QTableView::item:hover {
|
||||
color: #8cf944;
|
||||
}
|
||||
}
|
||||
|
||||
/* Game Icon Background */
|
||||
QLabel#gamelist_icon_background_color {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
ModernBlue Theme for RPCS3
|
||||
/*
|
||||
ModernBlue Theme for RPCS3
|
||||
by themitosan @ twitter.com/themitosan
|
||||
(2017.12.12)
|
||||
*/
|
||||
@ -124,7 +124,7 @@ QGroupBox::title {
|
||||
/* Buttons */
|
||||
QPushButton {
|
||||
background-color: #46598b;
|
||||
color: #fff;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
QPushButton::disabled {
|
||||
@ -133,7 +133,7 @@ QPushButton::disabled {
|
||||
}
|
||||
|
||||
QPushButton::pressed {
|
||||
background-color: #172038;
|
||||
background-color: #172038;
|
||||
}
|
||||
|
||||
/* Log and Debugger borders */
|
||||
@ -190,7 +190,7 @@ QListWidget::item:hover {
|
||||
}
|
||||
|
||||
/* Pad Settings: Controller Image */
|
||||
QLabel#l_controller {
|
||||
QLabel#l_controller {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@ -227,8 +227,8 @@ QLabel#color_button {
|
||||
}
|
||||
|
||||
/* Search bar on main toolbar */
|
||||
QLineEdit#mw_searchbar {
|
||||
margin-left: 0.7em;
|
||||
QLineEdit#mw_searchbar {
|
||||
margin-left: 0.7em;
|
||||
color: #ecf0f1;
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ QToolButton:hover {
|
||||
}
|
||||
|
||||
/* Search bar in Main Toolbar */
|
||||
QLineEdit#mw_searchbar {
|
||||
QLineEdit#mw_searchbar {
|
||||
color: #455971;
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #999999;
|
||||
@ -113,15 +113,15 @@ QLineEdit#mw_searchbar {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
QLineEdit#mw_searchbar:hover {
|
||||
margin-left: 0.7em;
|
||||
QLineEdit#mw_searchbar:hover {
|
||||
margin-left: 0.7em;
|
||||
color: #0074e7;
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #0071ec;
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
QLineEdit#mw_searchbar:focus {
|
||||
QLineEdit#mw_searchbar:focus {
|
||||
border: 1px solid #0074e7;
|
||||
}
|
||||
|
||||
@ -148,7 +148,7 @@ QSlider::handle:horizontal {
|
||||
border: 1px solid #5c5c5c;
|
||||
border-radius: 0.1em;
|
||||
width: 18px;
|
||||
margin: -2px 2;
|
||||
margin: -2px 2;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:hover {
|
||||
@ -242,7 +242,7 @@ QRadioButton::indicator:unchecked {
|
||||
}
|
||||
|
||||
QRadioButton::indicator:disabled {
|
||||
background-color: #455971;
|
||||
background-color: #455971;
|
||||
}
|
||||
|
||||
/* Checkboxes */
|
||||
@ -533,7 +533,7 @@ QProgressBar::chunk {
|
||||
}
|
||||
|
||||
/* Pad Settings: Controller Image */
|
||||
QLabel#l_controller {
|
||||
QLabel#l_controller {
|
||||
color: #0074e7;
|
||||
}
|
||||
|
||||
@ -554,7 +554,7 @@ QHeaderView::section {
|
||||
background-color: #111525;
|
||||
color: #FFFFFF;
|
||||
padding-top: 3px;
|
||||
padding-left: 3px;
|
||||
padding-left: 3px;
|
||||
height: 20px;
|
||||
border: none;
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ QToolButton:hover {
|
||||
}
|
||||
|
||||
/* Search bar in Main Toolbar */
|
||||
QLineEdit#mw_searchbar {
|
||||
QLineEdit#mw_searchbar {
|
||||
color: #455971;
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #999999;
|
||||
@ -113,15 +113,15 @@ QLineEdit#mw_searchbar {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
QLineEdit#mw_searchbar:hover {
|
||||
margin-left: 0.7em;
|
||||
QLineEdit#mw_searchbar:hover {
|
||||
margin-left: 0.7em;
|
||||
color: #455971;
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #0071ec;
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
QLineEdit#mw_searchbar:focus {
|
||||
QLineEdit#mw_searchbar:focus {
|
||||
border: 1px solid #0071ec;
|
||||
}
|
||||
|
||||
@ -148,7 +148,7 @@ QSlider::handle:horizontal {
|
||||
border: 1px solid #5c5c5c;
|
||||
border-radius: 0.1em;
|
||||
width: 18px;
|
||||
margin: -2px 2;
|
||||
margin: -2px 2;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:disabled {
|
||||
@ -254,7 +254,7 @@ QRadioButton::indicator:unchecked {
|
||||
}
|
||||
|
||||
QRadioButton::indicator:disabled {
|
||||
background-color: #455971;
|
||||
background-color: #455971;
|
||||
}
|
||||
|
||||
/* Checkboxes */
|
||||
@ -552,7 +552,7 @@ QProgressBar::chunk {
|
||||
}
|
||||
|
||||
/* Pad Settings: Controller Image */
|
||||
QLabel#l_controller {
|
||||
QLabel#l_controller {
|
||||
color: #4343c1;
|
||||
}
|
||||
|
||||
@ -573,7 +573,7 @@ QHeaderView::section {
|
||||
background-color: #FFFFFF;
|
||||
color: #455971;
|
||||
padding-top: 3px;
|
||||
padding-left: 3px;
|
||||
padding-left: 3px;
|
||||
height: 20px;
|
||||
border: none;
|
||||
}
|
||||
|
@ -456,10 +456,10 @@ QSlider#sizeSlider::groove:horizontal {
|
||||
height: 1.5em;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
On Patch Creator, it's the patch validation label
|
||||
since we can't avoid repainting color, let's bold it instead
|
||||
*/
|
||||
QLabel#validLabel {
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<!-- Common default props for defining properties with macros. Import right after Microsoft.Cpp.Default.props -->
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
@ -8,4 +8,4 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup />
|
||||
<ItemGroup />
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -187,13 +187,13 @@ elseif(WIN32)
|
||||
|
||||
# If Qt5 is installed from vcpkg
|
||||
list(APPEND _QT5_TOOLS_PATHS "${Qt5_DIR}/../../../tools/qt5$<$<CONFIG:Debug>:/debug>/bin/")
|
||||
|
||||
|
||||
add_custom_command(TARGET rpcs3 POST_BUILD
|
||||
COMMAND set PATH=${_QT5_TOOLS_PATHS}$<SEMICOLON>%PATH%
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_SOURCE_DIR}/bin" "$<TARGET_FILE_DIR:rpcs3>"
|
||||
# If Qt5 is installed from vcpkg, add binary path to PATH
|
||||
# otherwise windeployqt tool won't be able to locate necessary dlls
|
||||
COMMAND set PATH=${Qt5_DIR}/../../../$<$<CONFIG:Debug>:debug/>bin/$<SEMICOLON>%PATH%
|
||||
COMMAND set PATH=${Qt5_DIR}/../../../$<$<CONFIG:Debug>:debug/>bin/$<SEMICOLON>%PATH%
|
||||
COMMAND "${_WINDEPLOYQT}" --no-angle --no-compiler-runtime --no-opengl-sw --no-patchqt --no-translations --no-quick --plugindir "$<TARGET_FILE_DIR:rpcs3>/qt/plugins" $<$<CONFIG:Debug>:--debug> $<$<CONFIG:Release>:--release> "$<TARGET_FILE:rpcs3>")
|
||||
endif()
|
||||
|
||||
|
@ -124,7 +124,7 @@ int aes_crypt_cbc( aes_context *ctx,
|
||||
* both encryption and decryption. So a context initialized with
|
||||
* aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT.
|
||||
*
|
||||
* both
|
||||
* both
|
||||
* \param ctx AES context
|
||||
* \param mode AES_ENCRYPT or AES_DECRYPT
|
||||
* \param length length of the input data
|
||||
|
@ -245,7 +245,7 @@ constexpr s64 PAID_30 = 0x1070000023000001L; // spu_token_processor.self; CoreOS
|
||||
constexpr s64 PAID_31 = 0x1070000024000001L; // sv_iso_spu_module.self; CoreOS; same for CEX DEX DECR
|
||||
constexpr s64 PAID_32 = 0x1070000025000001L; // aim_spu_module.self; CoreOS; same for CEX DEX DECR
|
||||
constexpr s64 PAID_33 = 0x1070000026000001L; // ss_sc_init.self; [2.43 JIG PUP]
|
||||
constexpr s64 PAID_34 = 0x1070000027000001L; // dispatcher.fself; lv1;
|
||||
constexpr s64 PAID_34 = 0x1070000027000001L; // dispatcher.fself; lv1;
|
||||
constexpr s64 PAID_35 = 0x1070000028000001L; // factory_data_mngr_server.fself; JIG lv1 proc
|
||||
constexpr s64 PAID_36 = 0x1070000029000001L; // fdm_spu_module.self; [2.43 JIG PUP]
|
||||
constexpr s64 PAID_37 = 0x107000002A000001L;
|
||||
|
@ -1041,7 +1041,7 @@ package_error package_reader::extract_data(std::deque<package_reader>& readers,
|
||||
{
|
||||
// Use a seperate map for each reader. We need to check if the target app version exists for each package in sequence.
|
||||
std::map<std::string, install_entry*> all_install_entries;
|
||||
|
||||
|
||||
if (error == package_error::no_error)
|
||||
{
|
||||
// Check if this package is allowed to be installed on top of the existing data
|
||||
|
@ -34,7 +34,7 @@ class error_code
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
public:
|
||||
// Implementation must be provided independently
|
||||
static s32 error_report(s32 result, const logs::message* channel, const char* fmt, const fmt_type_info* sup, const u64* args);
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
#include <thread>
|
||||
|
||||
// SONIC THE HEDGEDOG: a fix for a race condition between SPUs and PPUs causing missing graphics (SNR is overriden when non-empty)
|
||||
// SONIC THE HEDGEDOG: a fix for a race condition between SPUs and PPUs causing missing graphics (SNR is overriden when non-empty)
|
||||
void WaitForSPUsToEmptySNRs(ppu_thread& ppu, u32 spu_id, u32 snr_mask)
|
||||
{
|
||||
ppu.state += cpu_flag::wait;
|
||||
|
@ -222,7 +222,7 @@ error_code open_msg_dialog(bool is_blocking, u32 type, vm::cptr<char> msgString,
|
||||
auto& ppu = *get_current_cpu_thread();
|
||||
lv2_obj::sleep(ppu);
|
||||
|
||||
// PS3 memory must not be accessed by Main thread
|
||||
// PS3 memory must not be accessed by Main thread
|
||||
std::string msg_string = msgString.get_ptr();
|
||||
|
||||
// Run asynchronously in GUI thread
|
||||
|
@ -1311,7 +1311,7 @@ u32 cellRecQueryMemSize(vm::cptr<CellRecParam> pParam)
|
||||
{
|
||||
return 0x900000;
|
||||
}
|
||||
|
||||
|
||||
u32 video_size = 0x600000; // 6 MB
|
||||
u32 audio_size = 0x100000; // 1 MB
|
||||
u32 external_input_size = 0;
|
||||
@ -1616,7 +1616,7 @@ error_code cellRecSetInfo(s32 setInfo, u64 value)
|
||||
{
|
||||
return CELL_REC_ERROR_INVALID_VALUE;
|
||||
}
|
||||
|
||||
|
||||
for (u32 i = 0; i < scene_metadata->tagNum; i++)
|
||||
{
|
||||
if (!scene_metadata->tag[i] ||
|
||||
|
@ -5461,7 +5461,7 @@ DECLARE(ppu_module_manager::cellSpurs)("cellSpurs", [](ppu_static_module* _this)
|
||||
_this->add_init_func([](ppu_static_module*)
|
||||
{
|
||||
const auto val = g_cfg.core.spu_accurate_reservations ? MFF_PERFECT : MFF_FORCED_HLE;
|
||||
|
||||
|
||||
REINIT_FUNC(cellSpursSetPriorities).flag(val);
|
||||
REINIT_FUNC(cellSpursAddWorkload).flag(val);
|
||||
REINIT_FUNC(cellSpursAddWorkloadWithAttribute).flag(val);
|
||||
|
@ -253,7 +253,7 @@ error_code cellUserInfoSelectUser_SetList(vm::ptr<CellUserInfoListSet> setList,
|
||||
funcSelect(ppu, CELL_USERINFO_ERROR_NOUSER, selectUser, userdata);
|
||||
return CELL_OK;
|
||||
});
|
||||
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
@ -164,7 +164,7 @@ error_code cellVideoExportInitialize2(u32 version, vm::ptr<CellVideoExportUtilFi
|
||||
error_code cellVideoExportInitialize(u32 version, u32 container, vm::ptr<CellVideoExportUtilFinishCallback> funcFinish, vm::ptr<void> userdata)
|
||||
{
|
||||
cellVideoExport.notice("cellVideoExportInitialize(version=0x%x, container=0x%x, funcFinish=*0x%x, userdata=*0x%x)", version, container, funcFinish, userdata);
|
||||
|
||||
|
||||
if (version != CELL_VIDEO_EXPORT_UTIL_VERSION_CURRENT)
|
||||
{
|
||||
return CELL_VIDEO_EXPORT_UTIL_ERROR_PARAM;
|
||||
@ -282,7 +282,7 @@ error_code cellVideoExportFromFileWithCopy(vm::cptr<char> srcHddDir, vm::cptr<ch
|
||||
error_code cellVideoExportFromFile(vm::cptr<char> srcHddDir, vm::cptr<char> srcHddFile, vm::ptr<CellVideoExportSetParam> param, vm::ptr<CellVideoExportUtilFinishCallback> funcFinish, vm::ptr<void> userdata)
|
||||
{
|
||||
cellVideoExport.todo("cellVideoExportFromFile(srcHddDir=%s, srcHddFile=%s, param=*0x%x, funcFinish=*0x%x, userdata=*0x%x)", srcHddDir, srcHddFile, param, funcFinish, userdata);
|
||||
|
||||
|
||||
if (!param || !funcFinish || !srcHddDir || !srcHddDir[0] || !srcHddFile || !srcHddFile[0])
|
||||
{
|
||||
return CELL_VIDEO_EXPORT_UTIL_ERROR_PARAM;
|
||||
|
@ -3854,7 +3854,7 @@ error_code sceNpScoreCreateTransactionCtx(s32 titleCtxId)
|
||||
}
|
||||
|
||||
auto score = idm::get<score_ctx>(titleCtxId);
|
||||
|
||||
|
||||
if (!score)
|
||||
{
|
||||
return SCE_NP_COMMUNITY_ERROR_INVALID_ID;
|
||||
@ -4409,7 +4409,7 @@ error_code scenp_score_get_ranking_by_range(s32 transId, SceNpScoreBoardId board
|
||||
if (opt_ptr[1])
|
||||
{
|
||||
vm::ptr<u32> ssr_ptr = vm::cast(opt_ptr[1]);
|
||||
startSerialRank = *ssr_ptr;
|
||||
startSerialRank = *ssr_ptr;
|
||||
}
|
||||
|
||||
// It also uses opt_ptr[2] for unknown purposes
|
||||
@ -5272,7 +5272,7 @@ error_code sceNpSignalingTerminateConnection(u32 ctx_id, u32 conn_id)
|
||||
}
|
||||
|
||||
auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
|
||||
|
||||
|
||||
sigh.stop_sig(conn_id);
|
||||
|
||||
return CELL_OK;
|
||||
@ -5306,7 +5306,7 @@ error_code sceNpSignalingGetConnectionStatus(u32 ctx_id, u32 conn_id, vm::ptr<s3
|
||||
{
|
||||
*conn_status = si.connStatus;
|
||||
}
|
||||
|
||||
|
||||
if (peer_addr)
|
||||
(*peer_addr).np_s_addr = si.addr; // infos.addr is already BE
|
||||
if (peer_port)
|
||||
|
@ -613,7 +613,7 @@ error_code sceNpMatching2SignalingGetConnectionInfo(
|
||||
|
||||
if (!connInfo)
|
||||
{
|
||||
return SCE_NP_MATCHING2_ERROR_INVALID_ARGUMENT;
|
||||
return SCE_NP_MATCHING2_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
|
||||
|
@ -80,7 +80,7 @@ std::pair<PPUDisAsm::const_op, u64> PPUDisAsm::try_get_const_op_gpr_value(u32 re
|
||||
|
||||
if (pc == umax)
|
||||
{
|
||||
// Default arg: choose pc of previous instruction
|
||||
// Default arg: choose pc of previous instruction
|
||||
|
||||
if (dump_pc == 0)
|
||||
{
|
||||
@ -108,7 +108,7 @@ std::pair<PPUDisAsm::const_op, u64> PPUDisAsm::try_get_const_op_gpr_value(u32 re
|
||||
|
||||
auto is_branch = [](enum ppu_itype::type itype)
|
||||
{
|
||||
return itype == ppu_itype::BC || itype == ppu_itype::B || itype == ppu_itype::BCLR || itype == ppu_itype::BCCTR;
|
||||
return itype == ppu_itype::BC || itype == ppu_itype::B || itype == ppu_itype::BCLR || itype == ppu_itype::BCCTR;
|
||||
};
|
||||
|
||||
if (is_branch(type) || type == ppu_itype::UNK)
|
||||
|
@ -188,7 +188,7 @@ public:
|
||||
std::unique_ptr<CPUDisAsm> copy_type_erased() const override;
|
||||
std::pair<bool, v128> try_get_const_value(u32 reg, u32 pc = -1, u32 TTL = 10) const;
|
||||
|
||||
// Get constant value if the original array is made of only repetitions of the same value
|
||||
// Get constant value if the original array is made of only repetitions of the same value
|
||||
template <typename T> requires (sizeof(T) < sizeof(v128) && !(sizeof(v128) % sizeof(T)))
|
||||
std::pair<bool, T> try_get_const_equal_value_array(u32 reg, u32 pc = -1, u32 TTL = 10) const
|
||||
{
|
||||
|
@ -4103,7 +4103,7 @@ bool spu_thread::process_mfc_cmd()
|
||||
raddr = addr;
|
||||
rtime = ntime;
|
||||
mov_rdata(_ref<spu_rdata_t>(ch_mfc_cmd.lsa & 0x3ff80), rdata);
|
||||
|
||||
|
||||
ch_atomic_stat.set_value(MFC_GETLLAR_SUCCESS);
|
||||
|
||||
if (g_cfg.core.mfc_debug)
|
||||
@ -4769,7 +4769,7 @@ s64 spu_thread::get_ch_value(u32 ch)
|
||||
}
|
||||
|
||||
const bool reservation_busy_waiting = ((utils::get_tsc() >> 8) % 100 + ((raddr == spurs_addr) ? 50 : 0)) < g_cfg.core.spu_reservation_busy_waiting_percentage;
|
||||
|
||||
|
||||
for (; !events.count; events = get_events(mask1 & ~SPU_EVENT_LR, true, true))
|
||||
{
|
||||
const auto old = +state;
|
||||
@ -4805,7 +4805,7 @@ s64 spu_thread::get_ch_value(u32 ch)
|
||||
// Wait without timeout, in this situation we have notifications for all writes making it possible
|
||||
// Abort notifications are handled specially for performance reasons
|
||||
vm::reservation_notifier(raddr).wait(rtime, -128);
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
|
||||
atomic_wait_engine::set_one_time_use_wait_callback(mask1 != SPU_EVENT_LR ? nullptr : +[](u64 attempts) -> bool
|
||||
@ -5481,7 +5481,7 @@ bool spu_thread::stop_and_signal(u32 code)
|
||||
|
||||
if (Emu.IsStarting())
|
||||
{
|
||||
// Deregister lv2_obj::g_to_sleep entry (savestates related)
|
||||
// Deregister lv2_obj::g_to_sleep entry (savestates related)
|
||||
lv2_obj::sleep(*this);
|
||||
}
|
||||
|
||||
|
@ -234,7 +234,7 @@ public:
|
||||
data.notify_one();
|
||||
}
|
||||
|
||||
// Return true if count has changed from 0 to 1, this condition is considered satisfied even if we pushed a value directly to the special storage for waiting SPUs
|
||||
// Return true if count has changed from 0 to 1, this condition is considered satisfied even if we pushed a value directly to the special storage for waiting SPUs
|
||||
return !pushed_to_data || (old & bit_count) == 0;
|
||||
}
|
||||
}
|
||||
|
@ -1697,7 +1697,7 @@ void lv2_obj::schedule_all(u64 current_time)
|
||||
{
|
||||
if (g_ppu && cpu_flag::preempt - g_ppu->state)
|
||||
{
|
||||
// Don't be picky, pick up any running PPU thread even it has a wait flag
|
||||
// Don't be picky, pick up any running PPU thread even it has a wait flag
|
||||
cpu = g_ppu;
|
||||
}
|
||||
// TODO: If this case is common enough it may be valuable to iterate over all CPU threads to find a perfect candidate (one without a wait or suspend flag)
|
||||
|
@ -5,4 +5,4 @@
|
||||
// SysCalls
|
||||
|
||||
error_code sys_console_write(vm::cptr<char> buf, u32 len);
|
||||
constexpr auto sys_console_write2 = sys_console_write;
|
||||
constexpr auto sys_console_write2 = sys_console_write;
|
||||
|
@ -157,7 +157,7 @@ CellError lv2_event_queue::send(lv2_event event)
|
||||
{
|
||||
// Store event in In_MBox
|
||||
auto& spu = static_cast<spu_thread&>(*schedule<spu_thread>(sq, protocol));
|
||||
|
||||
|
||||
if (spu.state & cpu_flag::again)
|
||||
{
|
||||
if (auto cpu = get_current_cpu_thread())
|
||||
@ -325,7 +325,7 @@ error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode)
|
||||
queue->append(cpu);
|
||||
}
|
||||
|
||||
atomic_storage<ppu_thread*>::release(queue->pq, nullptr);
|
||||
atomic_storage<ppu_thread*>::release(queue->pq, nullptr);
|
||||
lv2_obj::awake_all();
|
||||
}
|
||||
else
|
||||
@ -336,7 +336,7 @@ error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode)
|
||||
resume_spu_thread_group_from_waiting(*cpu);
|
||||
}
|
||||
|
||||
atomic_storage<spu_thread*>::release(queue->sq, nullptr);
|
||||
atomic_storage<spu_thread*>::release(queue->sq, nullptr);
|
||||
}
|
||||
|
||||
qlock.unlock();
|
||||
|
@ -370,7 +370,7 @@ error_code sys_event_flag_set(cpu_thread& cpu, u32 id, u64 bitptn)
|
||||
{
|
||||
s32 prio = smax;
|
||||
ppu_thread* it{};
|
||||
|
||||
|
||||
for (auto ppu = first; ppu; ppu = ppu->next_cpu)
|
||||
{
|
||||
if (!ppu->gpr[7] && (flag->protocol != SYS_SYNC_PRIORITY || ppu->prio <= prio))
|
||||
|
@ -214,7 +214,7 @@ public:
|
||||
struct lv2_file final : lv2_fs_object
|
||||
{
|
||||
static constexpr u32 id_type = 1;
|
||||
|
||||
|
||||
fs::file file;
|
||||
const s32 mode;
|
||||
const s32 flags;
|
||||
@ -303,7 +303,7 @@ struct lv2_file final : lv2_fs_object
|
||||
struct lv2_dir final : lv2_fs_object
|
||||
{
|
||||
static constexpr u32 id_type = 2;
|
||||
|
||||
|
||||
const std::vector<fs::dir_entry> entries;
|
||||
|
||||
// Current reading position
|
||||
|
@ -268,7 +268,7 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id
|
||||
|
||||
auto sq = cond.sq;
|
||||
atomic_storage<ppu_thread*>::release(cond.sq, nullptr);
|
||||
|
||||
|
||||
while (const auto cpu = cond.schedule<ppu_thread>(sq, cond.protocol))
|
||||
{
|
||||
if (mode == 2)
|
||||
|
@ -122,7 +122,7 @@ struct lv2_lwmutex final : lv2_obj
|
||||
// Notify lwmutex destroyer (may cause EBUSY to be returned for it)
|
||||
lwcond_waiters.notify_all();
|
||||
}
|
||||
|
||||
|
||||
if (signal)
|
||||
{
|
||||
cpu->next_cpu = nullptr;
|
||||
|
@ -30,7 +30,7 @@ lv2_memory_container::lv2_memory_container(utils::serial& ar, bool from_idm) noe
|
||||
|
||||
std::shared_ptr<void> lv2_memory_container::load(utils::serial& ar)
|
||||
{
|
||||
// Use idm::last_id() only for the instances at IDM
|
||||
// Use idm::last_id() only for the instances at IDM
|
||||
return std::make_shared<lv2_memory_container>(stx::exact_t<utils::serial&>(ar), true);
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ struct sys_memory_address_table
|
||||
{
|
||||
if (const auto ptr = +ctr)
|
||||
{
|
||||
mm[static_cast<u16>(&ctr - addrs)] = ptr->id;
|
||||
mm[static_cast<u16>(&ctr - addrs)] = ptr->id;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ CellError lv2_memory::on_id_create()
|
||||
std::shared_ptr<void> lv2_memory::load(utils::serial& ar)
|
||||
{
|
||||
auto mem = std::make_shared<lv2_memory>(ar);
|
||||
mem->exists++; // Disable on_id_create()
|
||||
mem->exists++; // Disable on_id_create()
|
||||
std::shared_ptr<void> ptr = lv2_obj::load(mem->key, mem, +mem->pshared);
|
||||
mem->exists--;
|
||||
return ptr;
|
||||
|
@ -58,7 +58,7 @@ struct lv2_mutex final : lv2_obj
|
||||
}
|
||||
|
||||
lv2_mutex(utils::serial& ar);
|
||||
static std::shared_ptr<void> load(utils::serial& ar);
|
||||
static std::shared_ptr<void> load(utils::serial& ar);
|
||||
void save(utils::serial& ar);
|
||||
|
||||
template <typename T>
|
||||
|
@ -1755,7 +1755,7 @@ error_code lv2_socket::abort_socket(s32 flags)
|
||||
{
|
||||
if (!ppu)
|
||||
continue;
|
||||
|
||||
|
||||
sys_net.warning("lv2_socket::abort_socket(): waking up \"%s\": (func: %s, r3=0x%x, r4=0x%x, r5=0x%x, r6=0x%x)", ppu->get_name(), ppu->current_function, ppu->gpr[3], ppu->gpr[4], ppu->gpr[5], ppu->gpr[6]);
|
||||
ppu->gpr[3] = static_cast<u64>(-SYS_NET_EINTR);
|
||||
lv2_obj::append(ppu.get());
|
||||
@ -1821,7 +1821,7 @@ error_code sys_net_abort(ppu_thread& ppu, s32 type, u64 arg, s32 flags)
|
||||
|
||||
sock->close();
|
||||
|
||||
sys_net.success("lv2_socket::handle_abort(): Closed socket %d", id);
|
||||
sys_net.success("lv2_socket::handle_abort(): Closed socket %d", id);
|
||||
}
|
||||
|
||||
// Ensures the socket has no lingering copy from the network thread
|
||||
|
@ -63,7 +63,7 @@ void fmt_class_string<spu_stop_syscall>::format(std::string& out, u64 arg)
|
||||
case SYS_SPU_THREAD_STOP_TRY_RECEIVE_EVENT: return "sys_spu_thread_tryreceive_event";
|
||||
case SYS_SPU_THREAD_STOP_SWITCH_SYSTEM_MODULE: return "sys_spu_thread_switch_system_module";
|
||||
}
|
||||
|
||||
|
||||
return unknown;
|
||||
});
|
||||
}
|
||||
@ -254,7 +254,7 @@ lv2_spu_group::lv2_spu_group(utils::serial& ar) noexcept
|
||||
}
|
||||
case SPU_THREAD_GROUP_STATUS_SUSPENDED:
|
||||
{
|
||||
// Suspend all SPU threads except a thread that waits on sys_spu_thread_receive_event
|
||||
// Suspend all SPU threads except a thread that waits on sys_spu_thread_receive_event
|
||||
for (const auto& thread : threads)
|
||||
{
|
||||
if (thread)
|
||||
|
@ -288,7 +288,7 @@ usb_handler_thread::usb_handler_thread()
|
||||
{
|
||||
found_h050 = true;
|
||||
}
|
||||
|
||||
|
||||
// EA Active 2 dongle for connecting wristbands & legband
|
||||
check_device(0x21A4, 0xAC27, 0xAC27, "EA Active 2 Dongle");
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ std::vector<std::pair<u128, id_manager::typeinfo>>& id_manager::get_typeinfo_map
|
||||
{
|
||||
// Magic static
|
||||
static std::vector<std::pair<u128, id_manager::typeinfo>> s_map;
|
||||
return s_map;
|
||||
return s_map;
|
||||
}
|
||||
|
||||
idm::map_data* idm::allocate_id(std::vector<map_data>& vec, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair<u32, u32> invl_range)
|
||||
|
@ -9,7 +9,7 @@ public:
|
||||
{
|
||||
b_has_pressure_intensity_button = false;
|
||||
}
|
||||
|
||||
|
||||
bool Init() override
|
||||
{
|
||||
return true;
|
||||
|
@ -70,7 +70,7 @@ namespace rsx
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
void home_menu_page::add_page(std::shared_ptr<home_menu_page> page)
|
||||
{
|
||||
ensure(page);
|
||||
|
@ -57,7 +57,7 @@ namespace rsx
|
||||
|
||||
u64 message_item::get_expiration() const
|
||||
{
|
||||
// If reference counting is enabled and reached 0 consider it expired
|
||||
// If reference counting is enabled and reached 0 consider it expired
|
||||
return m_refs && *m_refs == 0 ? 0 : m_expiration_time;
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
|
||||
uint log2w = invocation.size_log2.x;
|
||||
uint log2h = invocation.size_log2.y;
|
||||
uint log2d = invocation.size_log2.z;
|
||||
|
||||
|
||||
do
|
||||
{
|
||||
if (log2w > 0)
|
||||
@ -76,7 +76,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
|
||||
x >>= 1;
|
||||
log2w--;
|
||||
}
|
||||
|
||||
|
||||
if (log2h > 0)
|
||||
{
|
||||
offset |= (y & 1) << shift;
|
||||
@ -84,7 +84,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
|
||||
y >>= 1;
|
||||
log2h--;
|
||||
}
|
||||
|
||||
|
||||
if (log2d > 0)
|
||||
{
|
||||
offset |= (z & 1) << shift;
|
||||
@ -94,7 +94,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
|
||||
}
|
||||
}
|
||||
while(x > 0 || y > 0 || z > 0);
|
||||
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
@ -126,4 +126,4 @@ void main()
|
||||
data_out[dst_id++] = %f(value);
|
||||
}
|
||||
}
|
||||
)"
|
||||
)"
|
||||
|
@ -90,7 +90,7 @@ vec4 sample_image(sampler2D tex, vec2 coord, float blur_strength)
|
||||
{
|
||||
vec4 original = texture(tex, coord);
|
||||
if (blur_strength == 0) return original;
|
||||
|
||||
|
||||
vec2 constraints = 1.f / vec2(640, 360);
|
||||
vec2 res_offset = 1.f / textureSize(fs0, 0);
|
||||
vec2 tex_offset = max(res_offset, constraints);
|
||||
|
@ -162,7 +162,7 @@ void RSXDisAsm::Write(std::string_view str, s32 count, bool is_non_inc, u32 id)
|
||||
case cpu_disasm_mode::interpreter:
|
||||
{
|
||||
last_opcode.clear();
|
||||
|
||||
|
||||
if (count >= 0)
|
||||
{
|
||||
fmt::append(last_opcode, "[%08x] (%s%u)", dump_pc, is_non_inc ? "+" : "", count);
|
||||
|
@ -38,7 +38,7 @@ namespace rsx
|
||||
m_command_inc = ((m_cmd & RSX_METHOD_NON_INCREMENT_CMD_MASK) == RSX_METHOD_NON_INCREMENT_CMD) ? 0 : 4;
|
||||
m_remaining_commands = count;
|
||||
m_internal_get = m_ctrl->get - 4;
|
||||
m_args_ptr = m_iotable->get_addr(m_internal_get);
|
||||
m_args_ptr = m_iotable->get_addr(m_internal_get);
|
||||
m_command_reg = (m_cmd & 0xffff) + m_command_inc * (((m_cmd >> 18) - count) & 0x7ff) - m_command_inc;
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ namespace rsx
|
||||
|
||||
if (addr < put && put < m_cache_addr + m_cache_size)
|
||||
{
|
||||
// Adjust to knownly-prepared FIFO buffer bounds
|
||||
// Adjust to knownly-prepared FIFO buffer bounds
|
||||
m_cache_size = put - m_cache_addr;
|
||||
}
|
||||
|
||||
@ -267,7 +267,7 @@ namespace rsx
|
||||
m_command_reg += m_command_inc;
|
||||
|
||||
--m_remaining_commands;
|
||||
|
||||
|
||||
data.set(m_command_reg, arg);
|
||||
return true;
|
||||
}
|
||||
@ -422,7 +422,7 @@ namespace rsx
|
||||
data.set(m_cmd & 0xfffc, arg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
inc_get(true); // Wait for data block to become available
|
||||
|
||||
// Validate the args ptr if the command attempts to read from it
|
||||
|
@ -151,7 +151,7 @@ namespace rsx
|
||||
case 16: return rsx::texture_max_anisotropy::x16;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
||||
return rsx::to_texture_max_anisotropy((registers[NV4097_SET_TEXTURE_CONTROL0 + (m_index * 8)] >> 4) & 0x7);
|
||||
}
|
||||
|
||||
|
@ -478,9 +478,9 @@ namespace rsx
|
||||
void thread::save(utils::serial& ar)
|
||||
{
|
||||
[[maybe_unused]] const s32 version = GET_OR_USE_SERIALIZATION_VERSION(ar.is_writing(), rsx);
|
||||
|
||||
|
||||
ar(rsx::method_registers);
|
||||
|
||||
|
||||
for (auto& v : vertex_push_buffers)
|
||||
{
|
||||
ar(v.attr, v.size, v.type, v.vertex_count, v.dword_count, v.data);
|
||||
@ -554,7 +554,7 @@ namespace rsx
|
||||
|
||||
if (g_cfg.savestate.start_paused)
|
||||
{
|
||||
// Allow to render a whole frame within this emulation session so there won't be missing graphics
|
||||
// Allow to render a whole frame within this emulation session so there won't be missing graphics
|
||||
m_pause_after_x_flips = 2;
|
||||
}
|
||||
}
|
||||
@ -3450,7 +3450,7 @@ namespace rsx
|
||||
async_flip_requested |= flip_request::emu_requested;
|
||||
|
||||
m_eng_interrupt_mask |= rsx::display_interrupt;
|
||||
|
||||
|
||||
if (state & cpu_flag::exit)
|
||||
{
|
||||
// Resubmit possibly-ignored flip on savestate load
|
||||
|
@ -49,7 +49,7 @@ namespace vk
|
||||
m_descriptor_pool.create(dev, descriptor_pools, 1, 120, 2);
|
||||
|
||||
// Scale and offset data plus output color
|
||||
std::vector<VkDescriptorSetLayoutBinding> bindings =
|
||||
std::vector<VkDescriptorSetLayoutBinding> bindings =
|
||||
{
|
||||
{
|
||||
.binding = 0,
|
||||
|
@ -4,7 +4,7 @@ R"--RPCS3--(
|
||||
#ifndef A_SKIP_EXT
|
||||
#ifdef A_HALF
|
||||
#extension GL_EXT_shader_16bit_storage:require
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types:require
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types:require
|
||||
#endif
|
||||
#ifdef A_LONG
|
||||
#extension GL_ARB_gpu_shader_int64:require
|
||||
@ -390,7 +390,7 @@ AW4 AWaveXorW4(AW4 v,AU1 x){return AW4_AU2(subgroupShuffleXor(AU2_AW4(v),x));}
|
||||
AU1 AU1_AH1_AF1_x(AF1 a){return f32tof16(a);}
|
||||
#define AU1_AH1_AF1(a) AU1_AH1_AF1_x(AF1(a))
|
||||
AU1 AU1_AH2_AF2_x(AF2 a){return f32tof16(a.x)|(f32tof16(a.y)<<16);}
|
||||
#define AU1_AH2_AF2(a) AU1_AH2_AF2_x(AF2(a))
|
||||
#define AU1_AH2_AF2(a) AU1_AH2_AF2_x(AF2(a))
|
||||
#define AU1_AB4Unorm_AF4(x) D3DCOLORtoUBYTE4(AF4(x))
|
||||
AF2 AF2_AH2_AU1_x(AU1 x){return AF2(f16tof32(x&0xFFFF),f16tof32(x>>16));}
|
||||
#define AF2_AH2_AU1(x) AF2_AH2_AU1_x(AU1(x))
|
||||
@ -906,7 +906,7 @@ AF2 APSinCosF1(AF1 x){AF1 y=AFractF1(x*AF1_(0.5)+AF1_(0.75));y=y*AF1_(2.0)-AF1_(
|
||||
#ifdef A_HALF
|
||||
AH1 APSinH1(AH1 x){return x*abs(x)-x;}
|
||||
AH2 APSinH2(AH2 x){return x*abs(x)-x;} // AND,FMA
|
||||
AH1 APCosH1(AH1 x){x=AFractH1(x*AH1_(0.5)+AH1_(0.75));x=x*AH1_(2.0)-AH1_(1.0);return APSinH1(x);}
|
||||
AH1 APCosH1(AH1 x){x=AFractH1(x*AH1_(0.5)+AH1_(0.75));x=x*AH1_(2.0)-AH1_(1.0);return APSinH1(x);}
|
||||
AH2 APCosH2(AH2 x){x=AFractH2(x*AH2_(0.5)+AH2_(0.75));x=x*AH2_(2.0)-AH2_(1.0);return APSinH2(x);} // 3x FMA, 2xFRACT, AND
|
||||
AH2 APSinCosH1(AH1 x){AH1 y=AFractH1(x*AH1_(0.5)+AH1_(0.75));y=y*AH1_(2.0)-AH1_(1.0);return APSinH2(AH2(x,y));}
|
||||
#endif
|
||||
@ -1033,9 +1033,9 @@ AF2 ATo709F2(AF2 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099);
|
||||
return clamp(j.xx ,c*j.yy ,pow(c,j.zz )*k.xx +k.yy );}
|
||||
AF3 ATo709F3(AF3 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099);
|
||||
return clamp(j.xxx,c*j.yyy,pow(c,j.zzz)*k.xxx+k.yyy);}
|
||||
AF1 AToGammaF1(AF1 c,AF1 rcpX){return pow(c,AF1_(rcpX));}
|
||||
AF2 AToGammaF2(AF2 c,AF1 rcpX){return pow(c,AF2_(rcpX));}
|
||||
AF3 AToGammaF3(AF3 c,AF1 rcpX){return pow(c,AF3_(rcpX));}
|
||||
AF1 AToGammaF1(AF1 c,AF1 rcpX){return pow(c,AF1_(rcpX));}
|
||||
AF2 AToGammaF2(AF2 c,AF1 rcpX){return pow(c,AF2_(rcpX));}
|
||||
AF3 AToGammaF3(AF3 c,AF1 rcpX){return pow(c,AF3_(rcpX));}
|
||||
AF1 AToPqF1(AF1 x){AF1 p=pow(x,AF1_(0.159302));
|
||||
return pow((AF1_(0.835938)+AF1_(18.8516)*p)/(AF1_(1.0)+AF1_(18.6875)*p),AF1_(78.8438));}
|
||||
AF2 AToPqF1(AF2 x){AF2 p=pow(x,AF2_(0.159302));
|
||||
@ -1062,9 +1062,9 @@ AF2 AFrom709F2(AF2 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,
|
||||
return AZolSelF2(AZolSignedF2(c-j.xx ),c*j.yy ,pow(c*k.xx +k.yy ,j.zz ));}
|
||||
AF3 AFrom709F3(AF3 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,0.099/1.099);
|
||||
return AZolSelF3(AZolSignedF3(c-j.xxx),c*j.yyy,pow(c*k.xxx+k.yyy,j.zzz));}
|
||||
AF1 AFromGammaF1(AF1 c,AF1 x){return pow(c,AF1_(x));}
|
||||
AF2 AFromGammaF2(AF2 c,AF1 x){return pow(c,AF2_(x));}
|
||||
AF3 AFromGammaF3(AF3 c,AF1 x){return pow(c,AF3_(x));}
|
||||
AF1 AFromGammaF1(AF1 c,AF1 x){return pow(c,AF1_(x));}
|
||||
AF2 AFromGammaF2(AF2 c,AF1 x){return pow(c,AF2_(x));}
|
||||
AF3 AFromGammaF3(AF3 c,AF1 x){return pow(c,AF3_(x));}
|
||||
AF1 AFromPqF1(AF1 x){AF1 p=pow(x,AF1_(0.0126833));
|
||||
return pow(ASatF1(p-AF1_(0.835938))/(AF1_(18.8516)-AF1_(18.6875)*p),AF1_(6.27739));}
|
||||
AF2 AFromPqF1(AF2 x){AF2 p=pow(x,AF2_(0.0126833));
|
||||
|
@ -362,7 +362,7 @@ AF1 rcpL=APrxMedRcpF1(AF1_(4.0)*lobe+AF1_(1.0));
|
||||
pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL;
|
||||
pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL;
|
||||
pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL;
|
||||
return;}
|
||||
return;}
|
||||
#endif
|
||||
#if defined(A_GPU)&&defined(A_HALF)&&defined(FSR_RCAS_H)
|
||||
AH4 FsrRcasLoadH(ASW2 p);
|
||||
|
@ -29,7 +29,7 @@ layout(set=0,binding=1,rgba8) uniform writeonly image2D OutputTexture;
|
||||
#define FSR_EASU_H 1
|
||||
AH4 FsrEasuRH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 0)); return res; }
|
||||
AH4 FsrEasuGH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 1)); return res; }
|
||||
AH4 FsrEasuBH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 2)); return res; }
|
||||
AH4 FsrEasuBH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 2)); return res; }
|
||||
#endif
|
||||
#if SAMPLE_RCAS
|
||||
#define FSR_RCAS_H
|
||||
|
@ -4629,7 +4629,7 @@ struct texture_format_helper
|
||||
{
|
||||
return bf_decoder<2, 1, bool>(value);
|
||||
}
|
||||
|
||||
|
||||
u8 border_type() const
|
||||
{
|
||||
return bf_decoder<3, 1>(value);
|
||||
|
@ -182,7 +182,7 @@ void Emulator::BlockingCallFromMainThread(std::function<void()>&& func) const
|
||||
}
|
||||
}
|
||||
|
||||
// This function ensures constant initialization order between different compilers and builds
|
||||
// This function ensures constant initialization order between different compilers and builds
|
||||
void init_fxo_for_exec(utils::serial* ar, bool full = false)
|
||||
{
|
||||
g_fxo->init<ppu_module>();
|
||||
@ -2833,13 +2833,13 @@ std::shared_ptr<utils::serial> Emulator::Kill(bool allow_autoexit, bool savestat
|
||||
|
||||
if (fs::remove_file(old_path))
|
||||
{
|
||||
sys_log.success("Old savestate has been removed: path='%s'", old_path);
|
||||
sys_log.success("Old savestate has been removed: path='%s'", old_path);
|
||||
}
|
||||
|
||||
// For backwards compatibility - avoid having loose files
|
||||
if (fs::remove_file(old_path2))
|
||||
{
|
||||
sys_log.success("Old savestate has been removed: path='%s'", old_path2);
|
||||
sys_log.success("Old savestate has been removed: path='%s'", old_path2);
|
||||
}
|
||||
|
||||
sys_log.success("Saved savestate! path='%s'", path);
|
||||
|
@ -91,8 +91,8 @@ struct cfg_root : cfg::node
|
||||
cfg::_int<10, 3000> clocks_scale{ this, "Clocks scale", 100 }; // Changing this from 100 (percentage) may affect game speed in unexpected ways
|
||||
cfg::uint<0, 3000> spu_wakeup_delay{ this, "SPU Wake-Up Delay", 0, true };
|
||||
cfg::uint<0, (1 << 6) - 1> spu_wakeup_delay_mask{ this, "SPU Wake-Up Delay Thread Mask", (1 << 6) - 1, true };
|
||||
cfg::uint<0, 400> max_cpu_preempt_count_per_frame{ this, "Max CPU Preempt Count", 0, true };
|
||||
cfg::_bool allow_rsx_cpu_preempt{ this, "Allow RSX CPU Preemptions", true, true };
|
||||
cfg::uint<0, 400> max_cpu_preempt_count_per_frame{ this, "Max CPU Preempt Count", 0, true };
|
||||
cfg::_bool allow_rsx_cpu_preempt{ this, "Allow RSX CPU Preemptions", true, true };
|
||||
#if defined (__linux__) || defined (__APPLE__)
|
||||
cfg::_enum<sleep_timers_accuracy_level> sleep_timers_accuracy{ this, "Sleep Timers Accuracy", sleep_timers_accuracy_level::_as_host, true };
|
||||
#else
|
||||
|
@ -13,6 +13,6 @@ namespace rpcs3
|
||||
std::string vulkan_adapter;
|
||||
double fps = .0;
|
||||
};
|
||||
|
||||
|
||||
std::string get_formatted_title(const title_format_data& title_data);
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ bool hid_pad_handler<Device>::Init()
|
||||
#if defined(__APPLE__)
|
||||
hid_darwin_set_open_exclusive(0);
|
||||
#endif
|
||||
|
||||
|
||||
for (usz i = 1; i <= MAX_GAMEPADS; i++) // Controllers 1-n in GUI
|
||||
{
|
||||
m_controllers.emplace(m_name_string + std::to_string(i), std::make_shared<Device>());
|
||||
|
@ -484,7 +484,7 @@ u32 sdl_pad_handler::get_battery_color(SDL_JoystickPowerLevel power_level, u32 b
|
||||
case SDL_JOYSTICK_POWER_WIRED: combined_color = 0x00FF; break;
|
||||
case SDL_JOYSTICK_POWER_MAX: combined_color = 0x00FF; break;
|
||||
}
|
||||
|
||||
|
||||
const u32 red = (combined_color >> 8) * brightness / 100;
|
||||
const u32 green = (combined_color & 0xff) * brightness / 100;
|
||||
return ((red << 8) | green);
|
||||
@ -565,7 +565,7 @@ void sdl_pad_handler::get_extended_info(const pad_ensemble& binding)
|
||||
pad->m_sensors[2].m_value = Clamp0To1023((accel_z / SDL_STANDARD_GRAVITY) * -1 * 113 + 512);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (dev->sdl.has_gyro)
|
||||
{
|
||||
if (SDL_GameControllerGetSensorData(dev->sdl.game_controller, SDL_SENSOR_GYRO, dev->values_gyro.data(), 3) != 0)
|
||||
|
@ -93,32 +93,32 @@ namespace disc
|
||||
|
||||
search_dir = std::move(parent_dir);
|
||||
}
|
||||
|
||||
|
||||
for (usz i = 0; i < lines.size(); i++)
|
||||
{
|
||||
const std::string& line = lines[i];
|
||||
const usz pos = line.find('=');
|
||||
|
||||
|
||||
if (pos == umax)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
const std::string key = fmt::trim(line.substr(0, pos));
|
||||
std::string value;
|
||||
|
||||
|
||||
if (pos != (line.size() - 1))
|
||||
{
|
||||
value = fmt::trim(line.substr(pos + 1));
|
||||
}
|
||||
|
||||
|
||||
if (value.empty() && i != (lines.size() - 1) && line.size() != 1)
|
||||
{
|
||||
// Some games have a character on the last line of the file, don't print the error in those cases.
|
||||
disc_log.warning("Unusual or malformed entry in SYSTEM.CNF ignored: %s", line);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (key == "BOOT2")
|
||||
{
|
||||
disc_log.notice("SYSTEM.CNF - Detected PS2 Disc = %s", value);
|
||||
@ -138,12 +138,12 @@ namespace disc
|
||||
disc_log.notice("SYSTEM.CNF - Software version = %s", value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (type == disc_type::unknown)
|
||||
{
|
||||
disc_log.error("SYSTEM.CNF - Disc is not a PSX/PSone or PS2 game!");
|
||||
}
|
||||
|
||||
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ bool extract_mself(const std::string& file, const std::string& extract_to)
|
||||
if (!mself.read(recs))
|
||||
{
|
||||
mself_log.error("Error extracting MSELF records");
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::vector<u8> buffer;
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define IDI_ICON1 101
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 102
|
||||
|
@ -24,5 +24,5 @@ public:
|
||||
[[nodiscard]] qreal getMarginFactor() const;
|
||||
|
||||
private:
|
||||
game_list_grid_delegate* grid_item_delegate;
|
||||
game_list_grid_delegate* grid_item_delegate;
|
||||
};
|
||||
|
@ -117,7 +117,7 @@ namespace gui
|
||||
const QString config = "Config";
|
||||
const QString log_viewer = "LogViewer";
|
||||
const QString sc = "Shortcuts";
|
||||
|
||||
|
||||
const QString update_on = "true";
|
||||
const QString update_off = "false";
|
||||
const QString update_auto = "auto";
|
||||
|
@ -364,7 +364,7 @@ void kernel_explorer::update()
|
||||
case SYS_MUTEX_OBJECT:
|
||||
{
|
||||
auto& mutex = static_cast<lv2_mutex&>(obj);
|
||||
const auto control = mutex.control.load();
|
||||
const auto control = mutex.control.load();
|
||||
show_waiters(add_solid_node(node, qstr(fmt::format(u8"Mutex 0x%08x: “%s”, %s,%s Owner: %#x, Locks: %u, Key: %#llx, Conds: %u", id, lv2_obj::name64(mutex.name), mutex.protocol,
|
||||
mutex.recursive == SYS_SYNC_RECURSIVE ? " Recursive," : "", control.owner, +mutex.lock_count, mutex.key, mutex.cond_count))), control.sq);
|
||||
break;
|
||||
|
@ -969,7 +969,7 @@ void main_window::HandlePackageInstallation(QStringList file_paths)
|
||||
if (pdlg.wasCanceled())
|
||||
{
|
||||
cancelled = true;
|
||||
|
||||
|
||||
for (package_reader& reader : readers)
|
||||
{
|
||||
reader.abort_extract();
|
||||
@ -1072,7 +1072,7 @@ void main_window::HandlePackageInstallation(QStringList file_paths)
|
||||
QCheckBox* quick_check = new QCheckBox(tr("Add launcher shortcut(s)"));
|
||||
#endif
|
||||
QLabel* label = new QLabel(tr("Successfully installed software from package(s)!\nWould you like to install shortcuts to the installed software? (%1 new software detected)\n\n").arg(bootable_paths_installed.size()), dlg);
|
||||
|
||||
|
||||
vlayout->addWidget(label);
|
||||
vlayout->addStretch(10);
|
||||
vlayout->addWidget(desk_check);
|
||||
@ -1081,7 +1081,7 @@ void main_window::HandlePackageInstallation(QStringList file_paths)
|
||||
vlayout->addStretch(3);
|
||||
|
||||
QDialogButtonBox* btn_box = new QDialogButtonBox(QDialogButtonBox::Ok);
|
||||
|
||||
|
||||
vlayout->addWidget(btn_box);
|
||||
dlg->setLayout(vlayout);
|
||||
|
||||
@ -2636,7 +2636,7 @@ void main_window::CreateConnects()
|
||||
m_gui_settings->SetCategoryVisibility(id, checked);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
connect(ui->menuGame_Categories, &QMenu::aboutToShow, ui->menuGame_Categories, [this, get_cats]()
|
||||
{
|
||||
const auto set_cat_count = [&](QAction* act, const QString& text)
|
||||
|
@ -999,7 +999,7 @@ void rsx_debugger::GetBuffers() const
|
||||
|
||||
for (u32 i = 0; i < textures.size(); i++)
|
||||
{
|
||||
// Technically it can also check if used by shader but idk
|
||||
// Technically it can also check if used by shader but idk
|
||||
if (textures[i].enabled() && textures[i].width())
|
||||
{
|
||||
if (!text.isEmpty())
|
||||
@ -1147,7 +1147,7 @@ void rsx_debugger::GetBuffers() const
|
||||
else if (code == 3)
|
||||
{
|
||||
return 0;
|
||||
} // otherwise is the default values
|
||||
} // otherwise is the default values
|
||||
|
||||
break;
|
||||
}
|
||||
@ -1155,7 +1155,7 @@ void rsx_debugger::GetBuffers() const
|
||||
{
|
||||
fmt::throw_exception("Unreachable!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ((a1 * a1_portion + a0 * a0_portion) / (a0_portion + a1_portion)) << shift;
|
||||
|
@ -24,7 +24,7 @@ private:
|
||||
private:
|
||||
custom_dialog* m_dialog = nullptr;
|
||||
QListWidget* m_lst_friends = nullptr;
|
||||
|
||||
|
||||
std::shared_ptr<rpcn::rpcn_client> m_rpcn;
|
||||
|
||||
Q_SIGNALS:
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
~settings();
|
||||
|
||||
QString GetSettingsDir() const;
|
||||
|
||||
|
||||
QVariant GetValue(const QString& key, const QString& name, const QVariant& def) const;
|
||||
QVariant GetValue(const gui_save& entry) const;
|
||||
static QVariant List2Var(const q_pair_list& list);
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
// Do not confuse this with the "user" in Emu/System.h.
|
||||
// Do not confuse this with the "user" in Emu/System.h.
|
||||
// That user is read from config.yml, and it only represents the currently "logged in" user.
|
||||
// The user_account class will represent all users in the home directory for the User Manager dialog.
|
||||
// Selecting a user account in this dialog and saving writes it to config.yml.
|
||||
|
@ -71,7 +71,7 @@ vfs_dialog_usb_input::vfs_dialog_usb_input(const QString& name, const cfg::devic
|
||||
m_serial_edit = new QLineEdit;
|
||||
m_serial_edit->setMaxLength(64); // Max length defined in sys_fs
|
||||
m_serial_edit->setText(QString::fromStdString(info->serial));
|
||||
|
||||
|
||||
QVBoxLayout* vbox_left = new QVBoxLayout;
|
||||
vbox_left->addWidget(new QLabel(tr("Vendor ID:")));
|
||||
vbox_left->addWidget(new QLabel(tr("Product ID:")));
|
||||
|
@ -50,7 +50,7 @@ static bool s_null_wait_cb(const void*, u64, u64){ return true; };
|
||||
static thread_local bool(*s_tls_wait_cb)(const void* data, u64 attempts, u64 stamp0) = s_null_wait_cb;
|
||||
|
||||
// Callback for wait() function for a second custon condition, commonly passed with timeout
|
||||
static thread_local bool(*s_tls_one_time_wait_cb)(u64 attempts) = nullptr;
|
||||
static thread_local bool(*s_tls_one_time_wait_cb)(u64 attempts) = nullptr;
|
||||
|
||||
// Callback for notification functions for optimizations
|
||||
static thread_local void(*s_tls_notify_cb)(const void* data, u64 progress) = nullptr;
|
||||
|
Loading…
Reference in New Issue
Block a user