| // Copyright (c) 2019 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // This file is specifically named spvtools_fuzz.proto so that the string |
| // 'spvtools_fuzz' appears in the names of global-scope symbols that protoc |
| // generates when targeting C++. This is to reduce the potential for name |
| // clashes with other globally-scoped symbols. |
| |
| syntax = "proto3"; |
| |
| package spvtools.fuzz.protobufs; |
| |
| message FactSequence { |
| repeated Fact fact = 1; |
| } |
| |
| message Fact { |
| // Currently there are no facts. |
| } |
| |
| message TransformationSequence { |
| repeated Transformation transformation = 1; |
| } |
| |
| message Transformation { |
| oneof transformation { |
| TransformationSplitBlock split_block = 1; |
| } |
| // Currently there are no transformations. |
| } |
| |
| message TransformationSplitBlock { |
| |
| // A transformation that splits a basic block into two basic blocks. |
| |
| // The result id of an instruction. |
| uint32 result_id = 1; |
| |
| // An offset, such that the block containing |result_id_| should be split |
| // right before the instruction |offset_| instructions after |result_id_|. |
| uint32 offset = 2; |
| |
| // An id that must not yet be used by the module to which this transformation |
| // is applied. Rather than having the transformation choose a suitable id on |
| // application, we require the id to be given upfront in order to facilitate |
| // reducing fuzzed shaders by removing transformations. The reason is that |
| // future transformations may refer to the fresh id introduced by this |
| // transformation, and if we end up changing what that id is, due to removing |
| // earlier transformations, it may inhibit later transformations from |
| // applying. |
| uint32 fresh_id = 3; |
| |
| } |