• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright (c) 2014 - 2018, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *     * Redistributions of source code must retain the above copyright
8 *       notice, this list of conditions and the following disclaimer.
9 *     * Redistributions in binary form must reproduce the above
10 *       copyright notice, this list of conditions and the following
11 *       disclaimer in the documentation and/or other materials provided
12 *       with the distribution.
13 *     * Neither the name of The Linux Foundation nor the names of its
14 *       contributors may be used to endorse or promote products derived
15 *       from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29 
30 /*! @file sdm_types.h
31   @brief This file contains miscellaneous data types used across display interfaces.
32 */
33 #ifndef __SDM_TYPES_H__
34 #define __SDM_TYPES_H__
35 
36 namespace sdm {
37 
38 /*! @brief This enum represents different error codes that display interfaces may return.
39 */
40 enum DisplayError {
41   kErrorNone,             //!< Call executed successfully.
42   kErrorUndefined,        //!< An unspecified error has occured.
43   kErrorNotSupported,     //!< Requested operation is not supported.
44   kErrorPermission,       //!< Operation is not permitted in current state.
45   kErrorVersion,          //!< Client is using advanced version of interfaces and calling into an
46                           //!< older version of display library.
47   kErrorDataAlignment,    //!< Client data structures are not aligned on naturual boundaries.
48   kErrorInstructionSet,   //!< 32-bit client is calling into 64-bit library or vice versa.
49   kErrorParameters,       //!< Invalid parameters passed to a method.
50   kErrorFileDescriptor,   //!< Invalid file descriptor.
51   kErrorMemory,           //!< System is running low on memory.
52   kErrorResources,        //!< Not enough hardware resources available to execute call.
53   kErrorHardware,         //!< A hardware error has occured.
54   kErrorTimeOut,          //!< The operation has timed out to prevent client from waiting forever.
55   kErrorShutDown,         //!< Driver is processing shutdown sequence
56   kErrorPerfValidation,   //!< Bandwidth or Clock requirement validation failure.
57   kErrorNoAppLayers,      //!< No App layer(s) in the draw cycle.
58   kErrorRotatorValidation,  //!< Rotator configuration validation failure.
59   kErrorNotValidated,     //!< Draw cycle has not been validated.
60   kErrorCriticalResource,   //!< Critical resource allocation has failed.
61 };
62 
63 /*! @brief This structure is defined for client and library compatibility check purpose only. This
64   structure is used in SDM_VERSION_TAG definition only. Client should not refer it directly for
65   any purpose.
66 */
67 struct SDMCompatibility {
68   char c1;
69   int i1;
70   char c2;
71   int i2;
72 };
73 
74 /*! @brief This enum represents different modules/logical unit tags that a log message may
75   be associated with. Client may use this to filter messages for dynamic logging.
76 
77 */
78 enum DebugTag {
79   kTagNone,             //!< Debug log is not tagged. This type of logs should always be printed.
80   kTagResources,        //!< Debug log is tagged for resource management.
81   kTagStrategy,         //!< Debug log is tagged for strategy decisions.
82   kTagCompManager,      //!< Debug log is tagged for composition manager.
83   kTagDriverConfig,     //!< Debug log is tagged for driver config.
84   kTagRotator,          //!< Debug log is tagged for rotator.
85   kTagScalar,           //!< Debug log is tagged for Scalar Helper.
86   kTagQDCM,             //!< Debug log is tagged for display QDCM color managing.
87   kTagQOSClient,        //!< Debug log is tagged for Qos client.
88   kTagDisplay,          //!< Debug log is tagged for display core logs.
89   kTagClient,           //!< Debug log is tagged for SDM client.
90 };
91 
92 }  // namespace sdm
93 
94 #endif  // __SDM_TYPES_H__
95 
96