[Scummvm-devel] Bitdepth/pixel format API concerns

J Northup upthorn at gmail.com
Thu Jun 11 11:58:25 CEST 2009


I have recieved and reviewed the discussion in this thread, and I'm a bit
worried by the results:
One vote (Sven) for the old bitformat (8, 555, 565, 888) style of format
specification
One vote (Eugene) for the engine requesting only a bitdepth, not a full
format
Two votes (Johannes and Max) for the engine requesting a (list of) fully
formed Graphics::PixelFormat object(s).
One vote (Myself) for using an enumerated list
Three people (Marcus, Joost, Oystein) contributing useful information about
backend concerns, but no recommendations of their own

Nothing resembling a consensus, and very little discussion on the pros and
cons of each method.

So, I'm going to list the pros and cons (as I see them) for each format:


   - Old bitformat:
      - Pros:
   - Already defined and implemented
         - Values presented in a very readable and understandable format
         - Requires minimum of sanity checking by backends
         - Requires minimum of sanity checking by engines
      - Cons:
         - Requires extra work for backends wanting to add support for a
         format not currently defined
         - Requires extra conversions to/from a format that can be
         understood by video interface
         - Viewed as outdated and "evil" by some menbers of the community
      - Neutral/dependant:
         - Backend responsible for specifying color order
         - Bitdepth only
      - Pros:
         - Already defined
         - Values presented in a very readable and understandable format
         - Minimum of sanity checking necessary for backend
      - Cons
         - Disallows possibility of multiple formats in same bitdepth
         (ARGB1555/RGB555/RGB565/RGBA444)
         - Requires all engines with higher than 256 color modes to fully
         understand Graphics::PixelFormat values
         - Requires all engines with higher than 256 color modes to support
         color format conversions to match backend
         - Requires extra conversions to/from a format that can be
         understood by video interface
      - Neutral/dependant:
         - Backend entirely responsible for specifying color format
      - Graphics::PixelFormat
      - Pros:
         - Already defined and implemented
         - Allows great flexibility in negotiation of color mode between
         engine and backend
         - No extra conversions necessary once format is agreed upon
      - Cons:
         - Complicated for engine to produce a list of supported formats
         - Requires backend developers to create and maintain a
         comprehensive list of supported formats or perform extensive checks to
         determine compatibility.
         - Requires engine to fully understand and work with
         Graphics::PixelFormat object
      - Neutral/dependant:
         - Engine is primarily responsible for determining color format.
         - Enum type (colormode and colororder fields)
      - Pros:
         - Allows great flexibility in negotiation of color mode between
         engine and backend
         - Values presented in a very readable and understandable format
         - Requires minimum of sanity checking by backends
         - Requires minimum of sanity checking by engines
      - Cons:
         - Slightly complicated for engine to produce list of supported
         formats.
         - Requires extra conversions to/from a format that can be
         understood by video interface.
      - Neutral/dependant:
         - Engine is primarily responsible for determining color format.
      - Enum type (colormode only)
      - Pros:
         - Values presented in a very readable and understandable format
         - Requires minimum of sanity checking by backends
         - Requires minimum of sanity checking by engines
      - Cons:
         - Requires extra conversions to/from a format that can be
         understood by video interface.
      - Neutral/dependant:
         - Backend responsible for specifying color order
      - New type (not yet defined)
      - Pros:
         - Can be designed specifically for this task
      - Cons:
         - May require significant effort to implement

Now, if I take Eugene's recommendation (from IRC) that color order passed
from engine to backend is always RGBA, then removing the ability from the
engines to specify their own order is actually a plus, as it shields from
potential future developer error. But, I don't know if that idea is
universally agreed upon.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scummvm.org/pipermail/scummvm-devel/attachments/20090611/4af0aa4b/attachment.html>


More information about the Scummvm-devel mailing list