If a given ggi_mode is set or checked, any size parameter may be GGI_AUTO (defined in ggi/types.h). It is a placeholder.
When GGI_AUTO is encountered in a parameter, it is replaced with corresponding values specified by GGI_DEFMODE variable.
If the corresponding value is not found in GGI_DEFMODE or that value is also GGI_AUTO, then the driver should select a reasonable value satisfying as many of the given constraints as possible. The following are some recommendations:
If a visible size is given but no virtual, the lowest reasonable (taking alignment and accelleration constraints into account) should be used.
If either visible x or y is given, the other one should give a x/y ratio close to that of the screen size, so normally about 4/3.
If a virtual size is given but no visible, the highest possible visible size is selected.
If no size is given, the driver uses some builtin default.
If the graphtype is unspecified, the highest possible graphtype that meets the geometry constraints is set/suggested.
dpp.x and dpp.y will be 1 for graphics. For text modes the largest possible dpp.x and dpp.y (the most fine-grained font) should be used.
frames will be 1 if not specified.
Note: The rules above are only recommendations (which are hoped to best capture user expectations) to the driver implementer and in no way guaranteed.