# Upgrading from Simplygon API 9.1 and earlier to Simplygon API 9.2 and later

Here are general differences between the 9.1 and the 9.2 API and later. These are source code compatible, and should to generate any compilation issues.

# Processing objects now return a status value

The RunProcessing method on processing objects, and the RunScene[xxx] methods on pipeline objects now return a status value. This change does not affect the default processing, but is only there to give feedback on the result of the processing. If the process finishes as expected, the return value is 0 (Finished). If the process early outs or skips a scene because it is eg empty, the status will be non-zero. This will also be the case if the validation is set to skip the processing if an input scene is invalid (see below). Regardless of the status value, the library is not placed in an exceptional state, and you can safely continue running the library in the current process.

# Input scene validation

Simplygon now by default run a validation step on all input scenes. This is a very quick validation, that is there to make sure the input scene is set up correctly, so that the process will not be hindered by eg a missing geometry etc.

So as to not modify the current behavior of Simplygon 9, the default setting is to only log any issues found. If the process fails, you can look at the log for information on issues in the input scene. You can also change the behavior using the "InputSceneValidationAction" global setting, either to log fewer issues, or ignore all, or to skip processing of invalid scenes, or even raise an error. The setting is set using the EInputSceneValidationActionType enum, which currently has five levels, where the default is 2 (LogAll).

// Ignore any error in the input scene and assumes the scene is valid. 
// This might give a performance boost, but will cause crashes if the input scene is invalid.
Ignore = 0,

// Logs all fatal errors in the input scene. This will not fix any issues 
// in the scene, but will log the issues with suggestions on how to fix them.
LogOnlyFatal = 1,

// Logs all found errors in the input scene. This will not fix any issues 
// in the scene, but will log the issues with suggestions on how to fix them.
LogAll = 2,

// Logs all found errors in the input scene. Skips the process if the 
// input scene is invalid, and returns without processing. This allows the executing process to continue with other scenes.
Skip = 3,

// Logs all found errors in the input scene, and returns an error if the scene 
// is invalid. This is akin to "Treat warning as error", and is the safest way to process.
RaiseError = 4