123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- /*************************************************************************/ /*!
- @File
- @Title RGX Bridge Functionality
- @Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
- @Description Header for the Rogue Bridge code
- @License Dual MIT/GPLv2
- The contents of this file are subject to the MIT license as set out below.
- 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.
- Alternatively, the contents of this file may be used under the terms of
- the GNU General Public License Version 2 ("GPL") in which case the provisions
- of GPL are applicable instead of those above.
- If you wish to allow use of your version of this file only under the terms of
- GPL, and not to allow others to use your version of this file under the terms
- of the MIT license, indicate your decision by deleting the provisions above
- and replace them with the notice and other provisions required by GPL as set
- out in the file called "GPL-COPYING" included in this distribution. If you do
- not delete the provisions above, a recipient may use your version of this file
- under the terms of either the MIT license or GPL.
- This License is also included in this distribution in the file called
- "MIT-COPYING".
- EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) 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; AND (B) 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 RGX_BRIDGE_H
- #define RGX_BRIDGE_H
- #include "pvr_bridge.h"
- #if defined(__cplusplus)
- extern "C" {
- #endif
- #include "rgx_fwif_km.h"
- #define RGXFWINITPARAMS_VERSION 1
- #define RGXFWINITPARAMS_EXTENSION 128
- #include "common_rgxta3d_bridge.h"
- #include "common_rgxcmp_bridge.h"
- #include "common_rgxtq2_bridge.h"
- #if defined(SUPPORT_RGXTQ_BRIDGE)
- #include "common_rgxtq_bridge.h"
- #endif
- #if defined(SUPPORT_USC_BREAKPOINT)
- #include "common_rgxbreakpoint_bridge.h"
- #endif
- #include "common_rgxfwdbg_bridge.h"
- #if defined(PDUMP)
- #include "common_rgxpdump_bridge.h"
- #endif
- #include "common_rgxhwperf_bridge.h"
- #if !defined(EXCLUDE_RGXREGCONFIG_BRIDGE)
- #include "common_rgxregconfig_bridge.h"
- #endif
- #include "common_rgxkicksync_bridge.h"
- #include "common_rgxtimerquery_bridge.h"
- #if defined(SUPPORT_RGXRAY_BRIDGE)
- #include "common_rgxray_bridge.h"
- #endif
- /*
- * Bridge Cmd Ids
- */
- /* *REMEMBER* to update PVRSRV_BRIDGE_RGX_LAST if you add/remove a bridge
- * group!
- * Also you need to ensure all PVRSRV_BRIDGE_RGX_xxx_DISPATCH_FIRST offsets
- * follow on from the previous bridge group's commands!
- *
- * If a bridge group is optional, ensure you *ALWAYS* define its index
- * (e.g. PVRSRV_BRIDGE_RGXCMP is always 151, even is the feature is not
- * defined). If an optional bridge group is not defined you must still
- * define PVRSRV_BRIDGE_RGX_xxx_DISPATCH_FIRST for it with an assigned
- * value of 0.
- */
- /* The RGX bridge groups start at 128 (PVRSRV_BRIDGE_RGX_FIRST) rather than
- * follow-on from the other non-device bridge groups (meaning that they then
- * won't be displaced if other non-device bridge groups are added).
- */
- #define PVRSRV_BRIDGE_RGX_FIRST 128UL
- /* 128: RGX TQ interface functions */
- #define PVRSRV_BRIDGE_RGXTQ 128UL
- /* The RGXTQ bridge is conditional since the definitions in this header file
- * support both the rogue and volcanic servers, but the RGXTQ bridge is not
- * required at all on the Volcanic architecture.
- */
- #if defined(SUPPORT_RGXTQ_BRIDGE)
- #define PVRSRV_BRIDGE_RGXTQ_DISPATCH_FIRST (PVRSRV_BRIDGE_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXTQ_DISPATCH_LAST (PVRSRV_BRIDGE_RGXTQ_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXTQ_CMD_LAST)
- #else
- #define PVRSRV_BRIDGE_RGXTQ_DISPATCH_FIRST 0
- #define PVRSRV_BRIDGE_RGXTQ_DISPATCH_LAST (PVRSRV_BRIDGE_DISPATCH_LAST)
- #endif
- /* 129: RGX Compute interface functions */
- #define PVRSRV_BRIDGE_RGXCMP 129UL
- #define PVRSRV_BRIDGE_RGXCMP_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXTQ_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXCMP_DISPATCH_LAST (PVRSRV_BRIDGE_RGXCMP_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXCMP_CMD_LAST)
- /* 130: RGX TA/3D interface functions */
- #define PVRSRV_BRIDGE_RGXTA3D 130UL
- #define PVRSRV_BRIDGE_RGXTA3D_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXCMP_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXTA3D_DISPATCH_LAST (PVRSRV_BRIDGE_RGXTA3D_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXTA3D_CMD_LAST)
- /* 131: RGX Breakpoint interface functions */
- #define PVRSRV_BRIDGE_RGXBREAKPOINT 131UL
- #if defined(SUPPORT_USC_BREAKPOINT)
- #define PVRSRV_BRIDGE_RGXBREAKPOINT_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXTA3D_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXBREAKPOINT_DISPATCH_LAST (PVRSRV_BRIDGE_RGXBREAKPOINT_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXBREAKPOINT_CMD_LAST)
- #else
- #define PVRSRV_BRIDGE_RGXBREAKPOINT_DISPATCH_FIRST 0
- #define PVRSRV_BRIDGE_RGXBREAKPOINT_DISPATCH_LAST (PVRSRV_BRIDGE_RGXTA3D_DISPATCH_LAST)
- #endif
- /* 132: RGX Debug/Misc interface functions */
- #define PVRSRV_BRIDGE_RGXFWDBG 132UL
- #define PVRSRV_BRIDGE_RGXFWDBG_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXBREAKPOINT_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXFWDBG_DISPATCH_LAST (PVRSRV_BRIDGE_RGXFWDBG_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXFWDBG_CMD_LAST)
- /* 133: RGX PDump interface functions */
- #define PVRSRV_BRIDGE_RGXPDUMP 133UL
- #if defined(PDUMP)
- #define PVRSRV_BRIDGE_RGXPDUMP_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXFWDBG_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXPDUMP_DISPATCH_LAST (PVRSRV_BRIDGE_RGXPDUMP_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXPDUMP_CMD_LAST)
- #else
- #define PVRSRV_BRIDGE_RGXPDUMP_DISPATCH_FIRST 0
- #define PVRSRV_BRIDGE_RGXPDUMP_DISPATCH_LAST (PVRSRV_BRIDGE_RGXFWDBG_DISPATCH_LAST)
- #endif
- /* 134: RGX HWPerf interface functions */
- #define PVRSRV_BRIDGE_RGXHWPERF 134UL
- #define PVRSRV_BRIDGE_RGXHWPERF_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXPDUMP_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXHWPERF_DISPATCH_LAST (PVRSRV_BRIDGE_RGXHWPERF_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXHWPERF_CMD_LAST)
- /* 135: RGX Register Configuration interface functions */
- #define PVRSRV_BRIDGE_RGXREGCONFIG 135UL
- #if !defined(EXCLUDE_RGXREGCONFIG_BRIDGE)
- #define PVRSRV_BRIDGE_RGXREGCONFIG_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXHWPERF_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXREGCONFIG_DISPATCH_LAST (PVRSRV_BRIDGE_RGXREGCONFIG_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXREGCONFIG_CMD_LAST)
- #else
- #define PVRSRV_BRIDGE_RGXREGCONFIG_DISPATCH_FIRST 0
- #define PVRSRV_BRIDGE_RGXREGCONFIG_DISPATCH_LAST (PVRSRV_BRIDGE_RGXHWPERF_DISPATCH_LAST)
- #endif
- /* 136: RGX kicksync interface */
- #define PVRSRV_BRIDGE_RGXKICKSYNC 136UL
- #define PVRSRV_BRIDGE_RGXKICKSYNC_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXREGCONFIG_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXKICKSYNC_DISPATCH_LAST (PVRSRV_BRIDGE_RGXKICKSYNC_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXKICKSYNC_CMD_LAST)
- #define PVRSRV_BRIDGE_RGXTQ2 137UL
- #define PVRSRV_BRIDGE_RGXTQ2_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXKICKSYNC_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXTQ2_DISPATCH_LAST (PVRSRV_BRIDGE_RGXTQ2_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXTQ2_CMD_LAST)
- #define PVRSRV_BRIDGE_RGXTIMERQUERY 138UL
- #define PVRSRV_BRIDGE_RGXTIMERQUERY_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXTQ2_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXTIMERQUERY_DISPATCH_LAST (PVRSRV_BRIDGE_RGXTIMERQUERY_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXTIMERQUERY_CMD_LAST)
- #define PVRSRV_BRIDGE_RGXRAY 139UL
- #if defined(SUPPORT_RGXRAY_BRIDGE)
- #define PVRSRV_BRIDGE_RGXRAY_DISPATCH_FIRST (PVRSRV_BRIDGE_RGXTIMERQUERY_DISPATCH_LAST + 1)
- #define PVRSRV_BRIDGE_RGXRAY_DISPATCH_LAST (PVRSRV_BRIDGE_RGXRAY_DISPATCH_FIRST + PVRSRV_BRIDGE_RGXRAY_CMD_LAST)
- #else
- #define PVRSRV_BRIDGE_RGXRAY_DISPATCH_FIRST 0
- #define PVRSRV_BRIDGE_RGXRAY_DISPATCH_LAST (PVRSRV_BRIDGE_RGXTIMERQUERY_DISPATCH_LAST)
- #endif
- #define PVRSRV_BRIDGE_RGX_LAST (PVRSRV_BRIDGE_RGXRAY)
- #define PVRSRV_BRIDGE_RGX_DISPATCH_LAST (PVRSRV_BRIDGE_RGXRAY_DISPATCH_LAST)
- /* bit mask representing the enabled RGX bridges */
- static const IMG_UINT32 gui32RGXBridges =
- (1U << (PVRSRV_BRIDGE_RGXTQ - PVRSRV_BRIDGE_RGX_FIRST))
- #if defined(RGX_FEATURE_COMPUTE) || defined(__KERNEL__)
- | (1U << (PVRSRV_BRIDGE_RGXCMP - PVRSRV_BRIDGE_RGX_FIRST))
- #endif
- | (1U << (PVRSRV_BRIDGE_RGXTA3D - PVRSRV_BRIDGE_RGX_FIRST))
- #if defined(SUPPORT_BREAKPOINT)
- | (1U << (PVRSRV_BRIDGE_BREAKPOINT - PVRSRV_BRIDGE_RGX_FIRST))
- #endif
- | (1U << (PVRSRV_BRIDGE_RGXFWDBG - PVRSRV_BRIDGE_RGX_FIRST))
- #if defined(PDUMP)
- | (1U << (PVRSRV_BRIDGE_RGXPDUMP - PVRSRV_BRIDGE_RGX_FIRST))
- #endif
- | (1U << (PVRSRV_BRIDGE_RGXHWPERF - PVRSRV_BRIDGE_RGX_FIRST))
- #if defined(SUPPORT_REGCONFIG)
- | (1U << (PVRSRV_BRIDGE_RGXREGCONFIG - PVRSRV_BRIDGE_RGX_FIRST))
- #endif
- | (1U << (PVRSRV_BRIDGE_RGXKICKSYNC - PVRSRV_BRIDGE_RGX_FIRST))
- #if defined(SUPPORT_FASTRENDER_DM) || defined(__KERNEL__)
- | (1U << (PVRSRV_BRIDGE_RGXTQ2 - PVRSRV_BRIDGE_RGX_FIRST))
- #endif
- #if defined(SUPPORT_TIMERQUERY)
- | (1U << (PVRSRV_BRIDGE_RGXTIMERQUERY - PVRSRV_BRIDGE_RGX_FIRST))
- #endif
- | (1U << (PVRSRV_BRIDGE_RGXRAY - PVRSRV_BRIDGE_RGX_FIRST))
- ;
- /* bit field representing which RGX bridge groups may optionally not
- * be present in the server
- */
- #define RGX_BRIDGES_OPTIONAL \
- ( \
- 0 /* no RGX bridges are currently optional */ \
- )
- #if defined(__cplusplus)
- }
- #endif
- #endif /* RGX_BRIDGE_H */
|