Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add git_branch to git-version.h, add display version info to gs_frame and add branch and version to log. #3186

Merged
merged 5 commits into from
Sep 16, 2017

Conversation

PeterMcteague
Copy link
Contributor

This was requested in this issue: #3152.

In this pull are the modifications required for it to appear.

@Asinin3
Copy link
Contributor

Asinin3 commented Aug 10, 2017

Thank you for this, it will indeed solve a lot of back and forth between users, I'm not sure if the whole version number with the commit# is necessary (at least for the master) though. I think just the build/commit number would be enough if the title is too cluttered (as some of the devs seemed to think).

@hcorion
Copy link
Member

hcorion commented Aug 13, 2017

This is pretty ugly, and has too much information.
I'd like for it to be just commithash-branchname
So it would then be

784a37fc-vertex_rewrite

or if it was the master branch, then it would be just

784a37fc

@Asinin3
Copy link
Contributor

Asinin3 commented Aug 13, 2017

@hcorion Would it be possible to use the appveyor build numbers? Probably not because the number is only generated by the appveyor count right? But I think that would be the easiest to tell what build it is or give an estimation of how old a build is compared to latest while keeping it short.

For instance:
RPCS3 0.0.3-buildnumber-branchname
RPCS3 0.0.3-5680-vertex_rewrite

@hcorion
Copy link
Member

hcorion commented Aug 13, 2017

Sure, I can agree with that, but without the RPCS3 part, so just 0.0.3-5680-vertex_rewrite

@PeterMcteague
Copy link
Contributor Author

PeterMcteague commented Aug 13, 2017

Alright, I've managed to change it to be in the format of 0.0.3-buildnumber however I'm struggling to get the branch name.

I assumed git-version.cmake and git-version.h would be the places to get it, after adding a command for getting the branch to git-version.cmake. However it seems whatever I change in the cmake file it has no effect on git-version.h.

I'll try and figure it out but if anyone's got any pointers they'd be appreciated.

@hcorion
Copy link
Member

hcorion commented Aug 13, 2017

probably because normal Visual Studio builds don't regenerate git-version.h?
unless you're using linux.

Perhaps this git rev-parse --abbrev-ref HEAD could be helpful

@PeterMcteague
Copy link
Contributor Author

PeterMcteague commented Aug 15, 2017

I believe my latest commit should have this request completed.

I have updated the batch file to generate git-version numbers on windows with support for the branch number and have gotten the expected result on Windows.

Below is a picture of a game being ran on RPCS3 using this version. Note the version number at the top along with the branch name. Note the branch name intentionally should not appear if branch = "master" as suggested.

I have not tested on Linux but I believe the C++ code should work the same and the git-version.cmake file has been updated to also generate branch names in git-version.h , so I would expect it to work.

rpcs3 version num

If needs be I can recreate the pull request for cleaner commits, as mine have been a little messy (Still getting used to things).

@Asinin3
Copy link
Contributor

Asinin3 commented Aug 16, 2017

Would it be possible for you to add the branchname to the RPCS3.log file? would help identify the build people are using there as well without much effort.

@PeterMcteague
Copy link
Contributor Author

Yeah it should be easy enough I think. Might be a bit annoying to seperate my branch name stuff from the gs_frame stuff to commit it seperately, but I'll try.

@Asinin3
Copy link
Contributor

Asinin3 commented Aug 16, 2017

Well, you don't have to do it in this PR if it's messy, I just figured now was a good time to ask since you have experience with it now and hcorion seemed to be interested enough that he told me to ask you.

@PeterMcteague
Copy link
Contributor Author

PeterMcteague commented Aug 16, 2017

Cleaner if I do it in this PR, harder if I do it seperately. Will just do it in this PR.

EDIT: Done. Log file now looks like (Example from my log)

RPCS3 v0.0.3-5672-19612d21 Alpha
Branch: branch-in-logs
Intel(R) Core(TM) i5-4670K CPU @ 3.40GHz | 4 Threads | 15.92 GiB RAM | AVX

@PeterMcteague PeterMcteague changed the title Added version number to gs_frame Added version number to gs_frame and added branch name to gs_frame and log files Aug 16, 2017
@hcorion
Copy link
Member

hcorion commented Aug 18, 2017

Yep, works on Linux
image
snippet from log:

RPCS3 v0.0.3-5711-b256e281 Alpha
Branch: super-branch
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz | 8 Threads | 15.63 GiB RAM | AVX
·! 0:00:00.000000 LDR: Path: /home/zion/.config/rpcs3/dev_hdd0/game/NPUB90104/USRDIR/EBOOT.BIN
·! 0:00:00.000416 LDR: Title: 1942: Joint Strike
·! 0:00:00.000423 LDR: Serial: NPUB90104
·! 0:00:00.000446 LDR: Cache: /home/zion/.config/rpcs3/data/NPUB90104/75f7ec3436dd3a039b41c21d-EBOOT.BIN/
·! 0:00:00.000453 LDR: Applying custom config: data/NPUB90104/config.yml
·! 0:00:00.001516 LDR: Used configuration:

if (!Emu.GetTitle().empty())
{
m_windowTitle += qstr(" | " + Emu.GetTitle());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just wondering why you removed this and put it up there.
in case the ifdef fails we will have something like "VulkanDemon's Souls"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah the removal of the '|' is definitely a mistake, I don't actually recall why I did that. I'll fix it in a second.

@PeterMcteague PeterMcteague changed the title Added version number to gs_frame and added branch name to gs_frame and log files Add git_branch to git-version.h, add display version info to gs_frame and add branch and version in log Aug 24, 2017
@PeterMcteague PeterMcteague changed the title Add git_branch to git-version.h, add display version info to gs_frame and add branch and version in log Add git_branch to git-version.h, add display version info to gs_frame and add branch and version to log Aug 24, 2017
@hcorion
Copy link
Member

hcorion commented Aug 26, 2017

With this PR it now crashes RPCS3, before the GUI even launches, on Linux.

0x0000000000db3134 in logs::file_writer::log (this=0x4099300 <logs::get_logger()::logger>, size=0x3, text=<optimized out>) at /mnt/hd/Users/Zion/Documents/source/rpcs3-zion/Utilities/Log.cpp:327
327                     std::memcpy(m_fptr + pos, text, size);
gdb$ bt
#0  0x0000000000db3134 in logs::file_writer::log (this=0x4099300 <logs::get_logger()::logger>, size=0x3, text=<optimized out>) at /mnt/hd/Users/Zion/Documents/source/rpcs3-zion/Utilities/Log.cpp:327
#1  logs::file_listener::file_listener (this=0x4099300 <logs::get_logger()::logger>, name=...) at /mnt/hd/Users/Zion/Documents/source/rpcs3-zion/Utilities/Log.cpp:336
#2  0x0000000000db2669 in logs::get_logger () at /mnt/hd/Users/Zion/Documents/source/rpcs3-zion/Utilities/Log.cpp:85
#3  0x0000000000db2510 in logs::listener::add (_new=0x4093580 <s_gui_listener>) at /mnt/hd/Users/Zion/Documents/source/rpcs3-zion/Utilities/Log.cpp:203
#4  0x00000000007aa969 in _GLOBAL__sub_I_log_frame.cpp () at /mnt/hd/Users/Zion/Documents/source/rpcs3-zion/rpcs3/rpcs3qt/log_frame.cpp:42
#5  0x0000000001b7dc0d in __libc_csu_init ()
#6  0x00007fdb7dae845b in __libc_start_main () from /usr/lib/libc.so.6
#7  0x00000000007ff16a in _start () at /usr/include/qt/QtCore/qarraydata.h:237

@@ -293,7 +294,6 @@ logs::file_writer::file_writer(const std::string& name)
m_fmap = CreateFileMappingW(m_file.get_handle(), 0, PAGE_READWRITE, s_log_size >> 32, s_log_size & 0xffffffff, 0);
m_fptr = (uchar*)MapViewOfFile(m_fmap, FILE_MAP_WRITE, 0, 0, 0);
#else
m_file.trunc(s_log_size);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't delete this line, without this line RPCS3 crashes on Linux.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah must've deleted that by mistake when I was resolving the merge conflict. I've added it back in and will double check I haven't accidentally deleted anything else.

@hcorion
Copy link
Member

hcorion commented Aug 28, 2017

I was talking to Nekotekina, and he said he'd like all the unnecessary changes to Log.cpp to be undone.

@PeterMcteague
Copy link
Contributor Author

PeterMcteague commented Aug 28, 2017

I've looked at the file changes and there's the addition of the branch in the log files and some spacing changes before ='s - which weren't intentionally done by me, it just seems to be how my visual studio has interpreted the file for whatever reason , as well as some new lines being moved because lines have been added.

Are the unintentional spacing changes what should be undone?

@hcorion
Copy link
Member

hcorion commented Aug 28, 2017

I would assume so, yes.

@PeterMcteague
Copy link
Contributor Author

The spacing changes are reverted in commit 4d22317.

@scribam
Copy link
Contributor

scribam commented Sep 9, 2017

Do you think you can squash your commits and rebase your branch onto master? It would be probably cleaner to merge.

@PeterMcteague
Copy link
Contributor Author

PeterMcteague commented Sep 9, 2017

Yes, I should be able to later if it makes things easier.

EDIT: Done! I believe them to be correct , I've got to test a second though to make sure I rebased without issues.

EDIT2: Yep , working as expected!

…lso involved making the files that generate git-version.h , get the branch.
@PeterMcteague PeterMcteague changed the title Add git_branch to git-version.h, add display version info to gs_frame and add branch and version to log Add git_branch to git-version.h, add display version info to gs_frame and add branch and version to log. Sep 10, 2017
Copy link
Member

@hcorion hcorion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

ver.text = fmt::format("RPCS3 v%s\n%s", rpcs3::version.to_string(), utils::get_system_info());

#ifdef RPCS3_GIT_BRANCH
ver.text = fmt::format("RPCS3 v%s\nBranch: %s\n%s\n", rpcs3::version.to_string(), RPCS3_GIT_BRANCH, utils::get_system_info());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it can be solved without copying this line.
Maybe add this to rpcs3::version then? Plus don't really need another line for this.

Copy link
Contributor Author

@PeterMcteague PeterMcteague Sep 13, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes , I seem to have missed that. I'll shortly change that to one line and put the branch into RPCS3::version.

EDIT: Having tried it , it seems when I move branch to rpcs3::version it doesn't get defined until after the log is created. I will commit cleaning up the lines and do some reading into that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There we go. Thanks for the review , I think it should be better now! :)

These aren't neccesary as git_branch will definitely be defined, as it's
generated.
-Version for gs_frame is now one line
-Unncesary ifdefs removed again
Copy link
Member

@Nekotekina Nekotekina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bugs

namespace rpcs3
{
const extern utils::version version{ 0, 0, 3, utils::version_type::alpha, 1, RPCS3_GIT_VERSION };
const char* branch{get_branch()};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will be nullptr at startup and may crash depending on initialization order. It must be a function callable from the outside.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think it should avoid that in the latest commit, not 100% sure though.

version = version.substr(0 , version.find_last_of("-"));

//Add branch to version on frame , unless it's master.
if (rpcs3::branch != "master")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a string comparison

PeterMcteague and others added 2 commits September 15, 2017 16:12
It's now inside the namespace and is just a function returning a
std::string which presents less issues than the previous implementation.
@Nekotekina Nekotekina merged commit c18e71c into RPCS3:master Sep 16, 2017
extern const utils::version version;
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't remove newlines at the end of file

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright , will keep an eye out for that in future.

@@ -1,4 +1,4 @@
#include "Log.h"
#include "Log.h"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How you managed to damage unicode mark?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couldn't tell you , I'm just using Visual Studio community 2017 on Windows. Would you like me to do another commit to try and remove these kind of commits (Removed X and added X) and remove some unintended changes like newlines being removed?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I pushed fixes in my PR

PeterMcteague added a commit to PeterMcteague/rpcs3 that referenced this pull request Sep 27, 2017
… and add branch and version to log. (RPCS3#3186)

* Added version number and branch name to gs_frame and log file. This also involved making the files that generate git-version.h , get the branch.
PeterMcteague added a commit to PeterMcteague/rpcs3 that referenced this pull request Sep 27, 2017
* Qt: Remove duplicate gui repaints in settings dialog

ApplyGuiOptions(true) already forces GuiStylesheetRequest and therefore RepaintGui in main_window if necessary.
We don't need GuiRepaintRequest on accept because there should be no option left that doesn't repaint immediately

* Qt: improve gamelist refresh, fix some more scroll issues

despite earlier efforts with modelindex and so on the annoying scroll jump still surfaced sometimes, so we only scrollTo index on selected occasions from now on.
Furthermore we don't need to refresh the gamelist if no custom config has been applied, so this will only be needed on accept from now on

* Fix buffer overrun in cert loading, made it more accurate. Fixes RPCS3#3408

* Added additional disc folder detection and INSDIR functionality.

* fs: minor fix

* sys_fs: use g_tls_error for diagnostic

Affected syscalls:
sys_fs_open
sys_fs_opendir
sys_fs_stat
sys_fs_mkdir
sys_fs_fcntl (get free space)

* sys_mmapper: minor range fix

* Improve lv2_memory object

* Implement fs::error::notempty

* Vulkan: use pkg-config instead of checking for Linux (RPCS3#3440)

Makes Vulkan optional on Linux / makes it possible on FreeBSD.

* Update Visual Studio 2015 URL

* Add git_branch to git-version.h, add display version info to gs_frame and add branch and version to log. (RPCS3#3186)

* Added version number and branch name to gs_frame and log file. This also involved making the files that generate git-version.h , get the branch.

* Implemented installation of PS3_EXTRA

PS3_EXTRA games are installed if they're not already and then the game
boots. Unsure if the game booting is the correct behavior but I think it
is.

* Redid a forgotten change

* Qt: settings_dialog layout fix (hack)

* Qt: add char count label to osk dialog

* [Qt] fix graphics adapter selection and rebase for less redundancy

* HGA calls sys_rsx_context_attribute before calling sys_rsx_memory_allocate. This inevitably causes RPCS3 to crash.  Add nullptr check to prevent this.

* Moved all currently written installs to main_window

This gives a much nicer install dialog. In future I want to give some
better way of installing the PS3_EXTRA stuff, preferably giving it it's
own menu.

* Moved installs to main_window so they could have a progress bar

This was also more appropriate for it, as they should be installed
before boot.

* Reverted changes to system.cpp

Got missed in previous commit, idk why

* Silent some compiler warnings

* Move sys_process_exit

* Add <typeinfo>

* Backup logs to old_logs/

* Fix initial log message

* Implemented MFF_HIDDEN for VNIDs

Minor refactoring
Now possible: ```REF_FUNC(...).flag(MFF_HIDDEN);```

* Implemented syscall _sys_process_exit

* Restore UTF-8 in Log.cpp

* Fixed global variables in Log.cpp

* Remove unnecessary newline in Log.cpp

* Implemented __sys_look_ctype_table

Implemented _sys_tolower, _sys_toupper
Fixed _sys_strncasecmp

* Implemented _sys_prx_load_module_on_memcontainer

* Rewrite _sys_memcmp

* Fix _sys_strncasecmp

* Rewrite _sys_strlen

* Rewrite _sys_strcmp

* Rewrite _sys_strncmp

* Rewrite _sys_strcat

* Rewrite _sys_strcpy

* Rewrite _sys_strchr

* Rewrite _sys_strrchr

* Rewrite _sys_strncpy

* Patch: new 'load' syntax

[load, path_name1] - load sequence
[load, path_name2, -0x40] - same, but modify the addresses by -64

* Rewrite _sys_strncat

* Exitspawn support renewal

Implemented _sys_process_exit2 syscall
Rewritten sys_game_process_exitspawn
Rewritten sys_game_process_exitspawn2
Implemented _sys_process_atexitspawn
Implemented _sys_process_at_Exitspawn
And some other changes

* Fix error on loading a library twice

* sys_fs_mkdir: implement ENOENT

* Try to fix some fs errors

* Fix library loading mode 'both'

* Remove unnecessary include git-version.h

* cellAudio: use error_code

* Minor VFS fix

* rsx/vk/gl: Refactoring and reimplementation of blit engine
Fix rsx offscreen-render-to-display-buffer-blit surface reads
- Also, properly scale display output height if reading from compressed tile

gl: Fix broken dst height computation
- The extra padding is only there to force power-of-2 sizes and isnt used

gl: Ignore compression scaling if output is rendered to in a renderpass

rsx/gl/vk: Cleanup for GPU texture scaling. Initial impl [WIP]
- TODO: Refactor more shared code into RSX/common

* rsx/vk: Bug fixes
- Make each frame context own its own memory
- Fix GPU blit
- Fix image layout transitions in flip

vk: Improve frame-local memory usage tracking to prevent overwrites
- Also slightly bumps VRAM requirements for stream buffers to help with running out of storage
- Fixes flickering and missing graphics in some cases. Flickering is still there and needs more work
vk: Up vertex attribute heap size and increase the guard size on it
vulkan: Reorganize memory management
vulkan: blit cleanup
vulkan: blit engine improvements
- Override existing image mapping when conflicts detected
- Allow blitting of depth/stencil surfaces

* rsx: Several fixes and improvements
- Do not ignore non-centered pixel blitting
- Register method ac00+16
- Bump texture memory heap to account for GPU texture scaling requirements (vulkan)
- Explicit MRT location index output to better convey intent (openGL)

* esx: Fixes to the texture cache
rsx: Blit engine improvements
- Always handle blits to and from framebuffers through the GPU
- Handle depth surfaces properly when using GL
- Check for format mismatches when blitting to the surface store [WIP]

* rsx/fp: Shader decompiler fixes
- Requires proper 2-pass impl
rsx/fp: Catch hanging code blocks
rsx/fp: Don't pause on scaling error

* rsx: Bug fixes and improvements
rsx: Try to skip unknown commands without discarding entire cb

* rsx: Add support for batched multidraw
gl: Fix multidraw [WIP]
rsx: Ignore vertex base when data source is generated using arithmetic
vk: Check pending flag before doing fence poke
vk/gl: Fix for inlined array and immediate draws
rsx: Collapse joined draws when batching

* rsx: Texture cache fixes and improvments
gl/vk/rsx: Refactoring; unify texture cache code
gl: Fixups
- Removes rsx::gl::texture class and leave gl::texture intact
- Simplify texture create and upload mechanisms
- Re-enable texture uploads with the new texture cache mechanism
rsx: texture cache - check if bit region fits into dst texture before attempting to copy
gl/vk: Cleanup
- Set initial texture layout to DST_OPTIMAL since it has no data in it anyway at the start
- Move structs outside of classes to avoid clutter

* gl: cleanup; fix program linkage on mesa using GL_ARB_explicit_uniform_location, also make use of ARB_multidraw

* gl: Minor optimizations
rsx: Texture cache - improvements to locking
rsx: Minor optimizations to get_current_vertex_program and begin-end batch flushes
rsx: Optimize texture cache storage
- Manages storage in blocks of 16MB
rsx/vk/gl: Fix swizzled texture input
gl: Hotfix for compressed texture formats

* rsx: Fix multidraw range splits again
rsx: Hotfix for disjoint range detection

* rsx: Texture cache improvements
- Limits buffer size to min 720 in the Y axis (1024 section causes conflicts in some cases - TODO)
rsx: Fixups to allow large textures for blit operation
- Also includes checks for both leaking sections and blit regions for vulkan
hotfix for hanging when using WCB
addendum - unlock both ro and no blocks before attempting to copy memory blocks
gl: Fixups for ARB_explicit_uniform_location
- Forces glsl v 430 to make use of the extension
rsx/vk: Rework texture cache to minimize recursive access violations
- Also modifies the vulkan commandbuffer begin/end/submit mechanism
gl: Fix cached_texture_section::is_flushable to take memory protection into account
rsx: Fix blit dst offset calculation

* rsx: Fixups

* rsx: Add support for non-projective shadow sampling
- Fixes missing shadows in persona 5

vk: Enable polygon depth bias a.k.a polygonOffset
- Fixes shadow acne in persona 5

* rsx: Texture cache fixes and improvements
rsx: Conditional lock hack removed
vulkan - Fixes
- Remove unused texture class
- Fix native pitch calculation (WCB)
rsx: Catch hanging begin/end pairs when flushing deferred draw calls
vulkan: Register DXT compressed formats
vulkan: Register depth formats
gl: Workaround for 'texture stitching' when gathering flip surface
- TODO: Add a proper flip hack option
rsx: Fix texture memory size calculation
- DXT textures dont have real pitch. Since pitch is used to calculate memory size, make sure it always evaluates to rsx_size
rsx: Fix cpu copy detection
rsx: Validate blit dst surface and dont make assumptions about region blit order
- Also relax restrictions on memory owned by the blit engine if strict rendering is not enabled
rsx: Fix depth texture detection
rsx: Do not manually offset into dst. The overlapped range check does so automatically
rsx: Minor optimizations
rsx: Minor fixes
- Fix to detect incompatible formats when using GPU texture scaling and show message
- Better 'is_depth_texture' algorithm to eliminate false positives

* Deploy QT DLLs using windeployqt tool (RPCS3#3432)

* Deploy QT DLLs using windeployqt tool

Replace the old mechanism that manually copy the DLLs using either CMake
or VS built-in functions. The new approach uses the windeployqt tool
provided by the QT project that automatically detect the needed DLLs and
perform the necessary copying.

This approach should be more robust if there's an upstream change on QT
project regarding DLLs usage.

* QT DLLs: do not ship RPCS3 with ANGLE and software-OpenGL

According to https://doc.qt.io/qt-5/windows-requirements.html ANGLE is
useful for applications that use OpenGL ES by removing the need to
install OpenGL drivers, redirecting OpenGL calls to DirectX instead.
RPCS does not uses OpenGL ES so it's better to just remove it from the
binary distribution.

opengl32sw.dll is a fallback mechanism when ANGLE libraries are not
available that uses a software backend for OpenGL. It's unlikely that
RPCS3 will work using software-OpenGL, so there's little point into
shipping them.

* QT DLLs: do not ship with SVG and translation files

Like the other removed QT libraries: they are not needed right now. We
can deploy them if they become useful someday.

* Allow null argument

Should fix Jak 2

* gl: Check that fence is not empty before calling destroy

* rsx: Fixes
- Fix section scanning range for early reject
- Specify IMAGE_ASPECT_STENCIL when uploading image_from_cpu

* vs/qt: Explicitly reference target output to avoid failing post-build step
- Referencing the whole build folder will err if there is any non-qt exe in the folder

* Fix branch name for AppVeyor Builds (RPCS3#3472)

* rsx: Texture cache fixes
- Update section flags when requested
- Fix nullptr dereference: cached_dest will be null if dst_is_render_target is true

* rsx: Make the 3rd texture dimension matter
- Affects cube maps and texture3D surfaces

* vulkan: Optimize memory allocation

* vulkan: Use frameid to determine texture storage to discard

* vk: New images always should be UNDEFINED or PREINITIALIZED

* rsx: Clean up debug overlays. Add unreleased textures metric to track texture memory

* vk: Clamp unreleased texture metric
- TODO: Find the leaking references

* ds4: Fix initial connection issue and hotplug/dongle calibration detection

* Removed tropdir checks as trophies are already installed

I believe trophies to already be installed once the game is launched,
according to my dev_hdd0\home\00000001\trophy folder anyway.

* Added automatic .pkg installation to games on initial boot

* fs: minor fix

* sys_fs: use g_tls_error for diagnostic

Affected syscalls:
sys_fs_open
sys_fs_opendir
sys_fs_stat
sys_fs_mkdir
sys_fs_fcntl (get free space)

* Qt: Remove duplicate gui repaints in settings dialog

ApplyGuiOptions(true) already forces GuiStylesheetRequest and therefore RepaintGui in main_window if necessary.
We don't need GuiRepaintRequest on accept because there should be no option left that doesn't repaint immediately

* Qt: improve gamelist refresh, fix some more scroll issues

despite earlier efforts with modelindex and so on the annoying scroll jump still surfaced sometimes, so we only scrollTo index on selected occasions from now on.
Furthermore we don't need to refresh the gamelist if no custom config has been applied, so this will only be needed on accept from now on

* Fix buffer overrun in cert loading, made it more accurate. Fixes RPCS3#3408

* sys_mmapper: minor range fix

* Improve lv2_memory object

* Implement fs::error::notempty

* Vulkan: use pkg-config instead of checking for Linux (RPCS3#3440)

Makes Vulkan optional on Linux / makes it possible on FreeBSD.

* Update Visual Studio 2015 URL

* Qt: add char count label to osk dialog

* Add git_branch to git-version.h, add display version info to gs_frame and add branch and version to log. (RPCS3#3186)

* Added version number and branch name to gs_frame and log file. This also involved making the files that generate git-version.h , get the branch.

* Qt: settings_dialog layout fix (hack)

* HGA calls sys_rsx_context_attribute before calling sys_rsx_memory_allocate. This inevitably causes RPCS3 to crash.  Add nullptr check to prevent this.

* Silent some compiler warnings

* [Qt] fix graphics adapter selection and rebase for less redundancy

* Move sys_process_exit

* Add <typeinfo>

* Backup logs to old_logs/

* Fix initial log message

* Implemented MFF_HIDDEN for VNIDs

Minor refactoring
Now possible: ```REF_FUNC(...).flag(MFF_HIDDEN);```

* Implemented syscall _sys_process_exit

* Restore UTF-8 in Log.cpp

* Fixed global variables in Log.cpp

* Remove unnecessary newline in Log.cpp

* Implemented __sys_look_ctype_table

Implemented _sys_tolower, _sys_toupper
Fixed _sys_strncasecmp

* Implemented _sys_prx_load_module_on_memcontainer

* Rewrite _sys_memcmp

* Fix _sys_strncasecmp

* Rewrite _sys_strlen

* Rewrite _sys_strcmp

* Rewrite _sys_strncmp

* Rewrite _sys_strcat

* Rewrite _sys_strcpy

* Rewrite _sys_strchr

* Rewrite _sys_strrchr

* Rewrite _sys_strncpy

* Patch: new 'load' syntax

[load, path_name1] - load sequence
[load, path_name2, -0x40] - same, but modify the addresses by -64

* Rewrite _sys_strncat

* Exitspawn support renewal

* Fix error on loading a library twice

* sys_fs_mkdir: implement ENOENT

* rsx/vk/gl: Refactoring and reimplementation of blit engine
Fix rsx offscreen-render-to-display-buffer-blit surface reads
- Also, properly scale display output height if reading from compressed tile

gl: Fix broken dst height computation
- The extra padding is only there to force power-of-2 sizes and isnt used

gl: Ignore compression scaling if output is rendered to in a renderpass

rsx/gl/vk: Cleanup for GPU texture scaling. Initial impl [WIP]
- TODO: Refactor more shared code into RSX/common

* rsx/vk: Bug fixes
- Make each frame context own its own memory
- Fix GPU blit
- Fix image layout transitions in flip

vk: Improve frame-local memory usage tracking to prevent overwrites
- Also slightly bumps VRAM requirements for stream buffers to help with running out of storage
- Fixes flickering and missing graphics in some cases. Flickering is still there and needs more work
vk: Up vertex attribute heap size and increase the guard size on it
vulkan: Reorganize memory management
vulkan: blit cleanup
vulkan: blit engine improvements
- Override existing image mapping when conflicts detected
- Allow blitting of depth/stencil surfaces

* Try to fix some fs errors

* Fix library loading mode 'both'

* Remove unnecessary include git-version.h

* cellAudio: use error_code

* Minor VFS fix

* rsx: Several fixes and improvements
- Do not ignore non-centered pixel blitting
- Register method ac00+16
- Bump texture memory heap to account for GPU texture scaling requirements (vulkan)
- Explicit MRT location index output to better convey intent (openGL)

* esx: Fixes to the texture cache
rsx: Blit engine improvements
- Always handle blits to and from framebuffers through the GPU
- Handle depth surfaces properly when using GL
- Check for format mismatches when blitting to the surface store [WIP]

* rsx/fp: Shader decompiler fixes
- Requires proper 2-pass impl
rsx/fp: Catch hanging code blocks
rsx/fp: Don't pause on scaling error

* rsx: Bug fixes and improvements
rsx: Try to skip unknown commands without discarding entire cb

* rsx: Add support for batched multidraw
gl: Fix multidraw [WIP]
rsx: Ignore vertex base when data source is generated using arithmetic
vk: Check pending flag before doing fence poke
vk/gl: Fix for inlined array and immediate draws
rsx: Collapse joined draws when batching

* gl: cleanup; fix program linkage on mesa using GL_ARB_explicit_uniform_location, also make use of ARB_multidraw

* rsx: Texture cache fixes and improvments
gl/vk/rsx: Refactoring; unify texture cache code
gl: Fixups
- Removes rsx::gl::texture class and leave gl::texture intact
- Simplify texture create and upload mechanisms
- Re-enable texture uploads with the new texture cache mechanism
rsx: texture cache - check if bit region fits into dst texture before attempting to copy
gl/vk: Cleanup
- Set initial texture layout to DST_OPTIMAL since it has no data in it anyway at the start
- Move structs outside of classes to avoid clutter

* gl: Minor optimizations
rsx: Texture cache - improvements to locking
rsx: Minor optimizations to get_current_vertex_program and begin-end batch flushes
rsx: Optimize texture cache storage
- Manages storage in blocks of 16MB
rsx/vk/gl: Fix swizzled texture input
gl: Hotfix for compressed texture formats

* rsx: Fix multidraw range splits again
rsx: Hotfix for disjoint range detection

* rsx: Texture cache improvements
- Limits buffer size to min 720 in the Y axis (1024 section causes conflicts in some cases - TODO)
rsx: Fixups to allow large textures for blit operation
- Also includes checks for both leaking sections and blit regions for vulkan
hotfix for hanging when using WCB
addendum - unlock both ro and no blocks before attempting to copy memory blocks
gl: Fixups for ARB_explicit_uniform_location
- Forces glsl v 430 to make use of the extension
rsx/vk: Rework texture cache to minimize recursive access violations
- Also modifies the vulkan commandbuffer begin/end/submit mechanism
gl: Fix cached_texture_section::is_flushable to take memory protection into account
rsx: Fix blit dst offset calculation

* rsx: Fixups

* rsx: Add support for non-projective shadow sampling
- Fixes missing shadows in persona 5

vk: Enable polygon depth bias a.k.a polygonOffset
- Fixes shadow acne in persona 5

* rsx: Texture cache fixes and improvements
rsx: Conditional lock hack removed
vulkan - Fixes
- Remove unused texture class
- Fix native pitch calculation (WCB)
rsx: Catch hanging begin/end pairs when flushing deferred draw calls
vulkan: Register DXT compressed formats
vulkan: Register depth formats
gl: Workaround for 'texture stitching' when gathering flip surface
- TODO: Add a proper flip hack option
rsx: Fix texture memory size calculation
- DXT textures dont have real pitch. Since pitch is used to calculate memory size, make sure it always evaluates to rsx_size
rsx: Fix cpu copy detection
rsx: Validate blit dst surface and dont make assumptions about region blit order
- Also relax restrictions on memory owned by the blit engine if strict rendering is not enabled
rsx: Fix depth texture detection
rsx: Do not manually offset into dst. The overlapped range check does so automatically
rsx: Minor optimizations
rsx: Minor fixes
- Fix to detect incompatible formats when using GPU texture scaling and show message
- Better 'is_depth_texture' algorithm to eliminate false positives

* Allow null argument

Should fix Jak 2

* gl: Check that fence is not empty before calling destroy

* Deploy QT DLLs using windeployqt tool (RPCS3#3432)

* Deploy QT DLLs using windeployqt tool

Replace the old mechanism that manually copy the DLLs using either CMake
or VS built-in functions. The new approach uses the windeployqt tool
provided by the QT project that automatically detect the needed DLLs and
perform the necessary copying.

This approach should be more robust if there's an upstream change on QT
project regarding DLLs usage.

* QT DLLs: do not ship RPCS3 with ANGLE and software-OpenGL

According to https://doc.qt.io/qt-5/windows-requirements.html ANGLE is
useful for applications that use OpenGL ES by removing the need to
install OpenGL drivers, redirecting OpenGL calls to DirectX instead.
RPCS does not uses OpenGL ES so it's better to just remove it from the
binary distribution.

opengl32sw.dll is a fallback mechanism when ANGLE libraries are not
available that uses a software backend for OpenGL. It's unlikely that
RPCS3 will work using software-OpenGL, so there's little point into
shipping them.

* QT DLLs: do not ship with SVG and translation files

Like the other removed QT libraries: they are not needed right now. We
can deploy them if they become useful someday.

* rsx: Fixes
- Fix section scanning range for early reject
- Specify IMAGE_ASPECT_STENCIL when uploading image_from_cpu

* vs/qt: Explicitly reference target output to avoid failing post-build step
- Referencing the whole build folder will err if there is any non-qt exe in the folder

* rsx: Texture cache fixes
- Update section flags when requested
- Fix nullptr dereference: cached_dest will be null if dst_is_render_target is true

* Fix branch name for AppVeyor Builds (RPCS3#3472)

* ds4: Fix initial connection issue and hotplug/dongle calibration detection

* rsx: Make the 3rd texture dimension matter
- Affects cube maps and texture3D surfaces

* vulkan: Optimize memory allocation

* vulkan: Use frameid to determine texture storage to discard

* vk: New images always should be UNDEFINED or PREINITIALIZED

* rsx: Clean up debug overlays. Add unreleased textures metric to track texture memory

* vk: Clamp unreleased texture metric
- TODO: Find the leaking references
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants