mirror of https://github.com/RPCS3/rpcs3.git
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
|
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)
|
switch (size)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -51,9 +52,8 @@ namespace
|
||||||
{
|
{
|
||||||
u32 element_size = rsx::get_vertex_type_size_on_host(info.type(), info.size());
|
u32 element_size = rsx::get_vertex_type_size_on_host(info.type(), info.size());
|
||||||
D3D12_SHADER_RESOURCE_VIEW_DESC vertex_buffer_view = {
|
D3D12_SHADER_RESOURCE_VIEW_DESC vertex_buffer_view = {
|
||||||
get_vertex_attribute_format(info.type(), info.size()),
|
get_vertex_attribute_format(info.type(), info.size()), D3D12_SRV_DIMENSION_BUFFER,
|
||||||
D3D12_SRV_DIMENSION_BUFFER,
|
get_component_mapping_from_vector_size(info.type(), info.size())};
|
||||||
get_component_mapping_from_vector_size(info.size())};
|
|
||||||
vertex_buffer_view.Buffer.FirstElement = offset_in_vertex_buffers_buffer / element_size;
|
vertex_buffer_view.Buffer.FirstElement = offset_in_vertex_buffers_buffer / element_size;
|
||||||
vertex_buffer_view.Buffer.NumElements = buffer_size / element_size;
|
vertex_buffer_view.Buffer.NumElements = buffer_size / element_size;
|
||||||
return vertex_buffer_view;
|
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)
|
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);
|
u32 element_size = rsx::get_vertex_type_size_on_host(type, size);
|
||||||
D3D12_SHADER_RESOURCE_VIEW_DESC vertex_buffer_view = {
|
D3D12_SHADER_RESOURCE_VIEW_DESC vertex_buffer_view = {get_vertex_attribute_format(type, size),
|
||||||
get_vertex_attribute_format(type, size),
|
D3D12_SRV_DIMENSION_BUFFER, get_component_mapping_from_vector_size(type, size)};
|
||||||
D3D12_SRV_DIMENSION_BUFFER,
|
|
||||||
get_component_mapping_from_vector_size(size)
|
|
||||||
};
|
|
||||||
vertex_buffer_view.Buffer.FirstElement = offset_in_vertex_buffers_buffer / element_size;
|
vertex_buffer_view.Buffer.FirstElement = offset_in_vertex_buffers_buffer / element_size;
|
||||||
vertex_buffer_view.Buffer.NumElements = buffer_size / element_size;
|
vertex_buffer_view.Buffer.NumElements = buffer_size / element_size;
|
||||||
return vertex_buffer_view;
|
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:
|
case rsx::vertex_base_type::cmp:
|
||||||
{
|
{
|
||||||
switch (size)
|
return DXGI_FORMAT_R16G16B16A16_SNORM;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
case rsx::vertex_base_type::ub256:
|
case rsx::vertex_base_type::ub256:
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,8 +38,6 @@ public:
|
||||||
|
|
||||||
u8 size() const
|
u8 size() const
|
||||||
{
|
{
|
||||||
if (decode_reg().type() == rsx::vertex_base_type::cmp)
|
|
||||||
return 4;
|
|
||||||
return decode_reg().size();
|
return decode_reg().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue