mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 19:07:01 +02:00
38 lines
1.3 KiB
C++
38 lines
1.3 KiB
C++
#include "graphics/shader/shaderBindings.h"
|
|
|
|
#include "common/assert.h"
|
|
#include "graphics/guest_gpu/gpu_defs.h"
|
|
|
|
namespace Libs::Graphics {
|
|
|
|
ResourceDescriptorType ShaderClassifyResourceDescriptor(const uint32_t* desc) {
|
|
EXIT_IF(desc == nullptr);
|
|
|
|
const auto raw_type = (desc[3] >> 28u) & 0xfu;
|
|
switch (static_cast<Prospero::ImageType>(raw_type)) {
|
|
case Prospero::ImageType::kColor1D:
|
|
case Prospero::ImageType::kColor2D:
|
|
case Prospero::ImageType::kColor3D:
|
|
case Prospero::ImageType::kCube:
|
|
case Prospero::ImageType::kColor1DArray:
|
|
case Prospero::ImageType::kColor2DArray:
|
|
case Prospero::ImageType::kColor2DMsaa:
|
|
case Prospero::ImageType::kColor2DMsaaArray: return ResourceDescriptorType::Texture;
|
|
default: break;
|
|
}
|
|
|
|
// The mixed resource tag shares a byte with texture fields, so texture type wins.
|
|
switch (static_cast<Prospero::DescriptorKind>((desc[5] >> 27u) & 0x3u)) {
|
|
case Prospero::DescriptorKind::kBuffer: return ResourceDescriptorType::Buffer;
|
|
case Prospero::DescriptorKind::kSampler: return ResourceDescriptorType::Sampler;
|
|
case Prospero::DescriptorKind::kUnused: return ResourceDescriptorType::Unused;
|
|
default: break;
|
|
}
|
|
|
|
return (raw_type & static_cast<uint32_t>(Prospero::ImageType::kColor1D)) == 0
|
|
? ResourceDescriptorType::Buffer
|
|
: ResourceDescriptorType::Unused;
|
|
}
|
|
|
|
} // namespace Libs::Graphics
|