PS5 graphics (#42)

This commit is contained in:
InoriRus
2022-08-18 12:29:59 +03:00
parent 90acd3d364
commit a753022096
10 changed files with 469 additions and 324 deletions
@@ -585,9 +585,11 @@ enum class UserSgprType
struct UserSgprInfo
{
uint32_t value[16] = {0};
UserSgprType type[16] = {};
uint32_t count = 0;
static constexpr int SGPRS_MAX = 16;
uint32_t value[SGPRS_MAX] = {0};
UserSgprType type[SGPRS_MAX] = {};
uint32_t count = 0;
};
struct VertexShaderInfo
@@ -101,7 +101,9 @@ enum class ShaderInstructionType : uint32_t
SMovB32,
SMovB64,
SMovkI32,
SMulHiU32,
SMulI32,
SMulkI32,
SNandB64,
SNorB64,
SOrB32,
@@ -181,6 +183,7 @@ enum class ShaderInstructionType : uint32_t
VFloorF32,
VFmaF32,
VFractF32,
VInterpMovF32,
VInterpP1F32,
VInterpP2F32,
VLogF32,
@@ -716,6 +719,11 @@ struct ShaderGdsResource
[[nodiscard]] uint16_t Size() const { return field & 0xFFFFu; }
};
struct ShaderDirectSgprResource
{
uint32_t field = 0;
};
struct ShaderExtendedResource
{
uint32_t fields[2] = {0};
@@ -823,6 +831,15 @@ struct ShaderGdsResources
int binding_index = 0;
};
struct ShaderDirectSgprsResources
{
static constexpr int SGPRS_MAX = 4;
ShaderDirectSgprResource sgprs[SGPRS_MAX];
int start_register[SGPRS_MAX] = {0};
int sgprs_num = 0;
};
struct ShaderExtendedResources
{
bool used = false;
@@ -833,14 +850,15 @@ struct ShaderExtendedResources
struct ShaderBindResources
{
uint32_t push_constant_offset = 0;
uint32_t push_constant_size = 0;
uint32_t descriptor_set_slot = 0;
ShaderStorageResources storage_buffers;
ShaderTextureResources textures2D;
ShaderSamplerResources samplers;
ShaderGdsResources gds_pointers;
ShaderExtendedResources extended;
uint32_t push_constant_offset = 0;
uint32_t push_constant_size = 0;
uint32_t descriptor_set_slot = 0;
ShaderStorageResources storage_buffers;
ShaderTextureResources textures2D;
ShaderSamplerResources samplers;
ShaderGdsResources gds_pointers;
ShaderDirectSgprsResources direct_sgprs;
ShaderExtendedResources extended;
};
struct ShaderVertexInputInfo