mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-05-31 15:53:17 +00:00
video_core: Improve handling of image buffer aliases (#757)
* texture_cache: Use invalidate threshhold * It's possible for shaders to bind huge buffers and only write to lower portion of it. This is a problem if upper parts of the buffer overlap with render targets. If the image is very far away from buffer base it's unlikely the shader will want to write it, so skip invalidation for it * video_core: Allow using texture cache to validate texture buffers * texture_cache: Use buffer cache in all cases for data source * Allows to correctly handle compute written micro tiled textures * texture_cache: Fix depth pitch * kernel: Remove missed code * clang format * video_core: Adjust depth format * buffer_cache: Do not cache buffer views * thread_management: Do not call createMutex on unlock * temp: Revert this when pr is done * buffer_cache: Dont skip cpu uploads with image sync * Sometimes image does not fully overlap with a region * fix build * video_core: Improve invalidate heuristic * small fixes * video_core: Hopefully fix some vertex explosions
This commit is contained in:
parent
4e0dc91040
commit
b08baaeb13
18 changed files with 248 additions and 191 deletions
|
@ -414,11 +414,6 @@ ScePthreadMutex* createMutex(ScePthreadMutex* addr) {
|
|||
if (addr == nullptr || *addr != nullptr) {
|
||||
return addr;
|
||||
}
|
||||
static std::mutex mutex;
|
||||
std::scoped_lock lk{mutex};
|
||||
if (*addr != nullptr) {
|
||||
return addr;
|
||||
}
|
||||
const VAddr vaddr = reinterpret_cast<VAddr>(addr);
|
||||
std::string name = fmt::format("mutex{:#x}", vaddr);
|
||||
scePthreadMutexInit(addr, nullptr, name.c_str());
|
||||
|
@ -584,8 +579,7 @@ int PS4_SYSV_ABI scePthreadMutexLock(ScePthreadMutex* mutex) {
|
|||
}
|
||||
|
||||
int PS4_SYSV_ABI scePthreadMutexUnlock(ScePthreadMutex* mutex) {
|
||||
mutex = createMutex(mutex);
|
||||
if (mutex == nullptr) {
|
||||
if (mutex == nullptr || *mutex == nullptr) {
|
||||
return SCE_KERNEL_ERROR_EINVAL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue