layers: MR128, Don't complain about declarations without Builtin or Location
This is a stopgap until we have proper interface block analysis landed.
For now, this just suppresses the false positives. A correct SPIRV
module will not hit this path for anything other than interface blocks.
Conflicts:
layers/draw_state.cpp
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 48fd4cc..eabec54 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -588,16 +588,15 @@
int location = value_or_default(var_locations, code[word+2], -1);
int builtin = value_or_default(var_builtins, code[word+2], -1);
- if (location == -1 && builtin == -1) {
- /* No location defined, and not bound to an API builtin.
- * The spec says nothing about how this case works (or doesn't)
- * for interface matching.
- */
- log_msg(my_data->report_data, VK_DEBUG_REPORT_WARN_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, /*dev*/0, __LINE__, SHADER_CHECKER_INCONSISTENT_SPIRV, "SC",
- "var %d (type %d) in %s interface has no Location or Builtin decoration",
- code[word+2], code[word+1], storage_class_name(sinterface));
- }
- else if (location != -1) {
+ /* All variables and interface block members in the Input or Output storage classes
+ * must be decorated with either a builtin or an explicit location.
+ *
+ * TODO: integrate the interface block support here. For now, don't complain --
+ * a valid SPIRV module will only hit this path for the interface block case, as the
+ * individual members of the type are decorated, rather than variable declarations.
+ */
+
+ if (location != -1) {
/* A user-defined interface variable, with a location. Where a variable
* occupied multiple locations, emit one result for each. */
unsigned num_locations = get_locations_consumed_by_type(src, type,
@@ -610,7 +609,7 @@
out[location + offset] = v;
}
}
- else {
+ else if (builtin != -1) {
/* A builtin interface variable */
/* Note that since builtin interface variables do not consume numbered
* locations, there is no larger-than-vec4 consideration as above