Short:        Improves BestModeID() on ECS/AGA, CyberGfx, Picasso
Author:       Andreas_Kleinert@t-online.de
Uploader:     Andreas_Kleinert t-online de
Type:         util/sys
Architecture: m68k-amigaos

 Due to various problem with graphic.library's BestModeID() function,
 people began to complain about odd resolutions generated by
 several subclass "picture" datatypes, which use this function, as
 well as any image viewers, which did not work-around that for
 themselves.

 This patch tries to improve this for AGA systems by patching
 the more simple cases only. As long as

      BIDTAG_DIPFMustHave
      BIDTAG_DIPFMustNotHave
      BIDTAG_ViewPort
      BIDTAG_MonitorID
      BIDTAG_SourceID
      BIDTAG_RedBits
      BIDTAG_BlueBits
      BIDTAG_GreenBits

 are *not* supplied, the new patch will take place, otherwise the
 old BestModeID() function will take over.

 The patch works as follows:

   - get width, height, depth requirements
   - check, whether CyberGraphX is installed
     (if it is, then pass over to the corresponding CyberGraphX function),
     else check, whether PicassoII or Picasso96 Emu (vilintuisup.library)
     is installed (if it is, then pass over to the corresponding vilintuisup
     function)
   - after that, check if the ModeID is still 0L (LowRes) or whether
     one of the emus did return an unavailable or INVALID_ID
     and begin our own mode id generation (ECS/AGA sensitive)
   - return the mode id

 Request for Discussion and Comments:
 ------------------------------------
 Note, that the plain ECS/AGA mode id generation is quite trivial and may
 still be improveable, thus this patch includes its source code, and anyone
 who likes, may improve it and publish the results.

 ---
 All mentioned trademarks are subjects to their owners.