rsx: vertex attribute size is 1 again for CMP, let backend handles this formats properties.

This commit is contained in:
vlj 2016-09-18 00:43:20 +02:00
parent 66e57ae19b
commit 6b7ce37374
3 changed files with 7 additions and 19 deletions

View File

@ -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;

View File

@ -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:
{ {

View File

@ -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();
} }