mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-12 13:13:43 +00:00
rsx: vertex attribute size is 1 again for CMP, let backend handles this formats properties.
This commit is contained in:
parent
66e57ae19b
commit
6b7ce37374
@ -11,8 +11,9 @@
|
||||
|
||||
namespace
|
||||
{
|
||||
UINT get_component_mapping_from_vector_size(u8 size)
|
||||
UINT get_component_mapping_from_vector_size(rsx::vertex_base_type type, u8 size)
|
||||
{
|
||||
if (type == rsx::vertex_base_type::cmp) return D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
|
||||
switch (size)
|
||||
{
|
||||
case 1:
|
||||
@ -51,9 +52,8 @@ namespace
|
||||
{
|
||||
u32 element_size = rsx::get_vertex_type_size_on_host(info.type(), info.size());
|
||||
D3D12_SHADER_RESOURCE_VIEW_DESC vertex_buffer_view = {
|
||||
get_vertex_attribute_format(info.type(), info.size()),
|
||||
D3D12_SRV_DIMENSION_BUFFER,
|
||||
get_component_mapping_from_vector_size(info.size())};
|
||||
get_vertex_attribute_format(info.type(), info.size()), D3D12_SRV_DIMENSION_BUFFER,
|
||||
get_component_mapping_from_vector_size(info.type(), info.size())};
|
||||
vertex_buffer_view.Buffer.FirstElement = offset_in_vertex_buffers_buffer / element_size;
|
||||
vertex_buffer_view.Buffer.NumElements = buffer_size / element_size;
|
||||
return vertex_buffer_view;
|
||||
@ -62,11 +62,8 @@ namespace
|
||||
D3D12_SHADER_RESOURCE_VIEW_DESC get_vertex_attribute_srv(const rsx::vertex_base_type type, u8 size, UINT64 offset_in_vertex_buffers_buffer, UINT buffer_size)
|
||||
{
|
||||
u32 element_size = rsx::get_vertex_type_size_on_host(type, size);
|
||||
D3D12_SHADER_RESOURCE_VIEW_DESC vertex_buffer_view = {
|
||||
get_vertex_attribute_format(type, size),
|
||||
D3D12_SRV_DIMENSION_BUFFER,
|
||||
get_component_mapping_from_vector_size(size)
|
||||
};
|
||||
D3D12_SHADER_RESOURCE_VIEW_DESC vertex_buffer_view = {get_vertex_attribute_format(type, size),
|
||||
D3D12_SRV_DIMENSION_BUFFER, get_component_mapping_from_vector_size(type, size)};
|
||||
vertex_buffer_view.Buffer.FirstElement = offset_in_vertex_buffers_buffer / element_size;
|
||||
vertex_buffer_view.Buffer.NumElements = buffer_size / element_size;
|
||||
return vertex_buffer_view;
|
||||
|
@ -453,14 +453,7 @@ DXGI_FORMAT get_vertex_attribute_format(rsx::vertex_base_type type, u8 size)
|
||||
}
|
||||
case rsx::vertex_base_type::cmp:
|
||||
{
|
||||
switch (size)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3: fmt::throw_exception("Unsupported CMP vertex format with size > 1" HERE);
|
||||
case 4: return DXGI_FORMAT_R16G16B16A16_SNORM;
|
||||
}
|
||||
break;
|
||||
return DXGI_FORMAT_R16G16B16A16_SNORM;
|
||||
}
|
||||
case rsx::vertex_base_type::ub256:
|
||||
{
|
||||
|
@ -38,8 +38,6 @@ public:
|
||||
|
||||
u8 size() const
|
||||
{
|
||||
if (decode_reg().type() == rsx::vertex_base_type::cmp)
|
||||
return 4;
|
||||
return decode_reg().size();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user