vkd3d-shader/dxil: Read and validate DXIL bitcode unabbreviated blocks.

This commit is contained in:
Conor McCarthy
2022-11-15 15:16:41 +10:00
committed by Alexandre Julliard
parent 0d2f2e1860
commit 6775f7ba66
Notes: Alexandre Julliard 2023-06-28 23:04:34 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/44
7 changed files with 665 additions and 4 deletions

View File

@@ -493,8 +493,14 @@ static int shdr_handler(const struct vkd3d_shader_dxbc_section_desc *section,
return ret;
break;
case TAG_DXIL:
case TAG_SHDR:
case TAG_SHEX:
if ((section->tag == TAG_DXIL) != desc->is_dxil)
{
TRACE("Skipping chunk %#x.\n", section->tag);
break;
}
if (desc->byte_code)
FIXME("Multiple shader code chunks.\n");
desc->byte_code = section->data.code;
@@ -505,10 +511,6 @@ static int shdr_handler(const struct vkd3d_shader_dxbc_section_desc *section,
TRACE("Skipping AON9 shader code chunk.\n");
break;
case TAG_DXIL:
FIXME("Skipping DXIL shader model 6+ code chunk.\n");
break;
default:
TRACE("Skipping chunk %#x.\n", section->tag);
break;