Provide build override for SPIRV options

Without this, the fuzzing framework will fall back to the default and
copies in random bits without consideration of range restrictions on
specific fields.

BUG=chromium:1287344

Change-Id: Ifbde471074a2f68e1d9fd8215174814d2f465f93
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/76880
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
diff --git a/fuzzers/data_builder.h b/fuzzers/data_builder.h
index a931fe0..265f5dd 100644
--- a/fuzzers/data_builder.h
+++ b/fuzzers/data_builder.h
@@ -189,6 +189,20 @@
     }
   };
 
+  /// Specialization for writer::spirv::Options
+  template <>
+  struct BuildImpl<writer::spirv::Options> {
+    /// Generate a pseudo-random writer::spirv::Options struct
+    /// @param b - data builder to use
+    /// @returns writer::spirv::Options filled with pseudo-random data
+    static writer::spirv::Options impl(DataBuilder* b) {
+      writer::spirv::Options out{};
+      b->build(out.emit_vertex_point_size);
+      b->build(out.disable_workgroup_init);
+      return out;
+    }
+  };
+
   /// Specialization for writer::ArrayLengthFromUniformOptions
   template <>
   struct BuildImpl<writer::ArrayLengthFromUniformOptions> {