spirv: Handle XFB variable decorations

These set the new explicit XFB members on nir_variable.

This is needed to support ARB_gl_spirv, as Vulkan doesn't support
transform feedback.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
Neil Roberts 2017-12-12 17:22:49 +01:00 committed by Alejandro Piñeiro
parent a5ec8461f9
commit cd4a14be06
1 changed files with 9 additions and 3 deletions

View File

@ -1299,7 +1299,6 @@ apply_var_decoration(struct vtn_builder *b,
case SpvDecorationAliased:
case SpvDecorationUniform:
case SpvDecorationStream:
case SpvDecorationOffset:
case SpvDecorationLinkageAttributes:
break; /* Do nothing with these here */
@ -1326,9 +1325,16 @@ apply_var_decoration(struct vtn_builder *b,
break;
case SpvDecorationXfbBuffer:
var_data->explicit_xfb_buffer = true;
var_data->xfb_buffer = dec->literals[0];
break;
case SpvDecorationXfbStride:
vtn_warn("Vulkan does not have transform feedback: %s",
spirv_decoration_to_string(dec->decoration));
var_data->explicit_xfb_stride = true;
var_data->xfb_stride = dec->literals[0];
break;
case SpvDecorationOffset:
var_data->explicit_offset = true;
var_data->offset = dec->literals[0];
break;
case SpvDecorationCPacked: