mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-27 00:28:14 +00:00
feat(agc): draw point lists on the vertex path with their point size
A point list routed through the vertex path was refused, and so was PA_CL_VS_OUT_CNTL.USE_VTX_POINT_SIZE on it. OliSe Player (PPSA01153) stops on the latter with two of its MilkDrop presets. The vertex path now draws point lists as Vulkan points. The vertex stage writes PointSize: the misc export's X clamped to PA_SU_POINT_MINMAX when USE_VTX_POINT_SIZE is set, and the PA_SU_POINT_SIZE height otherwise. The point state travels in the recompile request (version 31) and the cache and draw keys. Non-square register sizes, inverted clamps, point sprite texture coordinates and, without largePoints, sizes other than one pixel throw. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
27bcd6a29e
commit
e7ea490325
22 files changed
+375
-16
No files matched your search
@@ -4,6 +4,7 @@
|
||||
#include "Recompiler.hpp"
|
||||
#include "RdnaDecoder/RdnaDescriptorFormat.hpp"
|
||||
#include "prx/libc/include/HostThreadLocal.hpp"
|
||||
#include <bit>
|
||||
#include <cstdlib>
|
||||
#include <stdexcept>
|
||||
#include <type_traits>
|
||||
@@ -233,6 +234,10 @@ private:
|
||||
append(key, value.fetchEmbedded);
|
||||
append(key, value.paClVsOutCntl);
|
||||
append(key, value.depthRemapMode);
|
||||
append(key, value.pointList);
|
||||
append(key, std::bit_cast<std::uint32_t>(value.pointSize));
|
||||
append(key, std::bit_cast<std::uint32_t>(value.pointSizeMin));
|
||||
append(key, std::bit_cast<std::uint32_t>(value.pointSizeMax));
|
||||
if (value.resourcesNum > value.resources.size()) throw std::runtime_error("Shader cache: invalid vertex resource count");
|
||||
append(key, value.resourcesNum);
|
||||
for (std::uint32_t i = 0; i < value.resourcesNum; ++i) {
|
||||
|
||||
Reference in new issue
Block a user