| /* |
| * Copyright (c) 2018-2020, Intel Corporation |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a |
| * copy of this software and associated documentation files (the "Software"), |
| * to deal in the Software without restriction, including without limitation |
| * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| * and/or sell copies of the Software, and to permit persons to whom the |
| * Software is furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included |
| * in all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR |
| * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
| * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| * OTHER DEALINGS IN THE SOFTWARE. |
| */ |
| #ifndef __VP_UTILS_H__ |
| #define __VP_UTILS_H__ |
| |
| #include <mutex> |
| #include "mos_util_debug.h" |
| |
| #define VP_UNUSED(param) (void)(param) |
| //------------------------------------------------------------------------------ |
| // Macros specific to MOS_VP_SUBCOMP_ENCODE sub-comp |
| //------------------------------------------------------------------------------ |
| #define VP_HW_ASSERT(_expr) \ |
| MOS_ASSERT(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW, _expr) |
| |
| #define VP_HW_ASSERTMESSAGE(_message, ...) \ |
| MOS_ASSERTMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW, _message, ##__VA_ARGS__) |
| |
| #define VP_HW_NORMALMESSAGE(_message, ...) \ |
| MOS_NORMALMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW, _message, ##__VA_ARGS__) |
| |
| #define VP_HW_VERBOSEMESSAGE(_message, ...) \ |
| MOS_VERBOSEMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW, _message, ##__VA_ARGS__) |
| |
| #define VP_HW_FUNCTION_ENTER \ |
| MOS_FUNCTION_ENTER(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW) |
| |
| #define VP_HW_CHK_STATUS(_stmt) \ |
| MOS_CHK_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW, _stmt) |
| |
| #define VP_HW_CHK_NULL(_ptr) \ |
| MOS_CHK_NULL(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW, _ptr) |
| |
| #define VP_HW_CHK_NULL_RETURN(_ptr) \ |
| MOS_CHK_NULL_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _ptr) |
| |
| #define VP_HW_CHK_NULL_NO_STATUS(_ptr) \ |
| MOS_CHK_NULL_NO_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_HW, _ptr) |
| |
| //------------------------------------------------------------------------------ |
| // Macros specific to MOS_VP_SUBCOMP_PUBLIC sub-comp |
| //------------------------------------------------------------------------------ |
| #define VP_PUBLIC_ASSERT(_expr) \ |
| MOS_ASSERT(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _expr) |
| |
| #define VP_PUBLIC_ASSERTMESSAGE(_message, ...) \ |
| MOS_ASSERTMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _message, ##__VA_ARGS__) |
| |
| #define VP_PUBLIC_NORMALMESSAGE(_message, ...) \ |
| MOS_NORMALMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _message, ##__VA_ARGS__) |
| |
| #define VP_PUBLIC_VERBOSEMESSAGE(_message, ...) \ |
| MOS_VERBOSEMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _message, ##__VA_ARGS__) |
| |
| #define VP_PUBLIC_FUNCTION_ENTER \ |
| MOS_FUNCTION_ENTER(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC) |
| |
| #define VP_PUBLIC_CHK_STATUS(_stmt) \ |
| MOS_CHK_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _stmt) |
| |
| #define VP_PUBLIC_CHK_STATUS_RETURN(_stmt) \ |
| MOS_CHK_STATUS_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _stmt) |
| |
| #define VP_PUBLIC_CHK_VALUE_RETURN(_value, _expect_value) \ |
| MOS_CHK_STATUS_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, \ |
| ((_value) == (_expect_value)) ? MOS_STATUS_SUCCESS : MOS_STATUS_INVALID_PARAMETER) |
| |
| #define VP_PUBLIC_CHK_NULL(_ptr) \ |
| MOS_CHK_NULL(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _ptr) |
| |
| #define VP_PUBLIC_CHK_NULL_RETURN(_ptr) \ |
| MOS_CHK_NULL_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _ptr) |
| |
| #define VP_PUBLIC_CHK_NULL_NO_STATUS(_ptr) \ |
| MOS_CHK_NULL_NO_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _ptr) |
| |
| #define VP_PUBLIC_CHK_NULL_NO_STATUS_RETURN(_ptr) \ |
| MOS_CHK_NULL_NO_STATUS_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _ptr) |
| |
| #define VP_CHK_SPACE_NULL_RETURN(_ptr) \ |
| { \ |
| if ((_ptr) == nullptr) \ |
| { \ |
| MOS_ASSERTMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, "Invalid (nullptr) Pointer."); \ |
| return MOS_STATUS_NO_SPACE; \ |
| } \ |
| } |
| //------------------------------------------------------------------------------ |
| // Macros specific to MOS_VP_SUBCOMP_DEBUG sub-comp |
| //------------------------------------------------------------------------------ |
| #define VP_DEBUG_ASSERT(_expr) \ |
| MOS_ASSERT(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG, _expr) |
| |
| #define VP_DEBUG_ASSERTMESSAGE(_message, ...) \ |
| MOS_ASSERTMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG, _message, ##__VA_ARGS__) |
| |
| #define VP_DEBUG_NORMALMESSAGE(_message, ...) \ |
| MOS_NORMALMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG, _message, ##__VA_ARGS__) |
| |
| #define VP_DEBUG_VERBOSEMESSAGE(_message, ...) \ |
| MOS_VERBOSEMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG, _message, ##__VA_ARGS__) |
| |
| #define VP_DEBUG_FUNCTION_ENTER \ |
| MOS_FUNCTION_ENTER(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG) |
| |
| #define VP_DEBUG_CHK_STATUS(_stmt) \ |
| MOS_CHK_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG, _stmt) |
| |
| #define VP_DEBUG_CHK_NULL(_ptr) \ |
| MOS_CHK_NULL(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG, _ptr) |
| |
| #define VP_DEBUG_CHK_NULL_RETURN(_ptr) \ |
| MOS_CHK_NULL_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _ptr) |
| |
| #define VP_DEBUG_CHK_NULL_NO_STATUS(_ptr) \ |
| MOS_CHK_NULL_NO_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DEBUG, _ptr) |
| |
| //------------------------------------------------------------------------------ |
| // Macros specific to MOS_VP_SUBCOMP_RENDER sub-comp |
| //------------------------------------------------------------------------------ |
| #define VP_RENDER_ASSERT(_expr) \ |
| MOS_ASSERT(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _expr) |
| |
| #define VP_RENDER_ASSERTMESSAGE(_message, ...) \ |
| MOS_ASSERTMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _message, ##__VA_ARGS__) |
| |
| #define VP_RENDER_NORMALMESSAGE(_message, ...) \ |
| MOS_NORMALMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _message, ##__VA_ARGS__) |
| |
| #define VP_RENDER_VERBOSEMESSAGE(_message, ...) \ |
| MOS_VERBOSEMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _message, ##__VA_ARGS__) |
| |
| #define VP_RENDER_FUNCTION_ENTER \ |
| MOS_FUNCTION_ENTER(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER) |
| |
| #define VP_RENDER_EXITMESSAGE(_message, ...) \ |
| MOS_DEBUGMESSAGE(MOS_MESSAGE_LVL_FUNCTION_EXIT, MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _message, ##__VA_ARGS__) |
| |
| #define VP_RENDER_CHK_STATUS(_stmt) \ |
| MOS_CHK_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _stmt) |
| |
| #define VP_RENDER_CHK_STATUS_RETURN(_stmt) \ |
| MOS_CHK_STATUS_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _stmt) |
| |
| #define VP_RENDER_CHK_STATUS_MESSAGE(_stmt, _message, ...) \ |
| MOS_CHK_STATUS_MESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _stmt, _message, ##__VA_ARGS__) |
| |
| #define VP_RENDER_CHK_NULL(_ptr) \ |
| MOS_CHK_NULL(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _ptr) |
| |
| #define VP_RENDER_CHK_NULL_RETURN(_ptr) \ |
| MOS_CHK_NULL_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _ptr) |
| |
| #define VP_RENDER_CHK_NULL_NO_STATUS(_ptr) \ |
| MOS_CHK_NULL_NO_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_RENDER, _ptr) |
| |
| //------------------------------------------------------------------------------ |
| // Macros specific to MOS_VP_SUBCOMP_DDI sub-comp |
| //------------------------------------------------------------------------------ |
| #define VP_DDI_ASSERT(_expr) \ |
| MOS_ASSERT(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _expr) |
| |
| #define VP_DDI_ASSERTMESSAGE(_message, ...) \ |
| MOS_ASSERTMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _message, ##__VA_ARGS__) |
| |
| #define VP_DDI_NORMALMESSAGE(_message, ...) \ |
| MOS_NORMALMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _message, ##__VA_ARGS__) |
| |
| #define VP_DDI_VERBOSEMESSAGE(_message, ...) \ |
| MOS_VERBOSEMESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _message, ##__VA_ARGS__) |
| |
| #define VP_DDI_FUNCTION_ENTER \ |
| MOS_FUNCTION_ENTER(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI) |
| |
| #define VP_DDI_CHK_STATUS(_stmt) \ |
| MOS_CHK_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _stmt) |
| |
| #define VP_DDI_CHK_STATUS_MESSAGE(_stmt, _message, ...) \ |
| MOS_CHK_STATUS_MESSAGE(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _stmt, _message, ##__VA_ARGS__) |
| |
| #define VP_DDI_CHK_NULL(_ptr) \ |
| MOS_CHK_NULL(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _ptr) |
| |
| #define VP_DDI_CHK_NULL_RETURN(_ptr) \ |
| MOS_CHK_NULL_RETURN(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_PUBLIC, _ptr) |
| |
| #define VP_DDI_CHK_NULL_NO_STATUS(_ptr) \ |
| MOS_CHK_NULL_NO_STATUS(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _ptr) |
| |
| #define VPHAL_DDI_CHK_HR(_ptr) \ |
| MOS_CHK_HR(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _ptr) |
| |
| #define VPHAL_DDI_CHK_NULL_WITH_HR(_ptr) \ |
| MOS_CHK_NULL_WITH_HR(MOS_COMPONENT_VP, MOS_VP_SUBCOMP_DDI, _ptr) |
| namespace vp |
| { |
| class Trace |
| { |
| public: |
| Trace(const char* name) : m_name(name) |
| { |
| VP_DEBUG_NORMALMESSAGE("Enter function:%s\r\n", name); |
| } |
| |
| ~Trace() |
| { |
| VP_DEBUG_NORMALMESSAGE("Exit function:%s\r\n", m_name); |
| } |
| |
| protected: |
| const char* m_name; |
| }; |
| } |
| |
| #define VP_FUNC_CALL() vp::Trace trace(__FUNCTION__); |
| |
| #endif // !__VP_UTILS_H__ |