mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-27 16:02:37 +00:00
Implement RDNA2 64-bit image atomic maximum
Co-authored-by: shadowbeat070 <70843316+shadowbeat070@users.noreply.github.com>
This commit is contained in:
1 parent
e6cb880adb
commit
ef4c5baf3a
19 files changed
+244
-57
No files matched your search
@@ -3139,15 +3139,15 @@ void TestShaderInfoAndBindingLayout() {
|
||||
void TestImageBindingAbi() {
|
||||
using NumericClass = Libs::Graphics::Prospero::TextureNumericClass;
|
||||
|
||||
Check(ImageBindingCount == 43u &&
|
||||
Check(ImageBindingCount == 48u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::Buffers) == 0u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::Samplers) == 44u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::Gds) == 45u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::BdaPagetable) == 46u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::FaultBuffer) == 47u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::FlattenedSrt) == 48u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::ShaderData) == 49u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::Count) == 50u,
|
||||
static_cast<uint32_t>(DescriptorBindingKind::Samplers) == 49u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::Gds) == 50u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::BdaPagetable) == 51u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::FaultBuffer) == 52u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::FlattenedSrt) == 53u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::ShaderData) == 54u &&
|
||||
static_cast<uint32_t>(DescriptorBindingKind::Count) == 55u,
|
||||
"native descriptor binding anchors changed");
|
||||
|
||||
const std::array sampled_dimensions{
|
||||
@@ -3170,12 +3170,13 @@ void TestImageBindingAbi() {
|
||||
uint32_t index = 0;
|
||||
const auto CheckBinding =
|
||||
[&](ImageResourceClass resource_class, NumericClass numeric_class,
|
||||
Decoder::ImageDimension dimension, bool atomic, bool comparison = false) {
|
||||
Decoder::ImageDimension dimension, bool atomic, bool comparison = false, bool atomic64 = false) {
|
||||
ImageResource image;
|
||||
image.resource_class = resource_class;
|
||||
image.numeric_class = numeric_class;
|
||||
image.dimension = dimension;
|
||||
image.atomic = atomic;
|
||||
image.atomic64 = atomic64;
|
||||
image.depth_compare = comparison;
|
||||
const auto kind = DescriptorBindingForImage(image);
|
||||
Check(kind.has_value() &&
|
||||
@@ -3210,6 +3211,10 @@ void TestImageBindingAbi() {
|
||||
CheckBinding(ImageResourceClass::Storage, NumericClass::Uint, dimension,
|
||||
true);
|
||||
}
|
||||
for (const auto dimension : storage_dimensions) {
|
||||
CheckBinding(ImageResourceClass::Storage, NumericClass::Uint, dimension,
|
||||
true, false, true);
|
||||
}
|
||||
Check(index == ImageBindingCount, "image descriptor ABI case count changed");
|
||||
|
||||
const auto Invalid = [](ImageResource image) {
|
||||
|
||||
Reference in new issue
Block a user