* [meta-fsl-arm PATCH v2 1/3] linux-fslc: Update to 3.14-rc6
@ 2014-03-13 14:04 Otavio Salvador
2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 2/3] linux-imx: Use 3.10.17 as default Otavio Salvador
2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP Otavio Salvador
0 siblings, 2 replies; 8+ messages in thread
From: Otavio Salvador @ 2014-03-13 14:04 UTC (permalink / raw)
To: meta-freescale Mailing List; +Cc: Otavio Salvador
This updates to 3.14-rc6 (and merged fixes into Linus' tree) and syncs
the defconfig files:
* imx_v6_v7_defconfig -> defconfig
* mxs_defconfig -> mxs/defconfig
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
Changes in v2:
- rework commitlog to make it clear which config is used
recipes-kernel/linux/linux-fslc/defconfig | 36 +++++++++++++++-------
recipes-kernel/linux/linux-fslc/mxs/defconfig | 17 +++-------
.../{linux-fslc_3.12.bb => linux-fslc_3.14.bb} | 6 ++--
3 files changed, 33 insertions(+), 26 deletions(-)
rename recipes-kernel/linux/{linux-fslc_3.12.bb => linux-fslc_3.14.bb} (64%)
diff --git a/recipes-kernel/linux/linux-fslc/defconfig b/recipes-kernel/linux/linux-fslc/defconfig
index a39f466..53e82c2 100644
--- a/recipes-kernel/linux/linux-fslc/defconfig
+++ b/recipes-kernel/linux/linux-fslc/defconfig
@@ -1,4 +1,3 @@
-CONFIG_EXPERIMENTAL=y
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_KERNEL_LZO=y
CONFIG_SYSVIPC=y
@@ -29,21 +28,22 @@ CONFIG_MACH_QONG=y
CONFIG_MACH_ARMADILLO5X0=y
CONFIG_MACH_KZM_ARM11_01=y
CONFIG_MACH_IMX31_DT=y
+CONFIG_MACH_IMX35_DT=y
CONFIG_MACH_PCM043=y
CONFIG_MACH_MX35_3DS=y
CONFIG_MACH_VPR200=y
CONFIG_MACH_IMX51_DT=y
CONFIG_MACH_EUKREA_CPUIMX51SD=y
+CONFIG_SOC_IMX50=y
CONFIG_SOC_IMX53=y
CONFIG_SOC_IMX6Q=y
CONFIG_SOC_IMX6SL=y
CONFIG_SOC_VF610=y
-CONFIG_MXC_PWM=y
CONFIG_SMP=y
CONFIG_VMSPLIT_2G=y
CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_HIGHMEM=y
CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
CONFIG_VFP=y
CONFIG_NEON=y
@@ -91,7 +91,6 @@ CONFIG_MTD_UBI=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_SRAM=y
CONFIG_EEPROM_AT24=y
CONFIG_EEPROM_AT25=y
# CONFIG_SCSI_PROC_FS is not set
@@ -120,6 +119,7 @@ CONFIG_SMC91X=y
CONFIG_SMC911X=y
CONFIG_SMSC911X=y
# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_AT803X_PHY=y
CONFIG_BRCMFMAC=m
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_EVDEV=y
@@ -131,12 +131,12 @@ CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_EGALAX=y
CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2007=y
+CONFIG_TOUCHSCREEN_STMPE=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_MMA8450=y
CONFIG_SERIO_SERPORT=m
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_LEGACY_PTYS is not set
# CONFIG_DEVKMEM is not set
CONFIG_SERIAL_IMX=y
CONFIG_SERIAL_IMX_CONSOLE=y
@@ -144,11 +144,9 @@ CONFIG_SERIAL_FSL_LPUART=y
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_MXC_RNGA=y
-CONFIG_I2C=y
# CONFIG_I2C_COMPAT is not set
CONFIG_I2C_CHARDEV=y
# CONFIG_I2C_HELPER_AUTO is not set
-CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m
CONFIG_I2C_IMX=y
@@ -162,14 +160,19 @@ CONFIG_IMX2_WDT=y
CONFIG_MFD_DA9052_I2C=y
CONFIG_MFD_MC13XXX_SPI=y
CONFIG_MFD_MC13XXX_I2C=y
+CONFIG_MFD_STMPE=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_ANATOP=y
CONFIG_REGULATOR_DA9052=y
CONFIG_REGULATOR_MC13783=y
CONFIG_REGULATOR_MC13892=y
+CONFIG_REGULATOR_PFUZE100=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_RC_DEVICES=y
+CONFIG_IR_GPIO_CIR=y
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_SOC_CAMERA=y
CONFIG_VIDEO_MX3=y
@@ -193,22 +196,33 @@ CONFIG_SND_SOC_PHYCORE_AC97=y
CONFIG_SND_SOC_EUKREA_TLV320=y
CONFIG_SND_SOC_IMX_WM8962=y
CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_SPDIF=y
CONFIG_SND_SOC_IMX_MC13783=y
CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_MXC=y
CONFIG_USB_STORAGE=y
CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_CHIPIDEA_HOST=y
-CONFIG_USB_PHY=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ETH=m
+CONFIG_USB_MASS_STORAGE=m
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_ESDHC_IMX=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_INTF_DEV_UIE_EMUL=y
CONFIG_RTC_DRV_MC13XXX=y
@@ -251,7 +265,6 @@ CONFIG_UDF_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=y
CONFIG_TMPFS=y
-CONFIG_CONFIGFS_FS=m
CONFIG_JFFS2_FS=y
CONFIG_UBIFS_FS=y
CONFIG_NFS_FS=y
@@ -266,6 +279,7 @@ CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_UTF8=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_SCHED_DEBUG is not set
+CONFIG_PROVE_LOCKING=y
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_FTRACE is not set
# CONFIG_ARM_UNWIND is not set
diff --git a/recipes-kernel/linux/linux-fslc/mxs/defconfig b/recipes-kernel/linux/linux-fslc/mxs/defconfig
index 2a439fe..6150108 100644
--- a/recipes-kernel/linux/linux-fslc/mxs/defconfig
+++ b/recipes-kernel/linux/linux-fslc/mxs/defconfig
@@ -1,4 +1,3 @@
-CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
@@ -27,7 +26,6 @@ CONFIG_ARCH_MXS=y
# CONFIG_ARM_THUMB is not set
CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_AEABI=y
-CONFIG_AUTO_ZRELADDR=y
CONFIG_FPE_NWFPE=y
CONFIG_NET=y
CONFIG_PACKET=y
@@ -43,9 +41,6 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-CONFIG_CAN_DEV=m
CONFIG_CAN_FLEXCAN=m
# CONFIG_WIRELESS is not set
CONFIG_DEVTMPFS=y
@@ -53,7 +48,6 @@ CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_DATAFLASH=y
CONFIG_MTD_M25P80=y
@@ -82,10 +76,8 @@ CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_TSC2007=m
# CONFIG_SERIO is not set
-CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_LEGACY_PTYS is not set
# CONFIG_DEVKMEM is not set
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
@@ -98,7 +90,6 @@ CONFIG_I2C_MXS=y
CONFIG_SPI=y
CONFIG_SPI_GPIO=m
CONFIG_SPI_MXS=y
-CONFIG_DEBUG_GPIO=y
CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set
CONFIG_WATCHDOG=y
@@ -122,9 +113,12 @@ CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_STORAGE=y
CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_CHIPIDEA_HOST=y
-CONFIG_USB_PHY=y
CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ETH=m
+CONFIG_USB_MASS_STORAGE=m
CONFIG_MMC=y
CONFIG_MMC_UNSAFE_RESUME=y
CONFIG_MMC_MXS=y
@@ -166,7 +160,6 @@ CONFIG_JFFS2_RUBIN=y
CONFIG_UBIFS_FS=y
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_ROOT_NFS=y
diff --git a/recipes-kernel/linux/linux-fslc_3.12.bb b/recipes-kernel/linux/linux-fslc_3.14.bb
similarity index 64%
rename from recipes-kernel/linux/linux-fslc_3.12.bb
rename to recipes-kernel/linux/linux-fslc_3.14.bb
index 6ad5ac9..2dcc8a0 100644
--- a/recipes-kernel/linux/linux-fslc_3.12.bb
+++ b/recipes-kernel/linux/linux-fslc_3.14.bb
@@ -3,9 +3,9 @@
include linux-fslc.inc
-PV = "3.12+git${SRCPV}"
+PV = "3.14+git${SRCPV}"
-SRCBRANCH = "patches-3.12"
-SRCREV = "1cd7a834347a9dcb326d14cf00cb9921f235968a"
+SRCBRANCH = "patches-3.14"
+SRCREV = "ac9dc67b730f3a1d10c5abbf91ed773d1e277646"
COMPATIBLE_MACHINE = "(mxs|mx3|mx5|mx6)"
--
1.9.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [meta-fsl-arm PATCH v2 2/3] linux-imx: Use 3.10.17 as default 2014-03-13 14:04 [meta-fsl-arm PATCH v2 1/3] linux-fslc: Update to 3.14-rc6 Otavio Salvador @ 2014-03-13 14:04 ` Otavio Salvador 2014-03-13 14:05 ` Daiane Angolini 2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP Otavio Salvador 1 sibling, 1 reply; 8+ messages in thread From: Otavio Salvador @ 2014-03-13 14:04 UTC (permalink / raw) To: meta-freescale Mailing List; +Cc: Otavio Salvador The new features are going to be added on top of 3.10.17-1.0.0 kernels so we ought to support it in Yocto Project 1.6 cycle. To get faster feedback from regressions we should make it the default. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> --- Changes in v2: - new patch recipes-kernel/linux/linux-imx_3.10.17.bb | 2 -- 1 file changed, 2 deletions(-) diff --git a/recipes-kernel/linux/linux-imx_3.10.17.bb b/recipes-kernel/linux/linux-imx_3.10.17.bb index a2ced8e..03f8f7a 100644 --- a/recipes-kernel/linux/linux-imx_3.10.17.bb +++ b/recipes-kernel/linux/linux-imx_3.10.17.bb @@ -6,8 +6,6 @@ require recipes-kernel/linux/linux-dtb.inc DEPENDS += "lzop-native bc-native" -DEFAULT_PREFERENCE = "-1" - SRCBRANCH = "imx_3.10.17_1.0.0_beta" SRCREV = "ec1af9f898d234001d8fc7d720382de34cb6580f" LOCALVERSION = "-1.0.0_beta" -- 1.9.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [meta-fsl-arm PATCH v2 2/3] linux-imx: Use 3.10.17 as default 2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 2/3] linux-imx: Use 3.10.17 as default Otavio Salvador @ 2014-03-13 14:05 ` Daiane Angolini 2014-03-13 14:25 ` Otavio Salvador 0 siblings, 1 reply; 8+ messages in thread From: Daiane Angolini @ 2014-03-13 14:05 UTC (permalink / raw) To: Otavio Salvador, meta-freescale Mailing List On 13-03-2014 11:04, Otavio Salvador wrote: > The new features are going to be added on top of 3.10.17-1.0.0 kernels > so we ought to support it in Yocto Project 1.6 cycle. > > To get faster feedback from regressions we should make it the default. > > Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> I'm OK with this patch (but it's weird it's a V2) I think this is the right way to go Daiane > --- > > Changes in v2: > - new patch > > recipes-kernel/linux/linux-imx_3.10.17.bb | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/recipes-kernel/linux/linux-imx_3.10.17.bb b/recipes-kernel/linux/linux-imx_3.10.17.bb > index a2ced8e..03f8f7a 100644 > --- a/recipes-kernel/linux/linux-imx_3.10.17.bb > +++ b/recipes-kernel/linux/linux-imx_3.10.17.bb > @@ -6,8 +6,6 @@ require recipes-kernel/linux/linux-dtb.inc > > DEPENDS += "lzop-native bc-native" > > -DEFAULT_PREFERENCE = "-1" > - > SRCBRANCH = "imx_3.10.17_1.0.0_beta" > SRCREV = "ec1af9f898d234001d8fc7d720382de34cb6580f" > LOCALVERSION = "-1.0.0_beta" > -- Daiane ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [meta-fsl-arm PATCH v2 2/3] linux-imx: Use 3.10.17 as default 2014-03-13 14:05 ` Daiane Angolini @ 2014-03-13 14:25 ` Otavio Salvador 0 siblings, 0 replies; 8+ messages in thread From: Otavio Salvador @ 2014-03-13 14:25 UTC (permalink / raw) To: Daiane Angolini; +Cc: meta-freescale Mailing List On Thu, Mar 13, 2014 at 11:05 AM, Daiane Angolini <daiane.angolini@freescale.com> wrote: > On 13-03-2014 11:04, Otavio Salvador wrote: >> >> The new features are going to be added on top of 3.10.17-1.0.0 kernels >> so we ought to support it in Yocto Project 1.6 cycle. >> >> To get faster feedback from regressions we should make it the default. >> >> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> > > > I'm OK with this patch (but it's weird it's a V2) > > I think this is the right way to go Yes; I am working in the kernel recipes and makes sense to 'group' them. Thanks for reviewing it. -- Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP 2014-03-13 14:04 [meta-fsl-arm PATCH v2 1/3] linux-fslc: Update to 3.14-rc6 Otavio Salvador 2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 2/3] linux-imx: Use 3.10.17 as default Otavio Salvador @ 2014-03-13 14:04 ` Otavio Salvador 2014-03-13 14:10 ` Daiane Angolini 2014-03-13 14:15 ` Daiane Angolini 1 sibling, 2 replies; 8+ messages in thread From: Otavio Salvador @ 2014-03-13 14:04 UTC (permalink / raw) To: meta-freescale Mailing List; +Cc: Otavio Salvador The 1.6 release cycle is focused in the 3.10.17-1.0.0 BSP and has no compromise in test and maintain the 3.0.35 compatibility. This does not mean the support as a whole will be dropped but no board in meta-fsl-arm BSP ought to use it. Users which need to use Freescale reference designs with 3.0.35 ought to keep using the Dora branch. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> --- Changes in v2: - new patch ...Fix-getrusage-related-build-failure-on-gl.patch | 43 - ...fix-memset-related-crashes-caused-by-rece.patch | 259 - .../0003-ARM-7670-1-fix-the-memset-fix.patch | 87 - ...6-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch | 43 - ...0005-ENGR00271359-Add-Multi-touch-support.patch | 98 - .../0006-Add-support-for-DVI-monitors.patch | 227 - ...6-board-mx6q_sabresd-Register-SDHC3-first.patch | 38 - ...0-gpu-viante-4.6.9p13-kernel-part-integra.patch | 6261 -------------------- ...m-vivante-Add-00-sufix-in-returned-bus-Id.patch | 31 - ...-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch | 143 - .../linux/linux-imx-3.0.35/mx6dl/defconfig | 301 - .../linux/linux-imx-3.0.35/mx6q/defconfig | 302 - .../linux/linux-imx-3.0.35/mx6s/defconfig | 267 - .../linux/linux-imx-3.0.35/mx6sl/defconfig | 267 - recipes-kernel/linux/linux-imx_3.0.35.bb | 26 - 15 files changed, 8393 deletions(-) delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig delete mode 100644 recipes-kernel/linux/linux-imx_3.0.35.bb diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch b/recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch deleted file mode 100644 index abc02c9..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 503daf4789dd23e4dc1e16c256de0c163fc2bf87 Mon Sep 17 00:00:00 2001 -From: Markus Trippelsdorf <markus@trippelsdorf.de> -Date: Wed, 4 Apr 2012 10:45:27 +0200 -Subject: [PATCH] perf tools: Fix getrusage() related build failure on glibc - trunk -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit -Organization: O.S. Systems Software LTDA. - -On a system running glibc trunk perf doesn't build: - - CC builtin-sched.o -builtin-sched.c: In function ‘get_cpu_usage_nsec_parent’: builtin-sched.c:399:16: error: storage size of ‘ru’ isn’t known builtin-sched.c:403:2: error: implicit declaration of function ‘getrusage’ [-Werror=implicit-function-declaration] - [...] - -Fix it by including sys/resource.h. - -Upstream-Status: Pending - -Signed-off-by: Markus Trippelsdorf <markus@trippelsdorf.de> -Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> -Link: http://lkml.kernel.org/r/20120404084527.GA294@x4 -Signed-off-by: Ingo Molnar <mingo@kernel.org> ---- - tools/perf/builtin-sched.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c -index dcfe887..3632c2f 100644 ---- a/tools/perf/builtin-sched.c -+++ b/tools/perf/builtin-sched.c -@@ -14,6 +14,7 @@ - #include "util/debug.h" - - #include <sys/prctl.h> -+#include <sys/resource.h> - - #include <semaphore.h> - #include <pthread.h> --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch b/recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch deleted file mode 100644 index 4c31e74..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch +++ /dev/null @@ -1,259 +0,0 @@ -From 2235b85f1c76d98b5f1e160cbd0a61a84c15e125 Mon Sep 17 00:00:00 2001 -From: Ivan Djelic <ivan.djelic@parrot.com> -Date: Wed, 6 Mar 2013 20:09:27 +0100 -Subject: [PATCH] ARM: 7668/1: fix memset-related crashes caused by recent GCC - (4.7.2) optimizations -Organization: O.S. Systems Software LTDA. - -Recent GCC versions (e.g. GCC-4.7.2) perform optimizations based on -assumptions about the implementation of memset and similar functions. -The current ARM optimized memset code does not return the value of -its first argument, as is usually expected from standard implementations. - -For instance in the following function: - -void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) -{ - memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter)); - waiter->magic = waiter; - INIT_LIST_HEAD(&waiter->list); -} - -compiled as: - -800554d0 <debug_mutex_lock_common>: -800554d0: e92d4008 push {r3, lr} -800554d4: e1a00001 mov r0, r1 -800554d8: e3a02010 mov r2, #16 ; 0x10 -800554dc: e3a01011 mov r1, #17 ; 0x11 -800554e0: eb04426e bl 80165ea0 <memset> -800554e4: e1a03000 mov r3, r0 -800554e8: e583000c str r0, [r3, #12] -800554ec: e5830000 str r0, [r3] -800554f0: e5830004 str r0, [r3, #4] -800554f4: e8bd8008 pop {r3, pc} - -GCC assumes memset returns the value of pointer 'waiter' in register r0; causing -register/memory corruptions. - -This patch fixes the return value of the assembly version of memset. -It adds a 'mov' instruction and merges an additional load+store into -existing load/store instructions. -For ease of review, here is a breakdown of the patch into 4 simple steps: - -Step 1 -====== -Perform the following substitutions: -ip -> r8, then -r0 -> ip, -and insert 'mov ip, r0' as the first statement of the function. -At this point, we have a memset() implementation returning the proper result, -but corrupting r8 on some paths (the ones that were using ip). - -Step 2 -====== -Make sure r8 is saved and restored when (! CALGN(1)+0) == 1: - -save r8: -- str lr, [sp, #-4]! -+ stmfd sp!, {r8, lr} - -and restore r8 on both exit paths: -- ldmeqfd sp!, {pc} @ Now <64 bytes to go. -+ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. -(...) - tst r2, #16 - stmneia ip!, {r1, r3, r8, lr} -- ldr lr, [sp], #4 -+ ldmfd sp!, {r8, lr} - -Step 3 -====== -Make sure r8 is saved and restored when (! CALGN(1)+0) == 0: - -save r8: -- stmfd sp!, {r4-r7, lr} -+ stmfd sp!, {r4-r8, lr} - -and restore r8 on both exit paths: - bgt 3b -- ldmeqfd sp!, {r4-r7, pc} -+ ldmeqfd sp!, {r4-r8, pc} -(...) - tst r2, #16 - stmneia ip!, {r4-r7} -- ldmfd sp!, {r4-r7, lr} -+ ldmfd sp!, {r4-r8, lr} - -Step 4 -====== -Rewrite register list "r4-r7, r8" as "r4-r8". - -Upstream-Status: Pending - -Signed-off-by: Ivan Djelic <ivan.djelic@parrot.com> -Reviewed-by: Nicolas Pitre <nico@linaro.org> -Signed-off-by: Dirk Behme <dirk.behme@gmail.com> -Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> -(cherry picked from commit 455bd4c430b0c0a361f38e8658a0d6cb469942b5) ---- - arch/arm/lib/memset.S | 85 ++++++++++++++++++++++++++------------------------- - 1 file changed, 44 insertions(+), 41 deletions(-) - -diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S -index 650d592..d912e73 100644 ---- a/arch/arm/lib/memset.S -+++ b/arch/arm/lib/memset.S -@@ -19,9 +19,9 @@ - 1: subs r2, r2, #4 @ 1 do we have enough - blt 5f @ 1 bytes to align with? - cmp r3, #2 @ 1 -- strltb r1, [r0], #1 @ 1 -- strleb r1, [r0], #1 @ 1 -- strb r1, [r0], #1 @ 1 -+ strltb r1, [ip], #1 @ 1 -+ strleb r1, [ip], #1 @ 1 -+ strb r1, [ip], #1 @ 1 - add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) - /* - * The pointer is now aligned and the length is adjusted. Try doing the -@@ -29,10 +29,14 @@ - */ - - ENTRY(memset) -- ands r3, r0, #3 @ 1 unaligned? -+/* -+ * Preserve the contents of r0 for the return value. -+ */ -+ mov ip, r0 -+ ands r3, ip, #3 @ 1 unaligned? - bne 1b @ 1 - /* -- * we know that the pointer in r0 is aligned to a word boundary. -+ * we know that the pointer in ip is aligned to a word boundary. - */ - orr r1, r1, r1, lsl #8 - orr r1, r1, r1, lsl #16 -@@ -43,29 +47,28 @@ ENTRY(memset) - #if ! CALGN(1)+0 - - /* -- * We need an extra register for this loop - save the return address and -- * use the LR -+ * We need 2 extra registers for this loop - use r8 and the LR - */ -- str lr, [sp, #-4]! -- mov ip, r1 -+ stmfd sp!, {r8, lr} -+ mov r8, r1 - mov lr, r1 - - 2: subs r2, r2, #64 -- stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time. -- stmgeia r0!, {r1, r3, ip, lr} -- stmgeia r0!, {r1, r3, ip, lr} -- stmgeia r0!, {r1, r3, ip, lr} -+ stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time. -+ stmgeia ip!, {r1, r3, r8, lr} -+ stmgeia ip!, {r1, r3, r8, lr} -+ stmgeia ip!, {r1, r3, r8, lr} - bgt 2b -- ldmeqfd sp!, {pc} @ Now <64 bytes to go. -+ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. - /* - * No need to correct the count; we're only testing bits from now on - */ - tst r2, #32 -- stmneia r0!, {r1, r3, ip, lr} -- stmneia r0!, {r1, r3, ip, lr} -+ stmneia ip!, {r1, r3, r8, lr} -+ stmneia ip!, {r1, r3, r8, lr} - tst r2, #16 -- stmneia r0!, {r1, r3, ip, lr} -- ldr lr, [sp], #4 -+ stmneia ip!, {r1, r3, r8, lr} -+ ldmfd sp!, {r8, lr} - - #else - -@@ -74,54 +77,54 @@ ENTRY(memset) - * whole cache lines at once. - */ - -- stmfd sp!, {r4-r7, lr} -+ stmfd sp!, {r4-r8, lr} - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 -- mov ip, r1 -+ mov r8, r1 - mov lr, r1 - - cmp r2, #96 -- tstgt r0, #31 -+ tstgt ip, #31 - ble 3f - -- and ip, r0, #31 -- rsb ip, ip, #32 -- sub r2, r2, ip -- movs ip, ip, lsl #(32 - 4) -- stmcsia r0!, {r4, r5, r6, r7} -- stmmiia r0!, {r4, r5} -- tst ip, #(1 << 30) -- mov ip, r1 -- strne r1, [r0], #4 -+ and r8, ip, #31 -+ rsb r8, r8, #32 -+ sub r2, r2, r8 -+ movs r8, r8, lsl #(32 - 4) -+ stmcsia ip!, {r4, r5, r6, r7} -+ stmmiia ip!, {r4, r5} -+ tst r8, #(1 << 30) -+ mov r8, r1 -+ strne r1, [ip], #4 - - 3: subs r2, r2, #64 -- stmgeia r0!, {r1, r3-r7, ip, lr} -- stmgeia r0!, {r1, r3-r7, ip, lr} -+ stmgeia ip!, {r1, r3-r8, lr} -+ stmgeia ip!, {r1, r3-r8, lr} - bgt 3b -- ldmeqfd sp!, {r4-r7, pc} -+ ldmeqfd sp!, {r4-r8, pc} - - tst r2, #32 -- stmneia r0!, {r1, r3-r7, ip, lr} -+ stmneia ip!, {r1, r3-r8, lr} - tst r2, #16 -- stmneia r0!, {r4-r7} -- ldmfd sp!, {r4-r7, lr} -+ stmneia ip!, {r4-r7} -+ ldmfd sp!, {r4-r8, lr} - - #endif - - 4: tst r2, #8 -- stmneia r0!, {r1, r3} -+ stmneia ip!, {r1, r3} - tst r2, #4 -- strne r1, [r0], #4 -+ strne r1, [ip], #4 - /* - * When we get here, we've got less than 4 bytes to zero. We - * may have an unaligned pointer as well. - */ - 5: tst r2, #2 -- strneb r1, [r0], #1 -- strneb r1, [r0], #1 -+ strneb r1, [ip], #1 -+ strneb r1, [ip], #1 - tst r2, #1 -- strneb r1, [r0], #1 -+ strneb r1, [ip], #1 - mov pc, lr - ENDPROC(memset) --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch b/recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch deleted file mode 100644 index b8d6f53..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 2ba23fa6c4128febaaf57fe184420a7111caa237 Mon Sep 17 00:00:00 2001 -From: Nicolas Pitre <nicolas.pitre@linaro.org> -Date: Tue, 12 Mar 2013 13:00:42 +0100 -Subject: [PATCH] ARM: 7670/1: fix the memset fix -Organization: O.S. Systems Software LTDA. - -Commit 455bd4c430b0 ("ARM: 7668/1: fix memset-related crashes caused by -recent GCC (4.7.2) optimizations") attempted to fix a compliance issue -with the memset return value. However the memset itself became broken -by that patch for misaligned pointers. - -This fixes the above by branching over the entry code from the -misaligned fixup code to avoid reloading the original pointer. - -Also, because the function entry alignment is wrong in the Thumb mode -compilation, that fixup code is moved to the end. - -While at it, the entry instructions are slightly reworked to help dual -issue pipelines. - -Upstream-Status: Pending - -Signed-off-by: Nicolas Pitre <nico@linaro.org> -Tested-by: Alexander Holler <holler@ahsoftware.de> -Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> -(cherry picked from commit 418df63adac56841ef6b0f1fcf435bc64d4ed177) ---- - arch/arm/lib/memset.S | 33 +++++++++++++-------------------- - 1 file changed, 13 insertions(+), 20 deletions(-) - -diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S -index d912e73..94b0650 100644 ---- a/arch/arm/lib/memset.S -+++ b/arch/arm/lib/memset.S -@@ -14,31 +14,15 @@ - - .text - .align 5 -- .word 0 -- --1: subs r2, r2, #4 @ 1 do we have enough -- blt 5f @ 1 bytes to align with? -- cmp r3, #2 @ 1 -- strltb r1, [ip], #1 @ 1 -- strleb r1, [ip], #1 @ 1 -- strb r1, [ip], #1 @ 1 -- add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) --/* -- * The pointer is now aligned and the length is adjusted. Try doing the -- * memset again. -- */ - - ENTRY(memset) --/* -- * Preserve the contents of r0 for the return value. -- */ -- mov ip, r0 -- ands r3, ip, #3 @ 1 unaligned? -- bne 1b @ 1 -+ ands r3, r0, #3 @ 1 unaligned? -+ mov ip, r0 @ preserve r0 as return value -+ bne 6f @ 1 - /* - * we know that the pointer in ip is aligned to a word boundary. - */ -- orr r1, r1, r1, lsl #8 -+1: orr r1, r1, r1, lsl #8 - orr r1, r1, r1, lsl #16 - mov r3, r1 - cmp r2, #16 -@@ -127,4 +111,13 @@ ENTRY(memset) - tst r2, #1 - strneb r1, [ip], #1 - mov pc, lr -+ -+6: subs r2, r2, #4 @ 1 do we have enough -+ blt 5b @ 1 bytes to align with? -+ cmp r3, #2 @ 1 -+ strltb r1, [ip], #1 @ 1 -+ strleb r1, [ip], #1 @ 1 -+ strb r1, [ip], #1 @ 1 -+ add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) -+ b 1b - ENDPROC(memset) --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch b/recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch deleted file mode 100644 index 7316351..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch +++ /dev/null @@ -1,43 +0,0 @@ -From d8601292ae25e0af47aa4486055221ab44113f0e Mon Sep 17 00:00:00 2001 -From: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> -Date: Mon, 15 Jul 2013 15:34:54 -0500 -Subject: [PATCH] ENGR00271136 Fix build break when CONFIG_CLK_DEBUG is - disabled -Organization: O.S. Systems Software LTDA. - -clk structure member name is defined only when CONFIG_CLK_DEBUG is enabled. -Hence need to encapsulate the code with this config. - -Patch received from imx community: -https://community.freescale.com/thread/308482 - -Upstream-Status: Pending - -Signed-off-by: xiongweihuang -Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> ---- - arch/arm/plat-mxc/clock.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c -index 93347eb..1aa2664 100755 ---- a/arch/arm/plat-mxc/clock.c -+++ b/arch/arm/plat-mxc/clock.c -@@ -58,12 +58,12 @@ static void __clk_disable(struct clk *clk) - { - if (clk == NULL || IS_ERR(clk)) - return; -- -+#ifdef CONFIG_CLK_DEBUG - if (!clk->usecount) { - WARN(1, "clock enable/disable mismatch! clk %s\n", clk->name); - return; - } -- -+#endif - if (!(--clk->usecount)) { - if (clk->disable) - clk->disable(clk); --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch b/recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch deleted file mode 100644 index cb20198..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 538f4bb2f7a51f267395550a5be9f0ab2e426712 Mon Sep 17 00:00:00 2001 -From: Erik Boto <erik.boto@pelagicore.com> -Date: Tue, 16 Jul 2013 12:06:05 -0500 -Subject: [PATCH] ENGR00271359 Add Multi-touch support -Organization: O.S. Systems Software LTDA. - -The previous behavior of the driver did not work properly with Qt5 -QtQuick multi touch-point gestures, due to how touch-points are -reported when removing a touch-point. My interpretation of the -available documentation [1] was that the driver should report all -touch-points between SYN_REPORTs, but it is not explicitly stated so. -I've found another mail-thread [2] where the creator of the protocol -states: - -"The protocol defines a generic way of sending a variable amount of -contacts. The contact count is obtained by counting the number of -non-empty finger packets between SYN_REPORT events."-Henrik Rydberg - -I think this verifies my assumption that all touch-points should be -reported between SYN_REPORTs, otherwise it can not be used to obtain -the count. - -[1] https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt -[2] http://lists.x.org/archives/xorg-devel/2010-March/006466.html - -Upstream-Status: Pending - -Signed-off-by: Erik Boto <erik.boto@pelagicore.com> -Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> -(cherry picked from commit 7cba001c5a502680f6dbf902821726779a9c9287) ---- - drivers/input/touchscreen/egalax_ts.c | 36 +++++++++++++++++------------------ - 1 file changed, 18 insertions(+), 18 deletions(-) - -diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c -index 0b6cde7..271f820 100644 ---- a/drivers/input/touchscreen/egalax_ts.c -+++ b/drivers/input/touchscreen/egalax_ts.c -@@ -133,7 +133,6 @@ retry: - } - - if (down) { -- /* should also report old pointers */ - events[id].valid = valid; - events[id].status = down; - events[id].x = x; -@@ -144,23 +143,6 @@ retry: - input_report_abs(input_dev, ABS_Y, y); - input_event(data->input_dev, EV_KEY, BTN_TOUCH, 1); - input_report_abs(input_dev, ABS_PRESSURE, 1); --#else -- for (i = 0; i < MAX_SUPPORT_POINTS; i++) { -- if (!events[i].valid) -- continue; -- dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d", -- i, valid, x, y); -- -- input_report_abs(input_dev, -- ABS_MT_TRACKING_ID, i); -- input_report_abs(input_dev, -- ABS_MT_TOUCH_MAJOR, 1); -- input_report_abs(input_dev, -- ABS_MT_POSITION_X, events[i].x); -- input_report_abs(input_dev, -- ABS_MT_POSITION_Y, events[i].y); -- input_mt_sync(input_dev); -- } - #endif - } else { - dev_dbg(&client->dev, "release id:%d\n", id); -@@ -176,6 +158,24 @@ retry: - #endif - } - -+#ifndef CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH -+ /* report all pointers */ -+ for (i = 0; i < MAX_SUPPORT_POINTS; i++) { -+ if (!events[i].valid) -+ continue; -+ dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d", -+ i, valid, x, y); -+ input_report_abs(input_dev, -+ ABS_MT_TRACKING_ID, i); -+ input_report_abs(input_dev, -+ ABS_MT_TOUCH_MAJOR, 1); -+ input_report_abs(input_dev, -+ ABS_MT_POSITION_X, events[i].x); -+ input_report_abs(input_dev, -+ ABS_MT_POSITION_Y, events[i].y); -+ input_mt_sync(input_dev); -+ } -+#endif - input_sync(input_dev); - return IRQ_HANDLED; - } --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch b/recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch deleted file mode 100644 index 00a6b5c..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch +++ /dev/null @@ -1,227 +0,0 @@ -From 3e6441d113f72b412081a2c87f39011e4c253a35 Mon Sep 17 00:00:00 2001 -From: Robert Winkler <robert.winkler@boundarydevices.com> -Date: Fri, 19 Jul 2013 19:00:41 -0700 -Subject: [PATCH] Add support for DVI monitors -Organization: O.S. Systems Software LTDA. - -Upstream-Status: Pending - -Signed-off-by: Robert Winkler <robert.winkler@boundarydevices.com> ---- - arch/arm/plat-mxc/include/mach/mxc_hdmi.h | 7 +++ - drivers/video/mxc_hdmi.c | 98 +++++++++++++------------------ - 2 files changed, 49 insertions(+), 56 deletions(-) - -diff --git a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h -index 94f7638..af59c62 100644 ---- a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h -+++ b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h -@@ -605,6 +605,10 @@ enum { - HDMI_IH_MUTE_PHY_STAT0_TX_PHY_LOCK = 0x2, - HDMI_IH_MUTE_PHY_STAT0_HPD = 0x1, - -+/* IH and IH_MUTE convenience macro RX_SENSE | HPD*/ -+ HDMI_DVI_IH_STAT = 0x3D, -+ -+ - /* IH_AHBDMAAUD_STAT0 field values */ - HDMI_IH_AHBDMAAUD_STAT0_ERROR = 0x20, - HDMI_IH_AHBDMAAUD_STAT0_LOST = 0x10, -@@ -903,6 +907,9 @@ enum { - HDMI_PHY_HPD = 0x02, - HDMI_PHY_TX_PHY_LOCK = 0x01, - -+/* HDMI STAT convenience RX_SENSE | HPD */ -+ HDMI_DVI_STAT = 0xF2, -+ - /* PHY_I2CM_SLAVE_ADDR field values */ - HDMI_PHY_I2CM_SLAVE_ADDR_PHY_GEN2 = 0x69, - HDMI_PHY_I2CM_SLAVE_ADDR_HEAC_PHY = 0x49, -diff --git a/drivers/video/mxc_hdmi.c b/drivers/video/mxc_hdmi.c -index c5069aa..544f352 100644 ---- a/drivers/video/mxc_hdmi.c -+++ b/drivers/video/mxc_hdmi.c -@@ -180,7 +180,6 @@ struct mxc_hdmi { - bool dft_mode_set; - char *dft_mode_str; - int default_bpp; -- u8 latest_intr_stat; - bool irq_enabled; - spinlock_t irq_lock; - bool phy_enabled; -@@ -1996,58 +1995,48 @@ static void hotplug_worker(struct work_struct *work) - struct delayed_work *delay_work = to_delayed_work(work); - struct mxc_hdmi *hdmi = - container_of(delay_work, struct mxc_hdmi, hotplug_work); -- u32 phy_int_stat, phy_int_pol, phy_int_mask; -- u8 val; -+ u32 hdmi_phy_stat0, hdmi_phy_pol0, hdmi_phy_mask0; - unsigned long flags; - char event_string[32]; - char *envp[] = { event_string, NULL }; - -- phy_int_stat = hdmi->latest_intr_stat; -- phy_int_pol = hdmi_readb(HDMI_PHY_POL0); - -- dev_dbg(&hdmi->pdev->dev, "phy_int_stat=0x%x, phy_int_pol=0x%x\n", -- phy_int_stat, phy_int_pol); -+ hdmi_phy_stat0 = hdmi_readb(HDMI_PHY_STAT0); -+ hdmi_phy_pol0 = hdmi_readb(HDMI_PHY_POL0); -+ -+ dev_dbg(&hdmi->pdev->dev, "hdmi_phy_stat0=0x%x, hdmi_phy_pol0=0x%x\n", -+ hdmi_phy_stat0, hdmi_phy_pol0); -+ -+ /* Make HPD intr active low to capture unplug event or -+ * active high to capture plugin event */ -+ hdmi_writeb((HDMI_DVI_STAT & ~hdmi_phy_stat0), HDMI_PHY_POL0); - - /* check cable status */ -- if (phy_int_stat & HDMI_IH_PHY_STAT0_HPD) { -- /* cable connection changes */ -- if (phy_int_pol & HDMI_PHY_HPD) { -- /* Plugin event */ -- dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n"); -- mxc_hdmi_cable_connected(hdmi); -- -- /* Make HPD intr active low to capture unplug event */ -- val = hdmi_readb(HDMI_PHY_POL0); -- val &= ~HDMI_PHY_HPD; -- hdmi_writeb(val, HDMI_PHY_POL0); -- -- sprintf(event_string, "EVENT=plugin"); -- kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); -+ if (hdmi_phy_stat0 & HDMI_DVI_STAT) { -+ /* Plugin event */ -+ dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n"); -+ mxc_hdmi_cable_connected(hdmi); -+ -+ sprintf(event_string, "EVENT=plugin"); -+ kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); - #ifdef CONFIG_MXC_HDMI_CEC -- mxc_hdmi_cec_handle(0x80); -+ mxc_hdmi_cec_handle(0x80); - #endif -- hdmi_set_cable_state(1); -- -- } else if (!(phy_int_pol & HDMI_PHY_HPD)) { -- /* Plugout event */ -- dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n"); -- hdmi_set_cable_state(0); -- mxc_hdmi_abort_stream(); -- mxc_hdmi_cable_disconnected(hdmi); -+ hdmi_set_cable_state(1); - -- /* Make HPD intr active high to capture plugin event */ -- val = hdmi_readb(HDMI_PHY_POL0); -- val |= HDMI_PHY_HPD; -- hdmi_writeb(val, HDMI_PHY_POL0); -+ } else { -+ /* Plugout event */ -+ dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n"); -+ hdmi_set_cable_state(0); -+ mxc_hdmi_abort_stream(); -+ mxc_hdmi_cable_disconnected(hdmi); - -- sprintf(event_string, "EVENT=plugout"); -- kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); -+ sprintf(event_string, "EVENT=plugout"); -+ kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); - #ifdef CONFIG_MXC_HDMI_CEC -- mxc_hdmi_cec_handle(0x100); -+ mxc_hdmi_cec_handle(0x100); - #endif - -- } else -- dev_dbg(&hdmi->pdev->dev, "EVENT=none?\n"); - } - - /* Lock here to ensure full powerdown sequence -@@ -2055,12 +2044,12 @@ static void hotplug_worker(struct work_struct *work) - spin_lock_irqsave(&hdmi->irq_lock, flags); - - /* Re-enable HPD interrupts */ -- phy_int_mask = hdmi_readb(HDMI_PHY_MASK0); -- phy_int_mask &= ~HDMI_PHY_HPD; -- hdmi_writeb(phy_int_mask, HDMI_PHY_MASK0); -+ hdmi_phy_mask0 = hdmi_readb(HDMI_PHY_MASK0); -+ hdmi_phy_mask0 &= ~HDMI_DVI_STAT; -+ hdmi_writeb(hdmi_phy_mask0, HDMI_PHY_MASK0); - - /* Unmute interrupts */ -- hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0); -+ hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0); - - if (hdmi_readb(HDMI_IH_FC_STAT2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK) - mxc_hdmi_clear_overflow(); -@@ -2086,7 +2075,7 @@ static void hdcp_hdp_worker(struct work_struct *work) - static irqreturn_t mxc_hdmi_hotplug(int irq, void *data) - { - struct mxc_hdmi *hdmi = data; -- u8 val, intr_stat; -+ u8 val; - unsigned long flags; - - spin_lock_irqsave(&hdmi->irq_lock, flags); -@@ -2108,25 +2097,22 @@ static irqreturn_t mxc_hdmi_hotplug(int irq, void *data) - * HDMI registers. - */ - /* Capture status - used in hotplug_worker ISR */ -- intr_stat = hdmi_readb(HDMI_IH_PHY_STAT0); -- -- if (intr_stat & HDMI_IH_PHY_STAT0_HPD) { -+ if (hdmi_readb(HDMI_IH_PHY_STAT0) & HDMI_DVI_IH_STAT) { - - dev_dbg(&hdmi->pdev->dev, "Hotplug interrupt received\n"); -- hdmi->latest_intr_stat = intr_stat; - - /* Mute interrupts until handled */ - - val = hdmi_readb(HDMI_IH_MUTE_PHY_STAT0); -- val |= HDMI_IH_MUTE_PHY_STAT0_HPD; -+ val |= HDMI_DVI_IH_STAT; - hdmi_writeb(val, HDMI_IH_MUTE_PHY_STAT0); - - val = hdmi_readb(HDMI_PHY_MASK0); -- val |= HDMI_PHY_HPD; -+ val |= HDMI_DVI_STAT; - hdmi_writeb(val, HDMI_PHY_MASK0); - - /* Clear Hotplug interrupts */ -- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); -+ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); - - schedule_delayed_work(&(hdmi->hotplug_work), msecs_to_jiffies(20)); - } -@@ -2282,13 +2268,13 @@ static void mxc_hdmi_fb_registered(struct mxc_hdmi *hdmi) - HDMI_PHY_I2CM_CTLINT_ADDR); - - /* enable cable hot plug irq */ -- hdmi_writeb((u8)~HDMI_PHY_HPD, HDMI_PHY_MASK0); -+ hdmi_writeb((u8)~HDMI_DVI_STAT, HDMI_PHY_MASK0); - - /* Clear Hotplug interrupts */ -- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); -+ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); - - /* Unmute interrupts */ -- hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0); -+ hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0); - - hdmi->fb_reg = true; - -@@ -2522,10 +2508,10 @@ static int mxc_hdmi_disp_init(struct mxc_dispdrv_handle *disp, - - /* Configure registers related to HDMI interrupt - * generation before registering IRQ. */ -- hdmi_writeb(HDMI_PHY_HPD, HDMI_PHY_POL0); -+ hdmi_writeb(HDMI_DVI_STAT, HDMI_PHY_POL0); - - /* Clear Hotplug interrupts */ -- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); -+ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); - - hdmi->nb.notifier_call = mxc_hdmi_fb_event; - ret = fb_register_client(&hdmi->nb); --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch b/recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch deleted file mode 100644 index d02aa40..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch +++ /dev/null @@ -1,38 +0,0 @@ -From cd31abbe08372fa870fac78ae845edd4859f8835 Mon Sep 17 00:00:00 2001 -From: Fabio Estevam <fabio.estevam@freescale.com> -Date: Sat, 28 Sep 2013 18:46:18 -0300 -Subject: [PATCH] ARM: mach-mx6: board-mx6q_sabresd: Register SDHC3 first -Organization: O.S. Systems Software LTDA. - -On sabresd boards we boot from SDHC3, so let's register it as mmc0. - -Currently eMMC is mmc0 and mmc1 can be SDHC3 or SDHC2 (if present). - -Registering SDHC3 is safer as we can always find the rootfs. - -Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> ---- - arch/arm/mach-mx6/board-mx6q_sabresd.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c -index 3f9a845..4e6b323 100644 ---- a/arch/arm/mach-mx6/board-mx6q_sabresd.c -+++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c -@@ -1847,12 +1847,9 @@ static void __init mx6_sabresd_board_init(void) - - imx6q_add_pm_imx(0, &mx6q_sabresd_pm_data); - -- /* Move sd4 to first because sd4 connect to emmc. -- Mfgtools want emmc is mmcblk0 and other sd card is mmcblk1. -- */ -+ imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data); - imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabresd_sd4_data); - imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data); -- imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data); - imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata); - imx6q_sabresd_init_usb(); - /* SATA is not supported by MX6DL/Solo */ --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch b/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch deleted file mode 100644 index 1e039fd..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch +++ /dev/null @@ -1,6261 +0,0 @@ -From 2e575255b8c53d3cfe2af068411696fe3c40debb Mon Sep 17 00:00:00 2001 -From: Loren Huang <b02279@freescale.com> -Date: Mon, 2 Sep 2013 12:16:48 +0800 -Subject: [PATCH 01/16] ENGR00278350 gpu:viante 4.6.9p13 kernel part - integration - -Integrated 4.6.9p13 kernel part change. -This integration is mainly for android test. -Linux test will be focused on 3.10 kernel. - -Signed-off-by: Loren HUANG <b02279@freescale.com> -Acked-by: Shawn Guo ---- - drivers/mxc/gpu-viv/Kbuild | 33 +- - .../GC350/hal/kernel/gc_hal_kernel_hardware_vg.c | 177 ++-- - .../GC350/hal/kernel/gc_hal_kernel_hardware_vg.h | 9 +- - .../arch/XAQ2/hal/kernel/gc_hal_kernel_context.c | 8 +- - .../arch/XAQ2/hal/kernel/gc_hal_kernel_context.h | 13 + - .../arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c | 736 ++++++++++++- - .../arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h | 1 + - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c | 125 ++- - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h | 24 +- - .../mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c | 57 ++ - .../gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c | 45 +- - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c | 12 + - .../mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c | 29 + - .../hal/kernel/gc_hal_kernel_interrupt_vg.c | 3 + - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c | 8 +- - .../hal/kernel/gc_hal_kernel_video_memory.c | 20 +- - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h | 84 +- - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h | 172 +++- - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h | 142 ++- - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h | 37 + - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h | 46 +- - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h | 125 ++- - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h | 86 +- - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h | 1078 +++----------------- - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h | 48 + - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h | 79 +- - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h | 2 +- - .../hal/os/linux/kernel/gc_hal_kernel_device.c | 17 +- - .../hal/os/linux/kernel/gc_hal_kernel_device.h | 16 +- - .../hal/os/linux/kernel/gc_hal_kernel_driver.c | 99 +- - .../gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c | 655 ++++++++++-- - .../hal/os/linux/kernel/gc_hal_kernel_sync.c | 174 ++++ - .../hal/os/linux/kernel/gc_hal_kernel_sync.h | 71 ++ - 33 files changed, 2974 insertions(+), 1257 deletions(-) - create mode 100644 drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c - create mode 100644 drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h - -diff --git a/drivers/mxc/gpu-viv/Kbuild b/drivers/mxc/gpu-viv/Kbuild -index 93b1259..2b277d6 100644 ---- a/drivers/mxc/gpu-viv/Kbuild -+++ b/drivers/mxc/gpu-viv/Kbuild -@@ -45,8 +45,6 @@ OBJS := $(OS_KERNEL_DIR)/gc_hal_kernel_device.o \ - $(OS_KERNEL_DIR)/gc_hal_kernel_os.o \ - $(OS_KERNEL_DIR)/gc_hal_kernel_debugfs.o - --ifeq ($(USE_3D_VG), 1) -- - OBJS += $(HAL_KERNEL_DIR)/gc_hal_kernel.o \ - $(HAL_KERNEL_DIR)/gc_hal_kernel_command.o \ - $(HAL_KERNEL_DIR)/gc_hal_kernel_db.o \ -@@ -69,19 +67,9 @@ OBJS +=\ - $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_command_vg.o\ - $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_vg.o - endif --else -- --OBJS += $(HAL_KERNEL_DIR)/gc_hal_kernel.o \ -- $(HAL_KERNEL_DIR)/gc_hal_kernel_command.o \ -- $(HAL_KERNEL_DIR)/gc_hal_kernel_heap.o \ -- $(HAL_KERNEL_DIR)/gc_hal_kernel_interrupt.o \ -- $(HAL_KERNEL_DIR)/gc_hal_kernel_mmu.o \ -- $(HAL_KERNEL_DIR)/gc_hal_kernel_video_memory.o \ -- $(OS_KERNEL_DIR)/gc_hal_kernel_debug.o -- --OBJS += $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware.o \ -- $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_command.o - -+ifneq ($(CONFIG_SYNC),) -+OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_sync.o - endif - - ifeq ($(KERNELRELEASE), ) -@@ -129,23 +117,16 @@ ifeq ($(CONFIG_DOVE_GPU), 1) - EXTRA_CFLAGS += -DCONFIG_DOVE_GPU=1 - endif - --ifeq ($(USE_POWER_MANAGEMENT), 1) --EXTRA_CFLAGS += -DgcdPOWER_MANAGEMENT=1 --else --EXTRA_CFLAGS += -DgcdPOWER_MANAGEMENT=0 --endif -- - ifneq ($(USE_PLATFORM_DRIVER), 0) - EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=1 - else - EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=0 - endif - --ifeq ($(USE_PROFILER), 1) -+ - EXTRA_CFLAGS += -DVIVANTE_PROFILER=1 --else --EXTRA_CFLAGS += -DVIVANTE_PROFILER=0 --endif -+EXTRA_CFLAGS += -DVIVANTE_PROFILER_CONTEXT=1 -+ - - ifeq ($(ANDROID), 1) - EXTRA_CFLAGS += -DANDROID=1 -@@ -235,6 +216,10 @@ ifeq ($(USE_BANK_ALIGNMENT), 1) - endif - endif - -+ifneq ($(CONFIG_SYNC),) -+EXTRA_CFLAGS += -DgcdANDROID_NATIVE_FENCE_SYNC=1 -+endif -+ - EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel/inc - EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel - EXTRA_CFLAGS += -I$(AQARCH)/hal/kernel -diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c -index 70c2cd6..a17d2fd 100644 ---- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c -+++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c -@@ -217,50 +217,17 @@ _IdentifyHardware( - return status; - } - --static gctTHREADFUNCRESULT gctTHREADFUNCTYPE --_TimeIdleThread( -- gctTHREADFUNCPARAMETER ThreadParameter -+#if gcdPOWEROFF_TIMEOUT -+void -+_VGPowerTimerFunction( -+ gctPOINTER Data - ) - { -- gctUINT32 currentTime = 0; -- gctBOOL isAfter = gcvFALSE; -- gceCHIPPOWERSTATE state; -- -- /* Cast the object. */ -- gckVGHARDWARE hardware = (gckVGHARDWARE) ThreadParameter; -- -- while(gcvTRUE) -- { -- gcmkVERIFY_OK(gckOS_WaitSignal(hardware->os, -- hardware->idleSignal, gcvINFINITE)); -- -- if (hardware->killThread) -- { -- break; -- } -- -- do -- { -- gcmkVERIFY_OK(gckOS_GetTicks(¤tTime)); -- -- gcmkVERIFY_OK( -- gckOS_TicksAfter(currentTime, hardware->powerOffTime, &isAfter)); -- -- if (isAfter) -- { -- gcmkVERIFY_OK(gckVGHARDWARE_SetPowerManagementState( -- hardware, gcvPOWER_OFF_BROADCAST)); -- } -- -- gcmkVERIFY_OK(gckOS_Delay(hardware->os, 200)); -- -- gcmkVERIFY_OK(gckVGHARDWARE_QueryPowerManagementState( -- hardware, &state)); -- -- } while (state == gcvPOWER_IDLE); -- } -- return 0; -+ gckVGHARDWARE hardware = (gckVGHARDWARE)Data; -+ gcmkVERIFY_OK( -+ gckVGHARDWARE_SetPowerManagementState(hardware, gcvPOWER_OFF_TIMEOUT)); - } -+#endif - - /******************************************************************************\ - ****************************** gckVGHARDWARE API code ***************************** -@@ -338,15 +305,21 @@ gckVGHARDWARE_Construct( - hardware->chipMinorFeatures2 = chipMinorFeatures2; - - hardware->powerMutex = gcvNULL; -- hardware->idleSignal = gcvNULL; - hardware->chipPowerState = gcvPOWER_ON; - hardware->chipPowerStateGlobal = gcvPOWER_ON; - hardware->clockState = gcvTRUE; - hardware->powerState = gcvTRUE; -- hardware->powerOffTimeout = gcdPOWEROFF_TIMEOUT; -+ - hardware->powerOffTime = 0; -- hardware->timeIdleThread = gcvNULL; -- hardware->killThread = gcvFALSE; -+#if gcdPOWEROFF_TIMEOUT -+ hardware->powerOffTimeout = gcdPOWEROFF_TIMEOUT; -+ -+ gcmkVERIFY_OK(gckOS_CreateTimer(Os, -+ _VGPowerTimerFunction, -+ (gctPOINTER)hardware, -+ &hardware->powerOffTimer)); -+#endif -+ - /* Determine whether FE 2.0 is present. */ - hardware->fe20 = ((((gctUINT32) (hardware->chipFeatures)) >> (0 ? 28:28) & ((gctUINT32) ((((1 ? 28:28) - (0 ? 28:28) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 28:28) - (0 ? 28:28) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 28:28) - (0 ? 28:28) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 28:28) - (0 ? 28:28) + 1))))))); - -@@ -365,18 +338,10 @@ gckVGHARDWARE_Construct( - gcmkVERIFY_OK(gckVGHARDWARE_SetFastClear(hardware, -1)); - - gcmkERR_BREAK(gckOS_CreateMutex(Os, &hardware->powerMutex)); -- gcmkERR_BREAK(gckOS_CreateSignal(Os, gcvFALSE, &hardware->idleSignal)); - - /* Enable power management by default. */ - hardware->powerManagement = gcvTRUE; - -- gcmkERR_BREAK(gckOS_StartThread( -- hardware->os, -- _TimeIdleThread, -- hardware, -- &hardware->timeIdleThread -- )); -- - /* Return pointer to the gckVGHARDWARE object. */ - *Hardware = hardware; - -@@ -386,6 +351,14 @@ gckVGHARDWARE_Construct( - } - while (gcvFALSE); - -+#if gcdPOWEROFF_TIMEOUT -+ if (hardware->powerOffTimer != gcvNULL) -+ { -+ gcmkVERIFY_OK(gckOS_StopTimer(Os, hardware->powerOffTimer)); -+ gcmkVERIFY_OK(gckOS_DestroyTimer(Os, hardware->powerOffTimer)); -+ } -+#endif -+ - if (hardware->pageTableDirty != gcvNULL) - { - gcmkVERIFY_OK(gckOS_AtomDestroy(Os, hardware->pageTableDirty)); -@@ -428,10 +401,6 @@ gckVGHARDWARE_Destroy( - /* Verify the arguments. */ - gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); - -- Hardware->killThread = gcvTRUE; -- gcmkVERIFY_OK(gckOS_Signal(Hardware->os, Hardware->idleSignal, gcvTRUE)); -- gcmkVERIFY_OK(gckOS_StopThread(Hardware->os, Hardware->timeIdleThread)); -- - /* Mark the object as unknown. */ - Hardware->object.type = gcvOBJ_UNKNOWN; - -@@ -441,11 +410,10 @@ gckVGHARDWARE_Destroy( - Hardware->os, Hardware->powerMutex)); - } - -- if (Hardware->idleSignal != gcvNULL) -- { -- gcmkVERIFY_OK(gckOS_DestroySignal( -- Hardware->os, Hardware->idleSignal)); -- } -+#if gcdPOWEROFF_TIMEOUT -+ gcmkVERIFY_OK(gckOS_StopTimer(Hardware->os, Hardware->powerOffTimer)); -+ gcmkVERIFY_OK(gckOS_DestroyTimer(Hardware->os, Hardware->powerOffTimer)); -+#endif - - if (Hardware->pageTableDirty != gcvNULL) - { -@@ -1510,11 +1478,15 @@ gckVGHARDWARE_SetPowerManagementState( - gctBOOL commitMutex = gcvFALSE; - gctBOOL mutexAcquired = gcvFALSE; - -+#if gcdPOWEROFF_TIMEOUT -+ gctBOOL timeout = gcvFALSE; -+ gctBOOL isAfter = gcvFALSE; -+ gctUINT32 currentTime; -+#endif -+ - gctBOOL broadcast = gcvFALSE; - gctUINT32 process, thread; - gctBOOL global = gcvFALSE; -- gctUINT32 currentTime; -- - - #if gcdENABLE_PROFILING - gctUINT64 time, freq, mutexTime, onTime, stallTime, stopTime, delayTime, -@@ -1661,6 +1633,16 @@ gckVGHARDWARE_SetPowerManagementState( - global = gcvTRUE; - break; - -+#if gcdPOWEROFF_TIMEOUT -+ case gcvPOWER_OFF_TIMEOUT: -+ /* Convert to OFF and note we are inside broadcast. */ -+ State = gcvPOWER_OFF; -+ broadcast = gcvTRUE; -+ /* Check time out */ -+ timeout = gcvTRUE; -+ break; -+#endif -+ - default: - break; - } -@@ -1719,6 +1701,31 @@ gckVGHARDWARE_SetPowerManagementState( - flag = flags[Hardware->chipPowerState][State]; - /*clock = clocks[State];*/ - -+#if gcdPOWEROFF_TIMEOUT -+ if (timeout) -+ { -+ gcmkONERROR(gckOS_GetTicks(¤tTime)); -+ -+ gcmkONERROR( -+ gckOS_TicksAfter(Hardware->powerOffTime, currentTime, &isAfter)); -+ -+ /* powerOffTime is pushed forward, give up.*/ -+ if (isAfter -+ /* Expect a transition start from IDLE. */ -+ || (Hardware->chipPowerState == gcvPOWER_ON) -+ || (Hardware->chipPowerState == gcvPOWER_OFF) -+ ) -+ { -+ /* Release the power mutex. */ -+ gcmkONERROR(gckOS_ReleaseMutex(os, Hardware->powerMutex)); -+ -+ /* No need to do anything. */ -+ gcmkFOOTER_NO(); -+ return gcvSTATUS_OK; -+ } -+ } -+#endif -+ - if (flag == 0) - { - /* Release the power mutex. */ -@@ -1742,6 +1749,18 @@ gckVGHARDWARE_SetPowerManagementState( - return gcvSTATUS_OK; - } - } -+ else -+ { -+ if (flag & gcvPOWER_FLAG_ACQUIRE) -+ { -+ /* Acquire the power management semaphore. */ -+ gcmkONERROR(gckOS_AcquireSemaphore(os, command->powerSemaphore)); -+ acquired = gcvTRUE; -+ -+ /* avoid acquiring again. */ -+ flag &= ~gcvPOWER_FLAG_ACQUIRE; -+ } -+ } - - if (flag & (gcvPOWER_FLAG_INITIALIZE | gcvPOWER_FLAG_CLOCK_ON)) - { -@@ -1858,14 +1877,6 @@ gckVGHARDWARE_SetPowerManagementState( - Hardware->chipPowerStateGlobal = State; - } - -- if (State == gcvPOWER_IDLE) -- { -- gcmkVERIFY_OK(gckOS_Signal(os, Hardware->idleSignal, gcvTRUE)); -- } -- /* Reset power off time */ -- gcmkVERIFY_OK(gckOS_GetTicks(¤tTime)); -- Hardware->powerOffTime = currentTime + Hardware->powerOffTimeout; -- - if (commitMutex) - { - /* Acquire the mutex. */ -@@ -1875,6 +1886,28 @@ gckVGHARDWARE_SetPowerManagementState( - )); - } - -+#if gcdPOWEROFF_TIMEOUT -+ /* Reset power off time */ -+ gcmkONERROR(gckOS_GetTicks(¤tTime)); -+ -+ Hardware->powerOffTime = currentTime + Hardware->powerOffTimeout; -+ -+ if (State == gcvPOWER_IDLE) -+ { -+ /* Start a timer to power off GPU when GPU enters IDLE or SUSPEND. */ -+ gcmkVERIFY_OK(gckOS_StartTimer(os, -+ Hardware->powerOffTimer, -+ Hardware->powerOffTimeout)); -+ } -+ else -+ { -+ gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, "Cancel powerOfftimer"); -+ -+ /* Cancel running timer when GPU enters ON or OFF. */ -+ gcmkVERIFY_OK(gckOS_StopTimer(os, Hardware->powerOffTimer)); -+ } -+#endif -+ - /* Release the power mutex. */ - gcmkONERROR(gckOS_ReleaseMutex(os, Hardware->powerMutex)); - -diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h -index 16b81ae..73d4594 100644 ---- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h -+++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h -@@ -53,7 +53,6 @@ struct _gckVGHARDWARE - gctBOOL clockState; - gctBOOL powerState; - gctPOINTER powerMutex; -- gctSIGNAL idleSignal; - gctUINT32 powerProcess; - gctUINT32 powerThread; - gceCHIPPOWERSTATE chipPowerState; -@@ -61,11 +60,13 @@ struct _gckVGHARDWARE - gctISRMANAGERFUNC startIsr; - gctISRMANAGERFUNC stopIsr; - gctPOINTER isrContext; -+ gctPOINTER pageTableDirty; -+ -+#if gcdPOWEROFF_TIMEOUT - gctUINT32 powerOffTime; - gctUINT32 powerOffTimeout; -- gctTHREAD timeIdleThread; -- gctBOOL killThread; -- gctPOINTER pageTableDirty; -+ gctPOINTER powerOffTimer; -+#endif - - gctBOOL powerManagement; - }; -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c -index 24003e7..42e6915 100644 ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c -@@ -181,7 +181,8 @@ _FlushPipe( - ? ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 3:3) - (0 ? 3:3) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 3:3) - (0 ? 3:3) + 1))))))) << (0 ? 3:3))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 3:3) - (0 ? 3:3) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 3:3) - (0 ? 3:3) + 1))))))) << (0 ? 3:3))) - : ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) - | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 1:1) - (0 ? 1:1) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 1:1) - (0 ? 1:1) + 1))))))) << (0 ? 1:1))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 1:1) - (0 ? 1:1) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 1:1) - (0 ? 1:1) + 1))))))) << (0 ? 1:1))) -- | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))); -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))); - - /* Semaphore from FE to PE. */ - *buffer++ -@@ -620,7 +621,10 @@ _InitializeContextBuffer( - index += _State(Context, index, 0x10180 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); - index += _State(Context, index, 0x10200 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); - index += _State(Context, index, 0x10280 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); -- index += _State(Context, index, 0x02C00 >> 2, 0x00000000, 256, gcvFALSE, gcvFALSE); -+ for (i = 0; i < 256 / 16; i += 1) -+ { -+ index += _State(Context, index, (0x02C00 >> 2) + i * 16, 0x00000000, 14, gcvFALSE, gcvFALSE); -+ } - index += _State(Context, index, 0x10300 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); - index += _State(Context, index, 0x10380 >> 2, 0x00321000, 32, gcvFALSE, gcvFALSE); - index += _State(Context, index, 0x10400 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h -index 7554045..5d2c7c7 100644 ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h -@@ -134,6 +134,19 @@ struct _gckCONTEXT - #if gcdSECURE_USER - gctBOOL_PTR hint; - #endif -+ -+#if VIVANTE_PROFILER_CONTEXT -+ gcsPROFILER_COUNTERS latestProfiler; -+ gcsPROFILER_COUNTERS histroyProfiler; -+ gctUINT32 prevVSInstCount; -+ gctUINT32 prevVSBranchInstCount; -+ gctUINT32 prevVSTexInstCount; -+ gctUINT32 prevVSVertexCount; -+ gctUINT32 prevPSInstCount; -+ gctUINT32 prevPSBranchInstCount; -+ gctUINT32 prevPSTexInstCount; -+ gctUINT32 prevPSPixelCount; -+#endif - }; - - #ifdef __cplusplus -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c -index 00f3839..e02dc23 100644 ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c -@@ -21,6 +21,9 @@ - - #include "gc_hal.h" - #include "gc_hal_kernel.h" -+#if VIVANTE_PROFILER_CONTEXT -+#include "gc_hal_kernel_context.h" -+#endif - - #define _GC_OBJ_ZONE gcvZONE_HARDWARE - -@@ -69,6 +72,7 @@ _IdentifyHardware( - gctUINT32 numConstants = 0; - gctUINT32 bufferSize = 0; - gctUINT32 varyingsCount = 0; -+ gctBOOL useHZ; - - gcmkHEADER_ARG("Os=0x%x", Os); - -@@ -209,6 +213,15 @@ _IdentifyHardware( - 0x00088, - &Identity->chipMinorFeatures3)); - -+ /*The BG2 chip has no compression supertiled, and the bit of GCMinorFeature3BugFixes15 is n/a*/ -+ if(Identity->chipModel == gcv1000 && Identity->chipRevision == 0x5036) -+ { -+ Identity->chipMinorFeatures3 -+ = ((((gctUINT32) (Identity->chipMinorFeatures3)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 5:5) - (0 ? 5:5) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 5:5) - (0 ? 5:5) + 1))))))) << (0 ? 5:5))) | (((gctUINT32) (0x0 & ((gctUINT32) ((((1 ? 5:5) - (0 ? 5:5) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 5:5) - (0 ? 5:5) + 1))))))) << (0 ? 5:5))); -+ Identity->chipMinorFeatures3 -+ = ((((gctUINT32) (Identity->chipMinorFeatures3)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 27:27) - (0 ? 27:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 27:27) - (0 ? 27:27) + 1))))))) << (0 ? 27:27))) | (((gctUINT32) (0x0 & ((gctUINT32) ((((1 ? 27:27) - (0 ? 27:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 27:27) - (0 ? 27:27) + 1))))))) << (0 ? 27:27))); -+ } -+ - /* Read chip minor featuress register #4. */ - gcmkONERROR( - gckOS_ReadRegisterEx(Os, Core, -@@ -244,14 +257,31 @@ _IdentifyHardware( - if (((Identity->chipModel == gcv1000) && ((Identity->chipRevision == 0x5035) - || (Identity->chipRevision == 0x5036) - || (Identity->chipRevision == 0x5037))) -- || ((Identity->chipModel == gcv800) && (Identity->chipRevision == 0x4612))) -+ || ((Identity->chipModel == gcv800) && (Identity->chipRevision == 0x4612)) -+ || ((Identity->chipModel == gcv860) && (Identity->chipRevision == 0x4647))) - { - Identity->superTileMode = 1; - } - -+ if (Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5245) -+ { -+ useHZ = ((((gctUINT32) (Identity->chipMinorFeatures3)) >> (0 ? 26:26) & ((gctUINT32) ((((1 ? 26:26) - (0 ? 26:26) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 26:26) - (0 ? 26:26) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 26:26) - (0 ? 26:26) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 26:26) - (0 ? 26:26) + 1))))))) -+ || ((((gctUINT32) (Identity->chipMinorFeatures3)) >> (0 ? 8:8) & ((gctUINT32) ((((1 ? 8:8) - (0 ? 8:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 8:8) - (0 ? 8:8) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 8:8) - (0 ? 8:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 8:8) - (0 ? 8:8) + 1))))))); -+ } -+ else -+ { -+ useHZ = gcvFALSE; -+ } - -- /* Disable HZ when EZ is present for older chips. */ -- if (!((((gctUINT32) (Identity->chipFeatures)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))))) -+ if (useHZ) -+ { -+ /* Disable EZ. */ -+ Identity->chipFeatures -+ = ((((gctUINT32) (Identity->chipFeatures)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))) << (0 ? 16:16))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))) << (0 ? 16:16))); -+ } -+ -+ /* Disable HZ when EZ is present for older chips. */ -+ else if (!((((gctUINT32) (Identity->chipFeatures)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))))) - { - /* Disable HIERARCHICAL_Z. */ - Identity->chipMinorFeatures -@@ -470,6 +500,15 @@ _IdentifyHardware( - Identity->varyingsCount = 8; - } - -+ /* For some cores, it consumes two varying for position, so the max varying vectors should minus one. */ -+ if ((Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5222) || -+ (Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5208) || -+ ((Identity->chipModel == gcv2100 || Identity->chipModel == gcv2000) && Identity->chipRevision == 0x5108) || -+ (Identity->chipModel == gcv880 && (Identity->chipRevision == 0x5107 || Identity->chipRevision == 0x5106))) -+ { -+ Identity->varyingsCount -= 1; -+ } -+ - /* Success. */ - gcmkFOOTER(); - return gcvSTATUS_OK; -@@ -535,9 +574,9 @@ _DumpDebugRegisters( - IN gcsiDEBUG_REGISTERS_PTR Descriptor - ) - { -- gceSTATUS status; -+ gceSTATUS status = gcvSTATUS_OK; - gctUINT32 select; -- gctUINT32 data; -+ gctUINT32 data = 0; - gctUINT i; - - gcmkHEADER_ARG("Os=0x%X Descriptor=0x%X", Os, Descriptor); -@@ -643,6 +682,42 @@ OnError: - return status; - } - -+gceSTATUS -+_FlushCache( -+ gckHARDWARE Hardware, -+ gckCOMMAND Command -+ ) -+{ -+ gceSTATUS status; -+ gctSIZE_T bytes, requested; -+ gctPOINTER buffer; -+ -+ /* Get the size of the flush command. */ -+ gcmkONERROR(gckHARDWARE_Flush(Hardware, -+ gcvFLUSH_ALL, -+ gcvNULL, -+ &requested)); -+ -+ /* Reserve space in the command queue. */ -+ gcmkONERROR(gckCOMMAND_Reserve(Command, -+ requested, -+ &buffer, -+ &bytes)); -+ -+ /* Append a flush. */ -+ gcmkONERROR(gckHARDWARE_Flush( -+ Hardware, gcvFLUSH_ALL, buffer, &bytes -+ )); -+ -+ /* Execute the command queue. */ -+ gcmkONERROR(gckCOMMAND_Execute(Command, requested)); -+ -+ return gcvSTATUS_OK; -+ -+OnError: -+ return status; -+} -+ - /******************************************************************************\ - ****************************** gckHARDWARE API code ***************************** - \******************************************************************************/ -@@ -809,6 +884,9 @@ gckHARDWARE_Construct( - /* Enable power management by default. */ - hardware->powerManagement = gcvTRUE; - -+ /* Disable profiler by default */ -+ hardware->gpuProfiler = gcvFALSE; -+ - /* Return pointer to the gckHARDWARE object. */ - *Hardware = hardware; - -@@ -1113,6 +1191,31 @@ gckHARDWARE_InitializeHardware( - ((((gctUINT32) (0x01590880)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:23) - (0 ? 23:23) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:23) - (0 ? 23:23) + 1))))))) << (0 ? 23:23))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:23) - (0 ? 23:23) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:23) - (0 ? 23:23) + 1))))))) << (0 ? 23:23))))); - } - -+ if ((gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_HALTI2) == gcvFALSE) -+ || (gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_HALTI2) && (Hardware->identity.chipRevision < 0x5422)) -+ ) -+ { -+ gctUINT32 data; -+ -+ gcmkONERROR( -+ gckOS_ReadRegisterEx(Hardware->os, -+ Hardware->core, -+ Hardware->powerBaseAddress -+ + 0x00104, -+ &data)); -+ -+ -+ data = ((((gctUINT32) (data)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) << (0 ? 15:15))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) << (0 ? 15:15))); -+ -+ -+ gcmkONERROR( -+ gckOS_WriteRegisterEx(Hardware->os, -+ Hardware->core, -+ Hardware->powerBaseAddress -+ + 0x00104, -+ data)); -+ } -+ - /* Special workaround for this core - ** Make sure FE and TX are on different buses */ - if ((Hardware->identity.chipModel == gcv2000) -@@ -1152,7 +1255,9 @@ gckHARDWARE_InitializeHardware( - } - - if (Hardware->identity.chipModel >= gcv400 -- && Hardware->identity.chipModel != gcv420) -+ && Hardware->identity.chipModel != gcv420 -+ && (((((gctUINT32) (Hardware->identity.chipMinorFeatures3)) >> (0 ? 15:15) & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) != gcvTRUE) -+ ) - { - gctUINT32 data; - -@@ -2883,35 +2988,44 @@ gckHARDWARE_QueryShaderCaps( - OUT gctUINT * Varyings - ) - { -+ gctUINT32 vsConstMax; -+ gctUINT32 psConstMax; -+ - gcmkHEADER_ARG("Hardware=0x%x VertexUniforms=0x%x " - "FragmentUniforms=0x%x Varyings=0x%x", - Hardware, VertexUniforms, - FragmentUniforms, Varyings); - -+ if ((Hardware->identity.chipModel == gcv2000) -+ && (Hardware->identity.chipRevision == 0x5118)) -+ { -+ vsConstMax = 256; -+ psConstMax = 64; -+ } -+ else if (Hardware->identity.numConstants > 256) -+ { -+ vsConstMax = 256; -+ psConstMax = 256; -+ } -+ else if (Hardware->identity.numConstants == 256) -+ { -+ vsConstMax = 256; -+ psConstMax = 256; -+ } -+ else -+ { -+ vsConstMax = 168; -+ psConstMax = 64; -+ } -+ - if (VertexUniforms != gcvNULL) - { -- /* Return the vs shader const count. */ -- if (Hardware->identity.chipModel < gcv4000) -- { -- *VertexUniforms = 168; -- } -- else -- { -- *VertexUniforms = 256; -- } -+ *VertexUniforms = vsConstMax; - } - - if (FragmentUniforms != gcvNULL) - { -- /* Return the ps shader const count. */ -- if (Hardware->identity.chipModel < gcv4000) -- { -- *FragmentUniforms = 64; -- } -- else -- { -- *FragmentUniforms = 256; -- } -+ *FragmentUniforms = psConstMax; - } - - if (Varyings != gcvNULL) -@@ -3229,12 +3343,28 @@ gckHARDWARE_SetMMUv2( - gctBOOL commitEntered = gcvFALSE; - gctPOINTER pointer = gcvNULL; - gctBOOL acquired = gcvFALSE; -+ gctBOOL config2D; -+ gctSIZE_T configSize; - - gcmkHEADER_ARG("Hardware=0x%x Enable=%d", Hardware, Enable); - - /* Verify the arguments. */ - gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); - -+ config2D = gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_PIPE_3D) -+ && gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_PIPE_2D); -+ -+ configSize = 4 * 4; -+ -+ if (config2D) -+ { -+ configSize += -+ /* Pipe Select. */ -+ 4 * 4 -+ /* Configure MMU States. */ -+ + 4 * 4; -+ } -+ - /* Convert logical address into physical address. */ - gcmkONERROR( - gckOS_GetPhysicalAddress(Hardware->os, MtlbAddress, &config)); -@@ -3281,7 +3411,7 @@ gckHARDWARE_SetMMUv2( - commitEntered = gcvTRUE; - - gcmkONERROR(gckCOMMAND_Reserve( -- command, 16, &pointer, &bufferSize -+ command, configSize, &pointer, &bufferSize - )); - - buffer = pointer; -@@ -3300,10 +3430,43 @@ gckHARDWARE_SetMMUv2( - - buffer[3] = address; - -+ if (config2D) -+ { -+ /* LoadState(AQPipeSelect, 1), pipe. */ -+ buffer[4] -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0E00) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); -+ -+ buffer[5] = 0x1; -+ -+ buffer[6] -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0061) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); -+ -+ buffer[7] = config; -+ -+ buffer[8] -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0060) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); -+ -+ buffer[9] = address; -+ -+ /* LoadState(AQPipeSelect, 1), pipe. */ -+ buffer[10] -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0E00) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); -+ -+ buffer[11] = 0x0; -+ } -+ - gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, - "Setup MMU: config=%08x, Safe Address=%08x\n.", config, address); - -- gcmkONERROR(gckCOMMAND_Execute(command, 16)); -+ gcmkONERROR(gckCOMMAND_Execute(command, configSize)); - - if (FromPower == gcvFALSE) - { -@@ -3501,6 +3664,8 @@ gckHARDWARE_Flush( - gctUINT32 flush = 0; - gctUINT32_PTR logical = (gctUINT32_PTR) Logical; - gceSTATUS status; -+ gctBOOL fcFlushStall; -+ gctUINT32 reserveBytes = 8; - - gcmkHEADER_ARG("Hardware=0x%x Flush=0x%x Logical=0x%x *Bytes=%lu", - Hardware, Flush, Logical, gcmOPT_VALUE(Bytes)); -@@ -3511,6 +3676,16 @@ gckHARDWARE_Flush( - /* Get current pipe. */ - pipe = Hardware->kernel->command->pipeSelect; - -+ fcFlushStall -+ = ((((gctUINT32) (Hardware->identity.chipMinorFeatures1)) >> (0 ? 31:31) & ((gctUINT32) ((((1 ? 31:31) - (0 ? 31:31) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:31) - (0 ? 31:31) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 31:31) - (0 ? 31:31) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:31) - (0 ? 31:31) + 1))))))) -+ && (Flush == gcvFLUSH_ALL) -+ ; -+ -+ if (fcFlushStall) -+ { -+ reserveBytes += 8; -+ } -+ - /* Flush 3D color cache. */ - if ((Flush & gcvFLUSH_COLOR) && (pipe == 0x0)) - { -@@ -3527,6 +3702,7 @@ gckHARDWARE_Flush( - if ((Flush & gcvFLUSH_TEXTURE) && (pipe == 0x0)) - { - flush |= ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))); -+ flush |= ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))); - } - - /* Flush 2D cache. */ -@@ -3550,7 +3726,7 @@ gckHARDWARE_Flush( - /* Copy to command queue. */ - if (Logical != gcvNULL) - { -- if (*Bytes < 8) -+ if (*Bytes < reserveBytes) - { - /* Command queue too small. */ - gcmkONERROR(gcvSTATUS_BUFFER_TOO_SMALL); -@@ -3565,12 +3741,26 @@ gckHARDWARE_Flush( - - gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, - "0x%x: FLUSH 0x%x", logical, flush); -+ -+ if (fcFlushStall) -+ { -+ logical[2] = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0594) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); -+ -+ logical[3] = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))); -+ -+ -+ gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, -+ "0x%x: FLUSH 0x%x", logical + 3, logical[3]); -+ } -+ - } - - if (Bytes != gcvNULL) - { -- /* 8 bytes required. */ -- *Bytes = 8; -+ /* bytes required. */ -+ *Bytes = reserveBytes; - } - } - -@@ -4285,6 +4475,48 @@ gckHARDWARE_SetPowerManagementState( - } - } - -+ /* Flush Cache before Power Off. */ -+ if (flag & gcvPOWER_FLAG_POWER_OFF) -+ { -+ if (Hardware->clockState == gcvFALSE) -+ { -+ /* Turn off the GPU power. */ -+ gcmkONERROR( -+ gckOS_SetGPUPower(os, -+ Hardware->core, -+ gcvTRUE, -+ gcvTRUE)); -+ -+ Hardware->clockState = gcvTRUE; -+ -+ if (gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_DYNAMIC_FREQUENCY_SCALING) != gcvTRUE) -+ { -+ /* Write the clock control register. */ -+ gcmkONERROR(gckOS_WriteRegisterEx(os, -+ Hardware->core, -+ 0x00000, -+ clocks[0])); -+ -+ /* Done loading the frequency scaler. */ -+ gcmkONERROR(gckOS_WriteRegisterEx(os, -+ Hardware->core, -+ 0x00000, -+ ((((gctUINT32) (clocks[0])) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))) << (0 ? 9:9))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))) << (0 ? 9:9))))); -+ } -+ } -+ -+ gcmkONERROR(gckCOMMAND_Start(command)); -+ -+ gcmkONERROR(_FlushCache(Hardware, command)); -+ -+ gckOS_Delay(gcvNULL, 1); -+ -+ /* Stop the command parser. */ -+ gcmkONERROR(gckCOMMAND_Stop(command, gcvFALSE)); -+ -+ flag |= gcvPOWER_FLAG_CLOCK_OFF; -+ } -+ - /* Get time until stopped. */ - gcmkPROFILE_QUERY(time, stopTime); - -@@ -4582,6 +4814,40 @@ gckHARDWARE_SetPowerManagement( - return gcvSTATUS_OK; - } - -+/******************************************************************************* -+** -+** gckHARDWARE_SetGpuProfiler -+** -+** Configure GPU profiler function. -+** Only used in driver initialization stage. -+** -+** INPUT: -+** -+** gckHARDWARE Harwdare -+** Pointer to an gckHARDWARE object. -+** -+** gctBOOL GpuProfiler -+** GOU Profiler State. -+** -+*/ -+gceSTATUS -+gckHARDWARE_SetGpuProfiler( -+ IN gckHARDWARE Hardware, -+ IN gctBOOL GpuProfiler -+ ) -+{ -+ gcmkHEADER_ARG("Hardware=0x%x", Hardware); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); -+ -+ Hardware->gpuProfiler = GpuProfiler; -+ -+ /* Success. */ -+ gcmkFOOTER_NO(); -+ return gcvSTATUS_OK; -+} -+ - #if gcdENABLE_FSCALE_VAL_ADJUST - gceSTATUS - gckHARDWARE_SetFscaleValue( -@@ -5141,6 +5407,402 @@ OnError: - } - #endif - -+#if VIVANTE_PROFILER_CONTEXT -+#define gcmkUPDATE_PROFILE_DATA(data) \ -+ profilerHistroy->data += profiler->data -+ -+gceSTATUS -+gckHARDWARE_QueryContextProfile( -+ IN gckHARDWARE Hardware, -+ IN gctBOOL Reset, -+ IN gckCONTEXT Context, -+ OUT gcsPROFILER_COUNTERS * Counters -+ ) -+{ -+ gceSTATUS status; -+ gckCOMMAND command = Hardware->kernel->command; -+ gcsPROFILER_COUNTERS * profiler = Counters; -+ -+ gcmkHEADER_ARG("Hardware=0x%x Counters=0x%x", Hardware, Counters); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); -+ -+ /* Acquire the context sequnence mutex. */ -+ gcmkONERROR(gckOS_AcquireMutex( -+ command->os, command->mutexContextSeq, gcvINFINITE -+ )); -+ -+ /* Read the counters. */ -+ gcmkVERIFY_OK(gckOS_MemCopy( -+ profiler, &Context->histroyProfiler, gcmSIZEOF(gcsPROFILER_COUNTERS) -+ )); -+ -+ if (Reset) -+ { -+ /* Reset counters. */ -+ gcmkVERIFY_OK(gckOS_ZeroMemory( -+ &Context->histroyProfiler, gcmSIZEOF(gcsPROFILER_COUNTERS) -+ )); -+ } -+ -+ gcmkVERIFY_OK(gckOS_ReleaseMutex( -+ command->os, command->mutexContextSeq -+ )); -+ -+ /* Success. */ -+ gcmkFOOTER_NO(); -+ return gcvSTATUS_OK; -+ -+OnError: -+ /* Return the status. */ -+ gcmkFOOTER(); -+ return status; -+} -+ -+ -+gceSTATUS -+gckHARDWARE_UpdateContextProfile( -+ IN gckHARDWARE Hardware, -+ IN gckCONTEXT Context -+ ) -+{ -+ gceSTATUS status; -+ gcsPROFILER_COUNTERS * profiler = &Context->latestProfiler; -+ gcsPROFILER_COUNTERS * profilerHistroy = &Context->histroyProfiler; -+ gctUINT i, clock; -+ gctUINT32 colorKilled, colorDrawn, depthKilled, depthDrawn; -+ gctUINT32 totalRead, totalWrite; -+ gceCHIPMODEL chipModel; -+ gctUINT32 chipRevision; -+ gctUINT32 temp; -+ gctBOOL needResetShader = gcvFALSE; -+ -+ gcmkHEADER_ARG("Hardware=0x%x Context=0x%x", Hardware, Context); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); -+ gcmkVERIFY_OBJECT(Context, gcvOBJ_CONTEXT); -+ -+ chipModel = Hardware->identity.chipModel; -+ chipRevision = Hardware->identity.chipRevision; -+ if (chipModel == gcv2000 || (chipModel == gcv2100 && chipRevision == 0x5118)) -+ { -+ needResetShader = gcvTRUE; -+ } -+ -+ /* Read the counters. */ -+ gcmkONERROR( -+ gckOS_ReadRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x00438, -+ &profiler->gpuCyclesCounter)); -+ gcmkUPDATE_PROFILE_DATA(gpuCyclesCounter); -+ -+ gcmkONERROR( -+ gckOS_ReadRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x00078, -+ &profiler->gpuTotalCyclesCounter)); -+ gcmkUPDATE_PROFILE_DATA(gpuTotalCyclesCounter); -+ -+ gcmkONERROR( -+ gckOS_ReadRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x0007C, -+ &profiler->gpuIdleCyclesCounter)); -+ gcmkUPDATE_PROFILE_DATA(gpuIdleCyclesCounter); -+ -+ /* Read clock control register. */ -+ gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x00000, -+ &clock)); -+ -+ profiler->gpuTotalRead64BytesPerFrame = 0; -+ profiler->gpuTotalWrite64BytesPerFrame = 0; -+ profiler->pe_pixel_count_killed_by_color_pipe = 0; -+ profiler->pe_pixel_count_killed_by_depth_pipe = 0; -+ profiler->pe_pixel_count_drawn_by_color_pipe = 0; -+ profiler->pe_pixel_count_drawn_by_depth_pipe = 0; -+ -+ /* Walk through all avaiable pixel pipes. */ -+ for (i = 0; i < Hardware->identity.pixelPipes; ++i) -+ { -+ /* Select proper pipe. */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x00000, -+ ((((gctUINT32) (clock)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:20) - (0 ? 23:20) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:20) - (0 ? 23:20) + 1))))))) << (0 ? 23:20))) | (((gctUINT32) ((gctUINT32) (i) & ((gctUINT32) ((((1 ? 23:20) - (0 ? 23:20) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:20) - (0 ? 23:20) + 1))))))) << (0 ? 23:20))))); -+ -+ /* BW */ -+ gcmkONERROR( -+ gckOS_ReadRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x00040, -+ &totalRead)); -+ gcmkONERROR( -+ gckOS_ReadRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x00044, -+ &totalWrite)); -+ -+ profiler->gpuTotalRead64BytesPerFrame += totalRead; -+ profiler->gpuTotalWrite64BytesPerFrame += totalWrite; -+ gcmkUPDATE_PROFILE_DATA(gpuTotalRead64BytesPerFrame); -+ gcmkUPDATE_PROFILE_DATA(gpuTotalWrite64BytesPerFrame); -+ -+ /* PE */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &colorKilled)); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &depthKilled)); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &colorDrawn)); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &depthDrawn)); -+ -+ profiler->pe_pixel_count_killed_by_color_pipe += colorKilled; -+ profiler->pe_pixel_count_killed_by_depth_pipe += depthKilled; -+ profiler->pe_pixel_count_drawn_by_color_pipe += colorDrawn; -+ profiler->pe_pixel_count_drawn_by_depth_pipe += depthDrawn; -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_killed_by_color_pipe); -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_killed_by_depth_pipe); -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_drawn_by_color_pipe); -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_drawn_by_depth_pipe); -+ } -+ -+ /* Reset clock control register. */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, -+ Hardware->core, -+ 0x00000, -+ clock)); -+ -+ -+ -+ -+ /* Reset counters. */ -+ gcmkONERROR( -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x0003C, 1)); -+ gcmkONERROR( -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x0003C, 0)); -+ gcmkONERROR( -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00438, 0)); -+ gcmkONERROR( -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00078, 0)); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) -+)); -+ -+ /* SH */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->ps_inst_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->ps_inst_counter; -+ profiler->ps_inst_counter -= Context->prevPSInstCount; -+ Context->prevPSInstCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(ps_inst_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->rendered_pixel_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->rendered_pixel_counter; -+ profiler->rendered_pixel_counter -= Context->prevPSPixelCount; -+ Context->prevPSPixelCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(rendered_pixel_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vs_inst_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->vs_inst_counter; -+ profiler->vs_inst_counter -= Context->prevVSInstCount; -+ Context->prevVSInstCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(vs_inst_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (10) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->rendered_vertice_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->rendered_vertice_counter; -+ profiler->rendered_vertice_counter -= Context->prevVSVertexCount; -+ Context->prevVSVertexCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(rendered_vertice_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (11) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vtx_branch_inst_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->vtx_branch_inst_counter; -+ profiler->vtx_branch_inst_counter -= Context->prevVSBranchInstCount; -+ Context->prevVSBranchInstCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(vtx_branch_inst_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (12) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vtx_texld_inst_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->vtx_texld_inst_counter; -+ profiler->vtx_texld_inst_counter -= Context->prevVSTexInstCount; -+ Context->prevVSTexInstCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(vtx_texld_inst_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (13) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->pxl_branch_inst_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->pxl_branch_inst_counter; -+ profiler->pxl_branch_inst_counter -= Context->prevPSBranchInstCount; -+ Context->prevPSBranchInstCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(pxl_branch_inst_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (14) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->pxl_texld_inst_counter)); -+ if (needResetShader) -+ { -+ temp = profiler->pxl_texld_inst_counter; -+ profiler->pxl_texld_inst_counter -= Context->prevPSTexInstCount; -+ Context->prevPSTexInstCount = temp; -+ } -+ gcmkUPDATE_PROFILE_DATA(pxl_texld_inst_counter); -+ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) -+)); -+ -+ /* PA */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_input_vtx_counter)); -+ gcmkUPDATE_PROFILE_DATA(pa_input_vtx_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (4) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_input_prim_counter)); -+ gcmkUPDATE_PROFILE_DATA(pa_input_prim_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (5) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_output_prim_counter)); -+ gcmkUPDATE_PROFILE_DATA(pa_output_prim_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (6) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_depth_clipped_counter)); -+ gcmkUPDATE_PROFILE_DATA(pa_depth_clipped_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_trivial_rejected_counter)); -+ gcmkUPDATE_PROFILE_DATA(pa_trivial_rejected_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_culled_counter)); -+ gcmkUPDATE_PROFILE_DATA(pa_culled_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) -+)); -+ -+ /* SE */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00464, &profiler->se_culled_triangle_count)); -+ gcmkUPDATE_PROFILE_DATA(se_culled_triangle_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00464, &profiler->se_culled_lines_count)); -+ gcmkUPDATE_PROFILE_DATA(se_culled_lines_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) -+)); -+ -+ /* RA */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_valid_pixel_count)); -+ gcmkUPDATE_PROFILE_DATA(ra_valid_pixel_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_total_quad_count)); -+ gcmkUPDATE_PROFILE_DATA(ra_total_quad_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_valid_quad_count_after_early_z)); -+ gcmkUPDATE_PROFILE_DATA(ra_valid_quad_count_after_early_z); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_total_primitive_count)); -+ gcmkUPDATE_PROFILE_DATA(ra_total_primitive_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_pipe_cache_miss_counter)); -+ gcmkUPDATE_PROFILE_DATA(ra_pipe_cache_miss_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (10) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_prefetch_cache_miss_counter)); -+ gcmkUPDATE_PROFILE_DATA(ra_prefetch_cache_miss_counter); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) -+)); -+ -+ /* TX */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_bilinear_requests)); -+ gcmkUPDATE_PROFILE_DATA(tx_total_bilinear_requests); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_trilinear_requests)); -+ gcmkUPDATE_PROFILE_DATA(tx_total_trilinear_requests); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_discarded_texture_requests)); -+ gcmkUPDATE_PROFILE_DATA(tx_total_discarded_texture_requests); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_texture_requests)); -+ gcmkUPDATE_PROFILE_DATA(tx_total_texture_requests); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (5) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_mem_read_count)); -+ gcmkUPDATE_PROFILE_DATA(tx_mem_read_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (6) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_mem_read_in_8B_count)); -+ gcmkUPDATE_PROFILE_DATA(tx_mem_read_in_8B_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_miss_count)); -+ gcmkUPDATE_PROFILE_DATA(tx_cache_miss_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_hit_texel_count)); -+ gcmkUPDATE_PROFILE_DATA(tx_cache_hit_texel_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_miss_texel_count)); -+ gcmkUPDATE_PROFILE_DATA(tx_cache_miss_texel_count); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) -+)); -+ -+ /* MC */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_read_req_8B_from_pipeline)); -+ gcmkUPDATE_PROFILE_DATA(mc_total_read_req_8B_from_pipeline); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_read_req_8B_from_IP)); -+ gcmkUPDATE_PROFILE_DATA(mc_total_read_req_8B_from_IP); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_write_req_8B_from_pipeline)); -+ gcmkUPDATE_PROFILE_DATA(mc_total_write_req_8B_from_pipeline); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) -+)); -+ -+ /* HI */ -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_read_request_stalled)); -+ gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_read_request_stalled); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_write_request_stalled)); -+ gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_write_request_stalled); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_write_data_stalled)); -+ gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_write_data_stalled); -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) -+)); -+ -+ /* Success. */ -+ gcmkFOOTER_NO(); -+ return gcvSTATUS_OK; -+ -+OnError: -+ /* Return the status. */ -+ gcmkFOOTER(); -+ return status; -+} -+#endif -+ - static gceSTATUS - _ResetGPU( - IN gckHARDWARE Hardware, -@@ -5602,6 +6264,22 @@ gckHARDWARE_IsFeatureAvailable( - && ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 2:2) & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))); - break; - -+ case gcvFEATURE_PIPE_2D: -+ available = ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 9:9) & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))); -+ break; -+ -+ case gcvFEATURE_PIPE_3D: -+#ifndef VIVANTE_NO_3D -+ available = ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 2:2) & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))); -+#else -+ available = gcvFALSE; -+#endif -+ break; -+ -+ case gcvFEATURE_HALTI2: -+ available = ((((gctUINT32) (Hardware->identity.chipMinorFeatures4)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))); -+ break; -+ - default: - gcmkFATAL("Invalid feature has been requested."); - available = gcvFALSE; -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h -index 37226b7..287ea60 100644 ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h -@@ -92,6 +92,7 @@ struct _gckHARDWARE - #endif - - gctBOOL powerManagement; -+ gctBOOL gpuProfiler; - }; - - gceSTATUS -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c -index b7b0d28..12a5340 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c -@@ -128,19 +128,6 @@ _ResetFinishFunction( - ** Pointer to a variable that will hold the pointer to the gckKERNEL - ** object. - */ --#ifdef ANDROID --#if gcdNEW_PROFILER_FILE --#define DEFAULT_PROFILE_FILE_NAME "/sdcard/vprofiler.vpd" --#else --#define DEFAULT_PROFILE_FILE_NAME "/sdcard/vprofiler.xml" --#endif --#else --#if gcdNEW_PROFILER_FILE --#define DEFAULT_PROFILE_FILE_NAME "vprofiler.vpd" --#else --#define DEFAULT_PROFILE_FILE_NAME "vprofiler.xml" --#endif --#endif - - gceSTATUS - gckKERNEL_Construct( -@@ -302,17 +289,12 @@ gckKERNEL_Construct( - - #if VIVANTE_PROFILER - /* Initialize profile setting */ --#if defined ANDROID - kernel->profileEnable = gcvFALSE; --#else -- kernel->profileEnable = gcvTRUE; --#endif - kernel->profileCleanRegister = gcvTRUE; -+#endif - -- gcmkVERIFY_OK( -- gckOS_MemCopy(kernel->profileFileName, -- DEFAULT_PROFILE_FILE_NAME, -- gcmSIZEOF(DEFAULT_PROFILE_FILE_NAME) + 1)); -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ gcmkONERROR(gckOS_CreateSyncTimeline(Os, &kernel->timeline)); - #endif - - /* Return pointer to the gckKERNEL object. */ -@@ -395,6 +377,13 @@ OnError: - } - #endif - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ if (kernel->timeline) -+ { -+ gcmkVERIFY_OK(gckOS_DestroySyncTimeline(Os, kernel->timeline)); -+ } -+#endif -+ - gcmkVERIFY_OK(gcmkOS_SAFE_FREE(Os, kernel)); - } - -@@ -525,6 +514,10 @@ gckKERNEL_Destroy( - } - #endif - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ gcmkVERIFY_OK(gckOS_DestroySyncTimeline(Kernel->os, Kernel->timeline)); -+#endif -+ - /* Mark the gckKERNEL object as unknown. */ - Kernel->object.type = gcvOBJ_UNKNOWN; - -@@ -1310,7 +1303,8 @@ gckKERNEL_Dispatch( - /* Commit a command and context buffer. */ - gcmkONERROR( - gckCOMMAND_Commit(Kernel->command, -- gcmNAME_TO_PTR(Interface->u.Commit.context), -+ Interface->u.Commit.context ? -+ gcmNAME_TO_PTR(Interface->u.Commit.context) : gcvNULL, - gcmUINT64_TO_PTR(Interface->u.Commit.commandBuffer), - gcmUINT64_TO_PTR(Interface->u.Commit.delta), - gcmUINT64_TO_PTR(Interface->u.Commit.queue), -@@ -1600,7 +1594,15 @@ gckKERNEL_Dispatch( - break; - - case gcvHAL_READ_ALL_PROFILE_REGISTERS: --#if VIVANTE_PROFILER -+#if VIVANTE_PROFILER && VIVANTE_PROFILER_CONTEXT -+ /* Read profile data according to the context. */ -+ gcmkONERROR( -+ gckHARDWARE_QueryContextProfile( -+ Kernel->hardware, -+ Kernel->profileCleanRegister, -+ gcmNAME_TO_PTR(Interface->u.RegisterProfileData.context), -+ &Interface->u.RegisterProfileData.counters)); -+#elif VIVANTE_PROFILER - /* Read all 3D profile registers. */ - gcmkONERROR( - gckHARDWARE_QueryProfileRegisters( -@@ -1628,11 +1630,6 @@ gckKERNEL_Dispatch( - #if VIVANTE_PROFILER - /* Get profile setting */ - Interface->u.GetProfileSetting.enable = Kernel->profileEnable; -- -- gcmkVERIFY_OK( -- gckOS_MemCopy(Interface->u.GetProfileSetting.fileName, -- Kernel->profileFileName, -- gcdMAX_PROFILE_FILE_NAME)); - #endif - - status = gcvSTATUS_OK; -@@ -1640,12 +1637,13 @@ gckKERNEL_Dispatch( - case gcvHAL_SET_PROFILE_SETTING: - #if VIVANTE_PROFILER - /* Set profile setting */ -- Kernel->profileEnable = Interface->u.SetProfileSetting.enable; -- -- gcmkVERIFY_OK( -- gckOS_MemCopy(Kernel->profileFileName, -- Interface->u.SetProfileSetting.fileName, -- gcdMAX_PROFILE_FILE_NAME)); -+ if(Kernel->hardware->gpuProfiler) -+ Kernel->profileEnable = Interface->u.SetProfileSetting.enable; -+ else -+ { -+ status = gcvSTATUS_NOT_SUPPORTED; -+ break; -+ } - #endif - - status = gcvSTATUS_OK; -@@ -2093,6 +2091,61 @@ gckKERNEL_Dispatch( - #endif - break; - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ case gcvHAL_SYNC_POINT: -+ { -+ gctSYNC_POINT syncPoint; -+ -+ switch (Interface->u.SyncPoint.command) -+ { -+ case gcvSYNC_POINT_CREATE: -+ gcmkONERROR(gckOS_CreateSyncPoint(Kernel->os, &syncPoint)); -+ -+ Interface->u.SyncPoint.syncPoint = gcmPTR_TO_UINT64(syncPoint); -+ -+ gcmkVERIFY_OK( -+ gckKERNEL_AddProcessDB(Kernel, -+ processID, gcvDB_SYNC_POINT, -+ syncPoint, -+ gcvNULL, -+ 0)); -+ break; -+ -+ case gcvSYNC_POINT_DESTROY: -+ syncPoint = gcmUINT64_TO_PTR(Interface->u.SyncPoint.syncPoint); -+ -+ gcmkONERROR(gckOS_DestroySyncPoint(Kernel->os, syncPoint)); -+ -+ gcmkVERIFY_OK( -+ gckKERNEL_RemoveProcessDB(Kernel, -+ processID, gcvDB_SYNC_POINT, -+ syncPoint)); -+ break; -+ -+ default: -+ gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT); -+ break; -+ } -+ } -+ break; -+ -+ case gcvHAL_CREATE_NATIVE_FENCE: -+ { -+ gctINT fenceFD; -+ gctSYNC_POINT syncPoint = -+ gcmUINT64_TO_PTR(Interface->u.CreateNativeFence.syncPoint); -+ -+ gcmkONERROR( -+ gckOS_CreateNativeFence(Kernel->os, -+ Kernel->timeline, -+ syncPoint, -+ &fenceFD)); -+ -+ Interface->u.CreateNativeFence.fenceFD = fenceFD; -+ } -+ break; -+#endif -+ - default: - /* Invalid command. */ - gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT); -@@ -2856,6 +2909,8 @@ gckKERNEL_Recovery( - return gcvSTATUS_OK; - } - -+ gcmkPRINT("[galcore]: GPU[%d] hang, automatic recovery.", Kernel->core); -+ - /* Start a timer to clear reset flag, before timer is expired, - ** other recovery request is ignored. */ - gcmkVERIFY_OK( -@@ -3382,7 +3437,7 @@ gckLINKQUEUE_Dequeue( - IN gckLINKQUEUE LinkQueue - ) - { -- gcmASSERT(LinkQueue->count == gcdLINK_QUEUE_SIZE); -+ gcmkASSERT(LinkQueue->count == gcdLINK_QUEUE_SIZE); - - LinkQueue->count--; - LinkQueue->front = (LinkQueue->front + 1) % gcdLINK_QUEUE_SIZE; -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h -index 5896e93..1c40df2 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h -@@ -140,8 +140,9 @@ typedef enum _gceDATABASE_TYPE - gcvDB_CONTEXT, /* Context */ - gcvDB_IDLE, /* GPU idle. */ - gcvDB_MAP_MEMORY, /* Map memory */ -- gcvDB_SHARED_INFO, /* Private data */ -- gcvDB_MAP_USER_MEMORY /* Map user memory */ -+ gcvDB_SHARED_INFO, /* Private data */ -+ gcvDB_MAP_USER_MEMORY, /* Map user memory */ -+ gcvDB_SYNC_POINT, /* Sync point. */ - } - gceDATABASE_TYPE; - -@@ -406,9 +407,6 @@ struct _gckKERNEL - /* Enable profiling */ - gctBOOL profileEnable; - -- /* The profile file name */ -- gctCHAR profileFileName[gcdMAX_PROFILE_FILE_NAME]; -- - /* Clear profile register or not*/ - gctBOOL profileCleanRegister; - -@@ -445,6 +443,10 @@ struct _gckKERNEL - #if gcdDVFS - gckDVFS dvfs; - #endif -+ -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ gctHANDLE timeline; -+#endif - }; - - struct _FrequencyHistory -@@ -496,6 +498,11 @@ struct _gckCOMMAND - /* Context switching mutex. */ - gctPOINTER mutexContext; - -+#if VIVANTE_PROFILER_CONTEXT -+ /* Context sequence mutex. */ -+ gctPOINTER mutexContextSeq; -+#endif -+ - /* Command queue power semaphore. */ - gctPOINTER powerSemaphore; - -@@ -649,6 +656,8 @@ struct _gckEVENT - gctPOINTER eventListMutex; - - gctPOINTER submitTimer; -+ -+ volatile gctBOOL inNotify; - }; - - /* Free all events belonging to a process. */ -@@ -668,6 +677,11 @@ gckEVENT_Stop( - IN OUT gctSIZE_T * waitSize - ); - -+gceSTATUS -+gckEVENT_WaitEmpty( -+ IN gckEVENT Event -+ ); -+ - /* gcuVIDMEM_NODE structure. */ - typedef union _gcuVIDMEM_NODE - { -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c -index 9ee9ea1..73dab81 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c -@@ -494,6 +494,11 @@ gckCOMMAND_Construct( - /* Create the context switching mutex. */ - gcmkONERROR(gckOS_CreateMutex(os, &command->mutexContext)); - -+#if VIVANTE_PROFILER_CONTEXT -+ /* Create the context switching mutex. */ -+ gcmkONERROR(gckOS_CreateMutex(os, &command->mutexContextSeq)); -+#endif -+ - /* Create the power management semaphore. */ - gcmkONERROR(gckOS_CreateSemaphore(os, &command->powerSemaphore)); - -@@ -572,6 +577,13 @@ OnError: - gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexContext)); - } - -+#if VIVANTE_PROFILER_CONTEXT -+ if (command->mutexContextSeq != gcvNULL) -+ { -+ gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexContextSeq)); -+ } -+#endif -+ - if (command->mutexQueue != gcvNULL) - { - gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexQueue)); -@@ -662,6 +674,11 @@ gckCOMMAND_Destroy( - /* Delete the context switching mutex. */ - gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexContext)); - -+#if VIVANTE_PROFILER_CONTEXT -+ if (Command->mutexContextSeq != gcvNULL) -+ gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexContextSeq)); -+#endif -+ - /* Delete the command queue mutex. */ - gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexQueue)); - -@@ -1127,6 +1144,10 @@ gckCOMMAND_Commit( - # endif - #endif - -+#if VIVANTE_PROFILER_CONTEXT -+ gctBOOL sequenceAcquired = gcvFALSE; -+#endif -+ - gctPOINTER pointer = gcvNULL; - - gcmkHEADER_ARG( -@@ -1145,6 +1166,17 @@ gckCOMMAND_Commit( - - gcmkONERROR(_FlushMMU(Command)); - -+#if VIVANTE_PROFILER_CONTEXT -+ if((Command->kernel->hardware->gpuProfiler) && (Command->kernel->profileEnable)) -+ { -+ /* Acquire the context sequnence mutex. */ -+ gcmkONERROR(gckOS_AcquireMutex( -+ Command->os, Command->mutexContextSeq, gcvINFINITE -+ )); -+ sequenceAcquired = gcvTRUE; -+ } -+#endif -+ - /* Acquire the command queue. */ - gcmkONERROR(gckCOMMAND_EnterCommit(Command, gcvFALSE)); - commitEntered = gcvTRUE; -@@ -2002,6 +2034,23 @@ gckCOMMAND_Commit( - gcmkONERROR(gckCOMMAND_ExitCommit(Command, gcvFALSE)); - commitEntered = gcvFALSE; - -+#if VIVANTE_PROFILER_CONTEXT -+ if(sequenceAcquired) -+ { -+ gcmkONERROR(gckCOMMAND_Stall(Command, gcvTRUE)); -+ if (Command->currContext) -+ { -+ gcmkONERROR(gckHARDWARE_UpdateContextProfile( -+ hardware, -+ Command->currContext)); -+ } -+ -+ /* Release the context switching mutex. */ -+ gcmkONERROR(gckOS_ReleaseMutex(Command->os, Command->mutexContextSeq)); -+ sequenceAcquired = gcvFALSE; -+ } -+#endif -+ - /* Loop while there are records in the queue. */ - while (EventQueue != gcvNULL) - { -@@ -2114,6 +2163,14 @@ OnError: - gcmkVERIFY_OK(gckCOMMAND_ExitCommit(Command, gcvFALSE)); - } - -+#if VIVANTE_PROFILER_CONTEXT -+ if (sequenceAcquired) -+ { -+ /* Release the context sequence mutex. */ -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Command->os, Command->mutexContextSeq)); -+ } -+#endif -+ - /* Unmap the command buffer pointer. */ - if (commandBufferMapped) - { -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c -index 76c1c10..1a7c340 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c -@@ -2819,6 +2819,7 @@ gckVGCOMMAND_Construct( - ** Enable TS overflow interrupt. - */ - -+ command->info.tsOverflowInt = 0; - gcmkERR_BREAK(gckVGINTERRUPT_Enable( - Kernel->interrupt, - &command->info.tsOverflowInt, -@@ -3406,38 +3407,26 @@ gckVGCOMMAND_Commit( - gctBOOL previousExecuted; - gctUINT controlIndex; - -+ gcmkERR_BREAK(gckVGHARDWARE_SetPowerManagementState( -+ Command->hardware, gcvPOWER_ON_AUTO -+ )); -+ -+ /* Acquire the power semaphore. */ -+ gcmkERR_BREAK(gckOS_AcquireSemaphore( -+ Command->os, Command->powerSemaphore -+ )); -+ - /* Acquire the mutex. */ -- gcmkERR_BREAK(gckOS_AcquireMutex( -+ status = gckOS_AcquireMutex( - Command->os, - Command->commitMutex, - gcvINFINITE -- )); -- -- status = gckVGHARDWARE_SetPowerManagementState( -- Command->hardware, gcvPOWER_ON_AUTO); -- -- if (gcmIS_ERROR(status)) -- { -- /* Acquire the mutex. */ -- gcmkVERIFY_OK(gckOS_ReleaseMutex( -- Command->os, -- Command->commitMutex -- )); -- -- break; -- } -- /* Acquire the power semaphore. */ -- status = gckOS_AcquireSemaphore( -- Command->os, Command->powerSemaphore); -+ ); - - if (gcmIS_ERROR(status)) - { -- /* Acquire the mutex. */ -- gcmkVERIFY_OK(gckOS_ReleaseMutex( -- Command->os, -- Command->commitMutex -- )); -- -+ gcmkVERIFY_OK(gckOS_ReleaseSemaphore( -+ Command->os, Command->powerSemaphore)); - break; - } - -@@ -3669,14 +3658,14 @@ gckVGCOMMAND_Commit( - } - while (gcvFALSE); - -- gcmkVERIFY_OK(gckOS_ReleaseSemaphore( -- Command->os, Command->powerSemaphore)); -- - /* Release the mutex. */ - gcmkCHECK_STATUS(gckOS_ReleaseMutex( - Command->os, - Command->commitMutex - )); -+ -+ gcmkVERIFY_OK(gckOS_ReleaseSemaphore( -+ Command->os, Command->powerSemaphore)); - } - while (gcvFALSE); - -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c -index 673d4f7..134351a 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c -@@ -1307,6 +1307,18 @@ gckKERNEL_DestroyProcessDB( - status = gckOS_FreeMemory(Kernel->os, record->physical); - break; - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ case gcvDB_SYNC_POINT: -+ /* Free the user signal. */ -+ status = gckOS_DestroySyncPoint(Kernel->os, -+ (gctSYNC_POINT) record->data); -+ -+ gcmkTRACE_ZONE(gcvLEVEL_WARNING, gcvZONE_DATABASE, -+ "DB: SYNC POINT %d (status=%d)", -+ (gctINT)(gctUINTPTR_T)record->data, status); -+ break; -+#endif -+ - default: - gcmkTRACE_ZONE(gcvLEVEL_ERROR, gcvZONE_DATABASE, - "DB: Correcupted record=0x%08x type=%d", -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c -index 217f7f1..2d81a56 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c -@@ -931,6 +931,7 @@ gckEVENT_AddList( - || (Interface->command == gcvHAL_TIMESTAMP) - || (Interface->command == gcvHAL_COMMIT_DONE) - || (Interface->command == gcvHAL_FREE_VIRTUAL_COMMAND_BUFFER) -+ || (Interface->command == gcvHAL_SYNC_POINT) - ); - - /* Validate the source. */ -@@ -2131,6 +2132,9 @@ gckEVENT_Notify( - gcvINFINITE)); - acquired = gcvTRUE; - -+ /* We are in the notify loop. */ -+ Event->inNotify = gcvTRUE; -+ - /* Grab the event head. */ - record = queue->head; - -@@ -2463,6 +2467,17 @@ gckEVENT_Notify( - break; - #endif - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ case gcvHAL_SYNC_POINT: -+ { -+ gctSYNC_POINT syncPoint; -+ -+ syncPoint = gcmUINT64_TO_PTR(record->info.u.SyncPoint.syncPoint); -+ status = gckOS_SignalSyncPoint(Event->os, syncPoint); -+ } -+ break; -+#endif -+ - case gcvHAL_COMMIT_DONE: - break; - -@@ -2505,6 +2520,9 @@ gckEVENT_Notify( - gcmkONERROR(_TryToIdleGPU(Event)); - } - -+ /* We are out the notify loop. */ -+ Event->inNotify = gcvFALSE; -+ - /* Success. */ - gcmkFOOTER_NO(); - return gcvSTATUS_OK; -@@ -2524,6 +2542,9 @@ OnError: - } - #endif - -+ /* We are out the notify loop. */ -+ Event->inNotify = gcvFALSE; -+ - /* Return the status. */ - gcmkFOOTER(); - return status; -@@ -2871,3 +2892,11 @@ gckEVENT_Dump( - return gcvSTATUS_OK; - } - -+gceSTATUS gckEVENT_WaitEmpty(gckEVENT Event) -+{ -+ gctBOOL isEmpty; -+ -+ while (Event->inNotify || (gcmIS_SUCCESS(gckEVENT_IsEmpty(Event, &isEmpty)) && !isEmpty)) ; -+ -+ return gcvSTATUS_OK; -+} -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c -index 8ac187b..50bc63e 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c -@@ -794,6 +794,9 @@ gckVGINTERRUPT_Enque( - Interrupt->kernel->hardware, &triggered - )); - -+ /* Mask out TS overflow interrupt */ -+ triggered &= 0xfffffffe; -+ - /* No interrupts to process? */ - if (triggered == 0) - { -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c -index c7f67c7..e4ca497 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c -@@ -1436,7 +1436,7 @@ gckMMU_AllocatePages( - acquired = gcvTRUE; - - /* Allocate page table for current MMU. */ -- for (i = 0; i < mirrorPageTable->reference; i++) -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) - { - if (Mmu == mirrorPageTable->mmus[i]) - { -@@ -1446,7 +1446,7 @@ gckMMU_AllocatePages( - } - - /* Allocate page table for other MMUs. */ -- for (i = 0; i < mirrorPageTable->reference; i++) -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) - { - mmu = mirrorPageTable->mmus[i]; - -@@ -1500,7 +1500,7 @@ gckMMU_FreePages( - - offset = (gctUINT32)PageTable - (gctUINT32)Mmu->pageTableLogical; - -- for (i = 0; i < mirrorPageTable->reference; i++) -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) - { - mmu = mirrorPageTable->mmus[i]; - -@@ -1639,7 +1639,7 @@ gckMMU_SetPage( - _WritePageEntry(PageEntry, data); - - #if gcdMIRROR_PAGETABLE -- for (i = 0; i < mirrorPageTable->reference; i++) -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) - { - mmu = mirrorPageTable->mmus[i]; - -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c -index 8b8bbdc..3b5dd82 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c -@@ -1582,6 +1582,7 @@ _NeedVirtualMapping( - gctUINT32 end; - gcePOOL pool; - gctUINT32 offset; -+ gctUINT32 baseAddress; - - gcmkHEADER_ARG("Node=0x%X", Node); - -@@ -1601,10 +1602,16 @@ _NeedVirtualMapping( - else - #endif - { -- /* For cores which can't access all physical address. */ -- gcmkONERROR(gckHARDWARE_ConvertLogical(Kernel->hardware, -- Node->Virtual.logical, -- &phys)); -+ /* Convert logical address into a physical address. */ -+ gcmkONERROR( -+ gckOS_GetPhysicalAddress(Kernel->os, Node->Virtual.logical, &phys)); -+ -+ gcmkONERROR(gckOS_GetBaseAddress(Kernel->os, &baseAddress)); -+ -+ gcmkASSERT(phys >= baseAddress); -+ -+ /* Subtract baseAddress to get a GPU address used for programming. */ -+ phys -= baseAddress; - - /* If part of region is belong to gcvPOOL_VIRTUAL, - ** whole region has to be mapped. */ -@@ -1734,6 +1741,11 @@ gckVIDMEM_Lock( - gcmkONERROR(gckOS_AcquireMutex(os, Node->Virtual.mutex, gcvINFINITE)); - acquired = gcvTRUE; - -+#if gcdPAGED_MEMORY_CACHEABLE -+ /* Force video memory cacheable. */ -+ Cacheable = gcvTRUE; -+#endif -+ - gcmkONERROR( - gckOS_LockPages(os, - Node->Virtual.physical, -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h -index 4406d7e..7312cc2 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h -@@ -123,6 +123,12 @@ extern "C" { - - #define gcvINVALID_ADDRESS ~0U - -+#define gcmGET_PRE_ROTATION(rotate) \ -+ ((rotate) & (~(gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y))) -+ -+#define gcmGET_POST_ROTATION(rotate) \ -+ ((rotate) & (gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y)) -+ - /******************************************************************************\ - ******************************** gcsOBJECT Object ******************************* - \******************************************************************************/ -@@ -1124,6 +1130,60 @@ gckOS_UnmapUserMemory( - IN gctUINT32 Address - ); - -+/******************************************************************************\ -+************************** Android Native Fence Sync *************************** -+\******************************************************************************/ -+gceSTATUS -+gckOS_CreateSyncTimeline( -+ IN gckOS Os, -+ OUT gctHANDLE * Timeline -+ ); -+ -+gceSTATUS -+gckOS_DestroySyncTimeline( -+ IN gckOS Os, -+ IN gctHANDLE Timeline -+ ); -+ -+gceSTATUS -+gckOS_CreateSyncPoint( -+ IN gckOS Os, -+ OUT gctSYNC_POINT * SyncPoint -+ ); -+ -+gceSTATUS -+gckOS_ReferenceSyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint -+ ); -+ -+gceSTATUS -+gckOS_DestroySyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint -+ ); -+ -+gceSTATUS -+gckOS_SignalSyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint -+ ); -+ -+gceSTATUS -+gckOS_QuerySyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint, -+ OUT gctBOOL_PTR State -+ ); -+ -+gceSTATUS -+gckOS_CreateNativeFence( -+ IN gckOS Os, -+ IN gctHANDLE Timeline, -+ IN gctSYNC_POINT SyncPoint, -+ OUT gctINT * FenceFD -+ ); -+ - #if !USE_NEW_LINUX_SIGNAL - /* Create signal to be used in the user space. */ - gceSTATUS -@@ -1758,7 +1818,7 @@ gckKERNEL_Recovery( - void - gckKERNEL_SetTimeOut( - IN gckKERNEL Kernel, -- IN gctUINT32 timeOut -+ IN gctUINT32 timeOut - ); - - /* Get access to the user data. */ -@@ -2078,6 +2138,12 @@ gckHARDWARE_SetPowerManagement( - IN gctBOOL PowerManagement - ); - -+gceSTATUS -+gckHARDWARE_SetGpuProfiler( -+ IN gckHARDWARE Hardware, -+ IN gctBOOL GpuProfiler -+ ); -+ - #if gcdENABLE_FSCALE_VAL_ADJUST - gceSTATUS - gckHARDWARE_SetFscaleValue( -@@ -2554,6 +2620,22 @@ gckHARDWARE_QueryProfileRegisters( - ); - #endif - -+#if VIVANTE_PROFILER_CONTEXT -+gceSTATUS -+gckHARDWARE_QueryContextProfile( -+ IN gckHARDWARE Hardware, -+ IN gctBOOL Clear, -+ IN gckCONTEXT Context, -+ OUT gcsPROFILER_COUNTERS * Counters -+ ); -+ -+gceSTATUS -+gckHARDWARE_UpdateContextProfile( -+ IN gckHARDWARE Hardware, -+ IN gckCONTEXT Context -+ ); -+#endif -+ - gceSTATUS - gckOS_SignalQueryHardware( - IN gckOS Os, -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h -index 44689b0..9c17114 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h -@@ -71,10 +71,17 @@ typedef struct _gcoFENCE * gcoFENCE; - typedef struct _gcsSYNC_CONTEXT * gcsSYNC_CONTEXT_PTR; - #endif - -+typedef struct _gcoOS_SymbolsList gcoOS_SymbolsList; -+ - /******************************************************************************\ - ******************************* Process local storage ************************* - \******************************************************************************/ - typedef struct _gcsPLS * gcsPLS_PTR; -+ -+typedef void (* gctPLS_DESTRUCTOR) ( -+ gcsPLS_PTR -+ ); -+ - typedef struct _gcsPLS - { - /* Global objects. */ -@@ -103,6 +110,12 @@ typedef struct _gcsPLS - - /* PorcessID of the constrcutor process */ - gctUINT32 processID; -+#if gcdFORCE_GAL_LOAD_TWICE -+ /* ThreadID of the constrcutor process. */ -+ gctSIZE_T threadID; -+ /* Flag for calling module destructor. */ -+ gctBOOL exiting; -+#endif - - /* Reference count for destructor. */ - gcsATOM_PTR reference; -@@ -111,6 +124,8 @@ typedef struct _gcsPLS - gctBOOL bNeedSupportNP2Texture; - #endif - -+ /* Destructor for eglDisplayInfo. */ -+ gctPLS_DESTRUCTOR destructor; - } - gcsPLS; - -@@ -148,6 +163,11 @@ typedef struct _gcsTLS - #endif - gco2D engine2D; - gctBOOL copied; -+ -+#if gcdFORCE_GAL_LOAD_TWICE -+ /* libGAL.so handle */ -+ gctHANDLE handle; -+#endif - } - gcsTLS; - -@@ -160,6 +180,7 @@ typedef enum _gcePLS_VALUE - gcePLS_VALUE_EGL_DISPLAY_INFO, - gcePLS_VALUE_EGL_SURFACE_INFO, - gcePLS_VALUE_EGL_CONFIG_FORMAT_INFO, -+ gcePLS_VALUE_EGL_DESTRUCTOR_INFO, - } - gcePLS_VALUE; - -@@ -577,6 +598,12 @@ gcoHAL_Call( - IN OUT gcsHAL_INTERFACE_PTR Interface - ); - -+gceSTATUS -+gcoHAL_GetPatchID( -+ IN gcoHAL Hal, -+ OUT gcePATCH_ID * PatchID -+ ); -+ - /* Schedule an event. */ - gceSTATUS - gcoHAL_ScheduleEvent( -@@ -637,6 +664,16 @@ gcoHAL_QuerySeparated3D2D( - IN gcoHAL Hal - ); - -+gceSTATUS -+gcoHAL_QuerySpecialHint( -+ IN gceSPECIAL_HINT Hint -+ ); -+ -+gceSTATUS -+gcoHAL_SetSpecialHintData( -+ IN gcoHARDWARE Hardware -+ ); -+ - /* Get pointer to gcoVG object. */ - gceSTATUS - gcoHAL_GetVGEngine( -@@ -786,7 +823,6 @@ gcoOS_FreeVideoMemory( - IN gctPOINTER Handle - ); - --#if gcdENABLE_BANK_ALIGNMENT - gceSTATUS - gcoSURF_GetBankOffsetBytes( - IN gcoSURF Surfce, -@@ -794,7 +830,6 @@ gcoSURF_GetBankOffsetBytes( - IN gctUINT32 Stride, - IN gctUINT32_PTR Bytes - ); --#endif - - /* Map user memory. */ - gceSTATUS -@@ -918,6 +953,21 @@ gcoOS_Flush( - IN gctFILE File - ); - -+/* Close a file descriptor. */ -+gceSTATUS -+gcoOS_CloseFD( -+ IN gcoOS Os, -+ IN gctINT FD -+ ); -+ -+/* Dup file descriptor to another. */ -+gceSTATUS -+gcoOS_DupFD( -+ IN gcoOS Os, -+ IN gctINT FD, -+ OUT gctINT * FD2 -+ ); -+ - /* Create an endpoint for communication. */ - gceSTATUS - gcoOS_Socket( -@@ -977,6 +1027,14 @@ gcoOS_GetEnv( - OUT gctSTRING * Value - ); - -+/* Set environment variable value. */ -+gceSTATUS -+gcoOS_SetEnv( -+ IN gcoOS Os, -+ IN gctCONST_STRING VarName, -+ IN gctSTRING Value -+ ); -+ - /* Get current working directory. */ - gceSTATUS - gcoOS_GetCwd( -@@ -1210,6 +1268,13 @@ gcoOS_DetectProcessByEncryptedName( - IN gctCONST_STRING Name - ); - -+#if defined(ANDROID) -+gceSTATUS -+gcoOS_DetectProgrameByEncryptedSymbols( -+ IN gcoOS_SymbolsList Symbols -+ ); -+#endif -+ - /*----------------------------------------------------------------------------*/ - /*----- Atoms ----------------------------------------------------------------*/ - -@@ -1403,6 +1468,42 @@ gcoOS_UnmapSignal( - IN gctSIGNAL Signal - ); - -+/*----------------------------------------------------------------------------*/ -+/*----- Android Native Fence -------------------------------------------------*/ -+ -+/* Create sync point. */ -+gceSTATUS -+gcoOS_CreateSyncPoint( -+ IN gcoOS Os, -+ OUT gctSYNC_POINT * SyncPoint -+ ); -+ -+/* Destroy sync point. */ -+gceSTATUS -+gcoOS_DestroySyncPoint( -+ IN gcoOS Os, -+ IN gctSYNC_POINT SyncPoint -+ ); -+ -+/* Create native fence. */ -+gceSTATUS -+gcoOS_CreateNativeFence( -+ IN gcoOS Os, -+ IN gctSYNC_POINT SyncPoint, -+ OUT gctINT * FenceFD -+ ); -+ -+/* Wait on native fence. */ -+gceSTATUS -+gcoOS_WaitNativeFence( -+ IN gcoOS Os, -+ IN gctINT FenceFD, -+ IN gctUINT32 Timeout -+ ); -+ -+/*----------------------------------------------------------------------------*/ -+/*----- Memory Access and Cache ----------------------------------------------*/ -+ - /* Write a register. */ - gceSTATUS - gcoOS_WriteRegister( -@@ -1507,7 +1608,7 @@ gcoOS_QueryProfileTickRate( - # define gcmPROFILE_QUERY(start, ticks) do { } while (gcvFALSE) - # define gcmPROFILE_ONLY(x) do { } while (gcvFALSE) - # define gcmPROFILE_ELSE(x) x --# define gcmPROFILE_DECLARE_ONLY(x) typedef x -+# define gcmPROFILE_DECLARE_ONLY(x) do { } while (gcvFALSE) - # define gcmPROFILE_DECLARE_ELSE(x) x - #endif - -@@ -1579,6 +1680,28 @@ typedef struct _gcsRECT - } - gcsRECT; - -+typedef union _gcsPIXEL -+{ -+ struct -+ { -+ gctFLOAT r, g, b, a; -+ gctFLOAT d, s; -+ } pf; -+ -+ struct -+ { -+ gctINT32 r, g, b, a; -+ gctINT32 d, s; -+ } pi; -+ -+ struct -+ { -+ gctUINT32 r, g, b, a; -+ gctUINT32 d, s; -+ } pui; -+ -+} gcsPIXEL; -+ - - /******************************************************************************\ - ********************************* gcoSURF Object ******************************** -@@ -1795,6 +1918,18 @@ gcoSURF_SetRotation( - ); - - gceSTATUS -+gcoSURF_SetPreRotation( -+ IN gcoSURF Surface, -+ IN gceSURF_ROTATION Rotation -+ ); -+ -+gceSTATUS -+gcoSURF_GetPreRotation( -+ IN gcoSURF Surface, -+ IN gceSURF_ROTATION *Rotation -+ ); -+ -+gceSTATUS - gcoSURF_IsValid( - IN gcoSURF Surface - ); -@@ -1824,6 +1959,15 @@ gcoSURF_DisableTileStatus( - IN gcoSURF Surface, - IN gctBOOL Decompress - ); -+ -+gceSTATUS -+gcoSURF_AlignResolveRect( -+ IN gcoSURF Surf, -+ IN gcsPOINT_PTR RectOrigin, -+ IN gcsPOINT_PTR RectSize, -+ OUT gcsPOINT_PTR AlignedOrigin, -+ OUT gcsPOINT_PTR AlignedSize -+ ); - #endif /* VIVANTE_NO_3D */ - - /* Get surface size. */ -@@ -1910,6 +2054,9 @@ gcoSURF_FillFromTile( - IN gcoSURF Surface - ); - -+/* Check if surface needs a filler. */ -+gceSTATUS gcoSURF_NeedFiller(IN gcoSURF Surface); -+ - /* Fill surface with a value. */ - gceSTATUS - gcoSURF_Fill( -@@ -1949,6 +2096,19 @@ gcoSURF_SetBuffer( - IN gctUINT32 Physical - ); - -+/* Set the underlying video buffer for the surface wrapper. */ -+gceSTATUS -+gcoSURF_SetVideoBuffer( -+ IN gcoSURF Surface, -+ IN gceSURF_TYPE Type, -+ IN gceSURF_FORMAT Format, -+ IN gctUINT Width, -+ IN gctUINT Height, -+ IN gctUINT Stride, -+ IN gctPOINTER *LogicalPlane1, -+ IN gctUINT32 *PhysicalPlane1 -+ ); -+ - /* Set the size of the surface in pixels and map the underlying buffer. */ - gceSTATUS - gcoSURF_SetWindow( -@@ -3705,6 +3865,12 @@ gcGetUserDebugOption( - void - ); - -+struct _gcoOS_SymbolsList -+{ -+ gcePATCH_ID patchId; -+ const char * symList[10]; -+}; -+ - #if gcdHAS_ELLIPSES - #define gcmUSER_DEBUG_MSG(level, ...) \ - do \ -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h -index 8693c37..062224c 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h -@@ -39,12 +39,10 @@ extern "C" { - #define GC_ENABLE_LOADTIME_OPT 1 - #endif - --#define TEMP_OPT_CONSTANT_TEXLD_COORD 1 -+#define TEMP_OPT_CONSTANT_TEXLD_COORD 0 - - #define TEMP_SHADER_PATCH 1 - --#define ADD_PRE_ROTATION_TO_VS 0 -- - #define TEMP_INLINE_ALL_EXPANSION 1 - /******************************* IR VERSION ******************/ - #define gcdSL_IR_VERSION gcmCC('\0','\0','\0','\1') -@@ -271,6 +269,7 @@ typedef enum _gcSL_OPCODE - gcSL_ADDSAT, /* 0x5C */ /* Integer only. */ - gcSL_SUBSAT, /* 0x5D */ /* Integer only. */ - gcSL_MULSAT, /* 0x5E */ /* Integer only. */ -+ gcSL_DP2, /* 0x5F */ - gcSL_MAXOPCODE - } - gcSL_OPCODE; -@@ -474,6 +473,9 @@ struct _gcsHINT - - gctBOOL clipW; - -+ /* Flag whether or not the shader has a KILL instruction. */ -+ gctBOOL hasKill; -+ - /* Element count. */ - gctUINT32 elementCount; - -@@ -495,12 +497,18 @@ struct _gcsHINT - /* Balance maximum. */ - gctUINT32 balanceMax; - -+ /* Auto-shift balancing. */ -+ gctBOOL autoShift; -+ - /* Flag whether the PS outputs the depth value or not. */ - gctBOOL psHasFragDepthOut; - - /* Flag whether the ThreadWalker is in PS. */ - gctBOOL threadWalkerInPS; - -+ /* HW reg number for position of VS */ -+ gctUINT32 hwRegNoOfSIVPos; -+ - #if gcdALPHA_KILL_IN_SHADER - /* States to set when alpha kill is enabled. */ - gctUINT32 killStateAddress; -@@ -687,12 +695,12 @@ typedef enum _gceSHADER_FLAGS - gcvSHADER_USE_ALPHA_KILL = 0x100, - #endif - --#if ADD_PRE_ROTATION_TO_VS -+#if gcdPRE_ROTATION && (ANDROID_SDK_VERSION >= 14) - gcvSHADER_VS_PRE_ROTATION = 0x200, - #endif - - #if TEMP_INLINE_ALL_EXPANSION -- gcvSHADER_INLINE_ALL_EXPANSION = 0x200, -+ gcvSHADER_INLINE_ALL_EXPANSION = 0x400, - #endif - } - gceSHADER_FLAGS; -@@ -827,6 +835,7 @@ typedef struct _gcOPTIMIZER_OPTION - gctBOOL dumpOptimizerVerbose; /* dump result IR in each optimization phase */ - gctBOOL dumpBEGenertedCode; /* dump generated machine code */ - gctBOOL dumpBEVerbose; /* dump BE tree and optimization detail */ -+ gctBOOL dumpBEFinalIR; /* dump BE final IR */ - - /* Code generation */ - -@@ -945,6 +954,8 @@ extern gcOPTIMIZER_OPTION theOptimizerOption; - gcmOPT_DUMP_CODEGEN_VERBOSE() ) - #define gcmOPT_DUMP_CODEGEN_VERBOSE() \ - (gcmGetOptimizerOption()->dumpBEVerbose != 0) -+#define gcmOPT_DUMP_FINAL_IR() \ -+ (gcmGetOptimizerOption()->dumpBEFinalIR != 0) - - #define gcmOPT_SET_DUMP_SHADER_SRC(v) \ - gcmGetOptimizerOption()->dumpShaderSource = (v) -@@ -1064,6 +1075,13 @@ typedef struct _gcNPOT_PATCH_PARAM - gctINT texDimension; /* 2 or 3 */ - }gcNPOT_PATCH_PARAM, *gcNPOT_PATCH_PARAM_PTR; - -+typedef struct _gcZBIAS_PATCH_PARAM -+{ -+ /* Driver uses this to program uniform that designating zbias */ -+ gctINT uniformAddr; -+ gctINT channel; -+}gcZBIAS_PATCH_PARAM, *gcZBIAS_PATCH_PARAM_PTR; -+ - void - gcGetOptionFromEnv( - IN OUT gcOPTIMIZER_OPTION * Option -@@ -1556,6 +1574,43 @@ gcSHADER_AddUniform( - OUT gcUNIFORM * Uniform - ); - -+/******************************************************************************* -+** gcSHADER_AddPreRotationUniform -+******************************************************************************** -+** -+** Add an uniform to a gcSHADER object. -+** -+** INPUT: -+** -+** gcSHADER Shader -+** Pointer to a gcSHADER object. -+** -+** gctCONST_STRING Name -+** Name of the uniform to add. -+** -+** gcSHADER_TYPE Type -+** Type of the uniform to add. -+** -+** gctSIZE_T Length -+** Array length of the uniform to add. 'Length' must be at least 1. -+** -+** gctINT col -+** Which uniform. -+** -+** OUTPUT: -+** -+** gcUNIFORM * Uniform -+** Pointer to a variable receiving the gcUNIFORM object pointer. -+*/ -+gceSTATUS -+gcSHADER_AddPreRotationUniform( -+ IN gcSHADER Shader, -+ IN gctCONST_STRING Name, -+ IN gcSHADER_TYPE Type, -+ IN gctSIZE_T Length, -+ IN gctINT col, -+ OUT gcUNIFORM * Uniform -+ ); - - /******************************************************************************* - ** gcSHADER_AddUniformEx -@@ -1677,6 +1732,28 @@ gcSHADER_GetUniformCount( - ); - - /******************************************************************************* -+** gcSHADER_GetPreRotationUniform -+******************************************************************************** -+** -+** Get the preRotate Uniform. -+** -+** INPUT: -+** -+** gcSHADER Shader -+** Pointer to a gcSHADER object. -+** -+** OUTPUT: -+** -+** gcUNIFORM ** pUniform -+** Pointer to a preRotation uniforms array. -+*/ -+gceSTATUS -+gcSHADER_GetPreRotationUniform( -+ IN gcSHADER Shader, -+ OUT gcUNIFORM ** pUniform -+ ); -+ -+/******************************************************************************* - ** gcSHADER_GetUniform - ******************************************************************************** - ** -@@ -3438,6 +3515,34 @@ gcUNIFORM_SetValueF( - ); - - /******************************************************************************* -+** gcUNIFORM_ProgramF -+** -+** Set the value of a uniform in floating point. -+** -+** INPUT: -+** -+** gctUINT32 Address -+** Address of Uniform. -+** -+** gctSIZE_T Row/Col -+** -+** const gctFLOAT * Value -+** Pointer to a buffer holding the floating point values for the -+** uniform. -+** -+** OUTPUT: -+** -+** Nothing. -+*/ -+gceSTATUS -+gcUNIFORM_ProgramF( -+ IN gctUINT32 Address, -+ IN gctSIZE_T Row, -+ IN gctSIZE_T Col, -+ IN const gctFLOAT * Value -+ ); -+ -+/******************************************************************************* - ** gcUNIFORM_GetModelViewProjMatrix - ******************************************************************************** - ** -@@ -3912,6 +4017,23 @@ gcRecompileShaders( - IN gctUINT32 *SamplerWrapS, - IN gctUINT32 *SamplerWrapT - ); -+ -+gceSTATUS -+gcRecompileDepthBias( -+ IN gcoHAL Hal, -+ IN gcMACHINECODE_PTR pVsMachineCode, -+ /*Recompile variables*/ -+ IN OUT gctPOINTER *ppRecompileStateBuffer, -+ IN OUT gctSIZE_T *pRecompileStateBufferSize, -+ IN OUT gcsHINT_PTR *ppRecompileHints, -+ /* natvie state*/ -+ IN gctPOINTER pNativeStateBuffer, -+ IN gctSIZE_T nativeStateBufferSize, -+ IN gcsHINT_PTR pNativeHints, -+ OUT gctINT * uniformAddr, -+ OUT gctINT * uniformChannel -+ ); -+ - /******************************************************************************* - ** gcSaveProgram - ******************************************************************************** -@@ -4138,6 +4260,16 @@ gcSHADER_PatchNPOTForMachineCode( - IN OUT gcsHINT_PTR pHints /* User needs copy original hints to this one, then passed this one in */ - ); - -+gceSTATUS -+gcSHADER_PatchZBiasForMachineCodeVS( -+ IN gcMACHINECODE_PTR pMachineCode, -+ IN OUT gcZBIAS_PATCH_PARAM_PTR pPatchParam, -+ IN gctUINT hwSupportedInstCount, -+ OUT gctPOINTER* ppCmdBuffer, -+ OUT gctUINT32* pByteSizeOfCmdBuffer, -+ IN OUT gcsHINT_PTR pHints /* User needs copy original hints to this one, then passed this one in */ -+ ); -+ - #ifdef __cplusplus - } - #endif -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h -index b056c52..fc8c395 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h -@@ -166,6 +166,12 @@ typedef enum _gceHAL_COMMAND_CODES - - /* Reset time stamp. */ - gcvHAL_QUERY_RESET_TIME_STAMP, -+ -+ /* Sync point operations. */ -+ gcvHAL_SYNC_POINT, -+ -+ /* Create native fence and return its fd. */ -+ gcvHAL_CREATE_NATIVE_FENCE, - } - gceHAL_COMMAND_CODES; - -@@ -723,6 +729,10 @@ typedef struct _gcsHAL_INTERFACE - /* gcvHAL_READ_ALL_PROFILE_REGISTERS */ - struct _gcsHAL_READ_ALL_PROFILE_REGISTERS - { -+#if VIVANTE_PROFILER_CONTEXT -+ /* Context buffer object gckCONTEXT. Just a name. */ -+ IN gctUINT32 context; -+#endif - /* Data read. */ - OUT gcsPROFILER_COUNTERS counters; - } -@@ -978,6 +988,33 @@ typedef struct _gcsHAL_INTERFACE - OUT gctUINT64 timeStamp; - } - QueryResetTimeStamp; -+ -+ struct _gcsHAL_SYNC_POINT -+ { -+ /* Command. */ -+ gceSYNC_POINT_COMMAND_CODES command; -+ -+ /* Sync point. */ -+ IN OUT gctUINT64 syncPoint; -+ -+ /* From where. */ -+ IN gceKERNEL_WHERE fromWhere; -+ -+ /* Signaled state. */ -+ OUT gctBOOL state; -+ } -+ SyncPoint; -+ -+ struct _gcsHAL_CREATE_NATIVE_FENCE -+ { -+ /* Signal id to dup. */ -+ IN gctUINT64 syncPoint; -+ -+ /* Native fence file descriptor. */ -+ OUT gctINT fenceFD; -+ -+ } -+ CreateNativeFence; - } - u; - } -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h -index 8481375..3fb2fe4 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h -@@ -323,6 +323,15 @@ gcoSURF_Resolve( - IN gcoSURF DestSurface - ); - -+gceSTATUS -+gcoSURF_IsHWResolveable( -+ IN gcoSURF SrcSurface, -+ IN gcoSURF DestSurface, -+ IN gcsPOINT_PTR SrcOrigin, -+ IN gcsPOINT_PTR DestOrigin, -+ IN gcsPOINT_PTR RectSize -+ ); -+ - /* Resolve rectangular area of a surface. */ - gceSTATUS - gcoSURF_ResolveRect( -@@ -345,6 +354,11 @@ gcoSURF_IsRenderable( - IN gcoSURF Surface - ); - -+gceSTATUS -+gcoSURF_IsFormatRenderableAsRT( -+ IN gcoSURF Surface -+ ); -+ - #if gcdSYNC - gceSTATUS - gcoSURF_GetFence( -@@ -1006,6 +1020,7 @@ typedef struct _gcsALPHA_INFO - gctBOOL test; - gceCOMPARE compare; - gctUINT8 reference; -+ gctFLOAT floatReference; - - /* Alpha blending states. */ - gctBOOL blend; -@@ -1040,7 +1055,8 @@ gco3D_SetAlphaCompare( - gceSTATUS - gco3D_SetAlphaReference( - IN gco3D Engine, -- IN gctUINT8 Reference -+ IN gctUINT8 Reference, -+ IN gctFLOAT FloatReference - ); - - /* Set alpha test reference in fixed point. */ -@@ -1504,6 +1520,19 @@ gcoTEXTURE_UploadSub( - IN gceSURF_FORMAT Format - ); - -+/* Upload YUV data to an gcoTEXTURE object. */ -+gceSTATUS -+gcoTEXTURE_UploadYUV( -+ IN gcoTEXTURE Texture, -+ IN gceTEXTURE_FACE Face, -+ IN gctUINT Width, -+ IN gctUINT Height, -+ IN gctUINT Slice, -+ IN gctPOINTER Memory[3], -+ IN gctINT Stride[3], -+ IN gceSURF_FORMAT Format -+ ); -+ - /* Upload compressed data to an gcoTEXTURE object. */ - gceSTATUS - gcoTEXTURE_UploadCompressed( -@@ -1621,6 +1650,13 @@ gcoTEXTURE_QueryCaps( - ); - - gceSTATUS -+gcoTEXTURE_GetTiling( -+ IN gcoTEXTURE Texture, -+ IN gctINT preferLevel, -+ OUT gceTILING * Tiling -+ ); -+ -+gceSTATUS - gcoTEXTURE_GetClosestFormat( - IN gcoHAL Hal, - IN gceSURF_FORMAT InFormat, -@@ -2001,6 +2037,14 @@ gcoHAL_SetSharedInfo( - IN gctSIZE_T Bytes - ); - -+#if VIVANTE_PROFILER_CONTEXT -+gceSTATUS -+gcoHARDWARE_GetContext( -+ IN gcoHARDWARE Hardware, -+ OUT gctUINT32 * Context -+ ); -+#endif -+ - #ifdef __cplusplus - } - #endif -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h -index a1d9ae5..8e3c2f8 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h -@@ -146,10 +146,26 @@ typedef enum _gceFEATURE - gcvFEATURE_FRUSTUM_CLIP_FIX, - gcvFEATURE_TEXTURE_LINEAR, - gcvFEATURE_TEXTURE_YUV_ASSEMBLER, -+ gcvFEATURE_SHADER_HAS_INSTRUCTION_CACHE, - gcvFEATURE_DYNAMIC_FREQUENCY_SCALING, - gcvFEATURE_BUGFIX15, -+ gcvFEATURE_2D_GAMMA, -+ gcvFEATURE_2D_COLOR_SPACE_CONVERSION, -+ gcvFEATURE_2D_SUPER_TILE_VERSION, - gcvFEATURE_2D_MIRROR_EXTENSION, -+ gcvFEATURE_2D_SUPER_TILE_V1, -+ gcvFEATURE_2D_SUPER_TILE_V2, -+ gcvFEATURE_2D_SUPER_TILE_V3, -+ gcvFEATURE_2D_MULTI_SOURCE_BLT_EX2, - gcvFEATURE_ELEMENT_INDEX_UINT, -+ gcvFEATURE_2D_COMPRESSION, -+ gcvFEATURE_2D_OPF_YUV_OUTPUT, -+ gcvFEATURE_2D_MULTI_SRC_BLT_TO_UNIFIED_DST_RECT, -+ gcvFEATURE_2D_YUV_MODE, -+ gcvFEATURE_DECOMPRESS_Z16, -+ gcvFEATURE_LINEAR_RENDER_TARGET, -+ gcvFEATURE_BUG_FIXES8, -+ gcvFEATURE_HALTI2, - } - gceFEATURE; - -@@ -203,11 +219,14 @@ typedef enum _gceSURF_TYPE - gcvSURF_NO_VIDMEM = 0x200, /* Used to allocate surfaces with no underlying vidmem node. - In Android, vidmem node is allocated by another process. */ - gcvSURF_CACHEABLE = 0x400, /* Used to allocate a cacheable surface */ --#if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST - gcvSURF_FLIP = 0x800, /* The Resolve Target the will been flip resolve from RT */ --#endif - gcvSURF_TILE_STATUS_DIRTY = 0x1000, /* Init tile status to all dirty */ - -+ gcvSURF_LINEAR = 0x2000, -+ -+ gcvSURF_TEXTURE_LINEAR = gcvSURF_TEXTURE -+ | gcvSURF_LINEAR, -+ - gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET - | gcvSURF_NO_TILE_STATUS, - -@@ -217,6 +236,9 @@ typedef enum _gceSURF_TYPE - gcvSURF_DEPTH_NO_TILE_STATUS = gcvSURF_DEPTH - | gcvSURF_NO_TILE_STATUS, - -+ gcvSURF_DEPTH_TS_DIRTY = gcvSURF_DEPTH -+ | gcvSURF_TILE_STATUS_DIRTY, -+ - /* Supported surface types with no vidmem node. */ - gcvSURF_BITMAP_NO_VIDMEM = gcvSURF_BITMAP - | gcvSURF_NO_VIDMEM, -@@ -231,10 +253,8 @@ typedef enum _gceSURF_TYPE - gcvSURF_CACHEABLE_BITMAP = gcvSURF_BITMAP - | gcvSURF_CACHEABLE, - --#if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST - gcvSURF_FLIP_BITMAP = gcvSURF_BITMAP - | gcvSURF_FLIP, --#endif - } - gceSURF_TYPE; - -@@ -263,6 +283,9 @@ typedef enum _gceSURF_ROTATION - gcvSURF_270_DEGREE, - gcvSURF_FLIP_X, - gcvSURF_FLIP_Y, -+ -+ gcvSURF_POST_FLIP_X = 0x40000000, -+ gcvSURF_POST_FLIP_Y = 0x80000000, - } - gceSURF_ROTATION; - -@@ -622,21 +645,16 @@ gce2D_PORTER_DUFF_RULE; - typedef enum _gce2D_YUV_COLOR_MODE - { - gcv2D_YUV_601= 0, -- gcv2D_YUV_709 --} --gce2D_YUV_COLOR_MODE; -+ gcv2D_YUV_709, -+ gcv2D_YUV_USER_DEFINED, -+ gcv2D_YUV_USER_DEFINED_CLAMP, - --/* 2D Rotation and flipping. */ --typedef enum _gce2D_ORIENTATION --{ -- gcv2D_0_DEGREE = 0, -- gcv2D_90_DEGREE, -- gcv2D_180_DEGREE, -- gcv2D_270_DEGREE, -- gcv2D_X_FLIP, -- gcv2D_Y_FLIP -+ /* Default setting is for src. gcv2D_YUV_DST -+ can be ORed to set dst. -+ */ -+ gcv2D_YUV_DST = 0x80000000, - } --gce2D_ORIENTATION; -+gce2D_YUV_COLOR_MODE; - - typedef enum _gce2D_COMMAND - { -@@ -656,21 +674,39 @@ typedef enum _gce2D_TILE_STATUS_CONFIG - gcv2D_TSC_ENABLE = 0x00000001, - gcv2D_TSC_COMPRESSED = 0x00000002, - gcv2D_TSC_DOWN_SAMPLER = 0x00000004, -+ gcv2D_TSC_2D_COMPRESSED = 0x00000008, - } - gce2D_TILE_STATUS_CONFIG; - - typedef enum _gce2D_QUERY - { -- gcv2D_QUERY_RGB_ADDRESS_MAX_ALIGN = 0, -- gcv2D_QUERY_RGB_STRIDE_MAX_ALIGN, -- gcv2D_QUERY_YUV_ADDRESS_MAX_ALIGN, -- gcv2D_QUERY_YUV_STRIDE_MAX_ALIGN, -+ gcv2D_QUERY_RGB_ADDRESS_MIN_ALIGN = 0, -+ gcv2D_QUERY_RGB_STRIDE_MIN_ALIGN, -+ gcv2D_QUERY_YUV_ADDRESS_MIN_ALIGN, -+ gcv2D_QUERY_YUV_STRIDE_MIN_ALIGN, - } - gce2D_QUERY; - -+typedef enum _gce2D_SUPER_TILE_VERSION -+{ -+ gcv2D_SUPER_TILE_VERSION_V1 = 1, -+ gcv2D_SUPER_TILE_VERSION_V2 = 2, -+ gcv2D_SUPER_TILE_VERSION_V3 = 3, -+} -+gce2D_SUPER_TILE_VERSION; -+ - typedef enum _gce2D_STATE - { - gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE = 1, -+ gcv2D_STATE_SUPER_TILE_VERSION, -+ gcv2D_STATE_EN_GAMMA, -+ gcv2D_STATE_DE_GAMMA, -+ gcv2D_STATE_MULTI_SRC_BLIT_UNIFIED_DST_RECT, -+ -+ gcv2D_STATE_ARRAY_EN_GAMMA = 0x10001, -+ gcv2D_STATE_ARRAY_DE_GAMMA, -+ gcv2D_STATE_ARRAY_CSC_YUV_TO_RGB, -+ gcv2D_STATE_ARRAY_CSC_RGB_TO_YUV, - } - gce2D_STATE; - -@@ -809,6 +845,15 @@ typedef enum _gceUSER_SIGNAL_COMMAND_CODES - } - gceUSER_SIGNAL_COMMAND_CODES; - -+/* Sync point command codes. */ -+typedef enum _gceSYNC_POINT_COMMAND_CODES -+{ -+ gcvSYNC_POINT_CREATE, -+ gcvSYNC_POINT_DESTROY, -+ gcvSYNC_POINT_SIGNAL, -+} -+gceSYNC_POINT_COMMAND_CODES; -+ - /* Event locations. */ - typedef enum _gceKERNEL_WHERE - { -@@ -848,6 +893,44 @@ typedef enum _gceDEBUG_MESSAGE_TYPE - } - gceDEBUG_MESSAGE_TYPE; - -+typedef enum _gceSPECIAL_HINT -+{ -+ gceSPECIAL_HINT0, -+ gceSPECIAL_HINT1, -+ gceSPECIAL_HINT2, -+ gceSPECIAL_HINT3, -+ /* For disable dynamic stream/index */ -+ gceSPECIAL_HINT4 -+} -+gceSPECIAL_HINT; -+ -+typedef enum _gceMACHINECODE -+{ -+ gcvMACHINECODE_HOVERJET0 = 0x0, -+ gcvMACHINECODE_HOVERJET1 , -+ -+ gcvMACHINECODE_TAIJI0 , -+ gcvMACHINECODE_TAIJI1 , -+ gcvMACHINECODE_TAIJI2 , -+ -+ gcvMACHINECODE_ANTUTU0 , -+ -+ gcvMACHINECODE_GLB27_RELEASE_0, -+ gcvMACHINECODE_GLB27_RELEASE_1, -+ -+ gcvMACHINECODE_WAVESCAPE0 , -+ gcvMACHINECODE_WAVESCAPE1 , -+ -+ gcvMACHINECODE_NENAMARKV2_4_0 , -+ gcvMACHINECODE_NENAMARKV2_4_1 , -+ -+ gcvMACHINECODE_GLB25_RELEASE_0, -+ gcvMACHINECODE_GLB25_RELEASE_1, -+ gcvMACHINECODE_GLB25_RELEASE_2, -+} -+gceMACHINECODE; -+ -+ - /******************************************************************************\ - ****************************** Object Declarations ***************************** - \******************************************************************************/ -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h -index 9e2a8db..b53b618 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h -@@ -46,7 +46,7 @@ - This define enables the profiler. - */ - #ifndef VIVANTE_PROFILER --# define VIVANTE_PROFILER 0 -+# define VIVANTE_PROFILER 1 - #endif - - #ifndef VIVANTE_PROFILER_PERDRAW -@@ -54,6 +54,15 @@ - #endif - - /* -+ VIVANTE_PROFILER_CONTEXT -+ -+ This define enables the profiler according to each hw context. -+*/ -+#ifndef VIVANTE_PROFILER_CONTEXT -+# define VIVANTE_PROFILER_CONTEXT 1 -+#endif -+ -+/* - gcdUSE_VG - - Enable VG HAL layer (only for GC350). -@@ -729,7 +738,24 @@ - Use linear buffer for GPU apps so HWC can do 2D composition. - */ - #ifndef gcdGPU_LINEAR_BUFFER_ENABLED --# define gcdGPU_LINEAR_BUFFER_ENABLED 0 -+# define gcdGPU_LINEAR_BUFFER_ENABLED 1 -+#endif -+ -+/* -+ gcdENABLE_RENDER_INTO_WINDOW -+ -+ Enable Render-Into-Window (ie, No-Resolve) feature on android. -+ NOTE that even if enabled, it still depends on hardware feature and -+ android application behavior. When hardware feature or application -+ behavior can not support render into window mode, it will fail back -+ to normal mode. -+ When Render-Into-Window is finally used, window back buffer of android -+ applications will be allocated matching render target tiling format. -+ Otherwise buffer tiling is decided by the above option -+ 'gcdGPU_LINEAR_BUFFER_ENABLED'. -+*/ -+#ifndef gcdENABLE_RENDER_INTO_WINDOW -+# define gcdENABLE_RENDER_INTO_WINDOW 1 - #endif - - /* -@@ -758,7 +784,11 @@ - #endif - - #ifndef gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST --# define gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST 0 -+# ifdef ANDROID -+# define gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST 1 -+# else -+# define gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST 0 -+# endif - #endif - - #ifndef gcdENABLE_PE_DITHER_FIX -@@ -800,6 +830,10 @@ - # define gcdDISALBE_EARLY_EARLY_Z 1 - #endif - -+#ifndef gcdSHADER_SRC_BY_MACHINECODE -+# define gcdSHADER_SRC_BY_MACHINECODE 1 -+#endif -+ - /* - gcdLINK_QUEUE_SIZE - -@@ -849,11 +883,20 @@ - #define gcdUSE_NPOT_PATCH 1 - #endif - -- - #ifndef gcdSYNC - # define gcdSYNC 1 - #endif - -+#ifndef gcdENABLE_SPECIAL_HINT3 -+# define gcdENABLE_SPECIAL_HINT3 1 -+#endif -+ -+#if defined(ANDROID) -+#ifndef gcdPRE_ROTATION -+# define gcdPRE_ROTATION 1 -+#endif -+#endif -+ - /* - gcdDVFS - -@@ -866,4 +909,39 @@ - # define gcdDVFS_POLLING_TIME (gcdDVFS_ANAYLSE_WINDOW * 4) - #endif - -+/* -+ gcdANDROID_NATIVE_FENCE_SYNC -+ -+ Enable android native fence sync. It is introduced since jellybean-4.2. -+ Depends on linux kernel option: CONFIG_SYNC. -+ -+ 0: Disabled -+ 1: Build framework for native fence sync feature, and EGL extension -+ 2: Enable async swap buffers for client -+ * Native fence sync for client 'queueBuffer' in EGL, which is -+ 'acquireFenceFd' for layer in compositor side. -+ 3. Enable async hwcomposer composition. -+ * 'releaseFenceFd' for layer in compositor side, which is native -+ fence sync when client 'dequeueBuffer' -+ * Native fence sync for compositor 'queueBuffer' in EGL, which is -+ 'acquireFenceFd' for framebuffer target for DC -+ */ -+#ifndef gcdANDROID_NATIVE_FENCE_SYNC -+# define gcdANDROID_NATIVE_FENCE_SYNC 0 -+#endif -+ -+#ifndef gcdFORCE_MIPMAP -+# define gcdFORCE_MIPMAP 0 -+#endif -+ -+/* -+ gcdFORCE_GAL_LOAD_TWICE -+ -+ When non-zero, each thread except the main one will load libGAL.so twice to avoid potential segmetantion fault when app using dlopen/dlclose. -+ If threads exit arbitrarily, libGAL.so may not unload until the process quit. -+ */ -+#ifndef gcdFORCE_GAL_LOAD_TWICE -+# define gcdFORCE_GAL_LOAD_TWICE 0 -+#endif -+ - #endif /* __gc_hal_options_h_ */ -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h -index 3e450ba..aed73aa 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h -@@ -45,509 +45,115 @@ extern "C" { - #define gcdNEW_PROFILER_FILE 1 - #endif - --/* OpenGL ES11 API IDs. */ --#define ES11_ACTIVETEXTURE 1 --#define ES11_ALPHAFUNC (ES11_ACTIVETEXTURE + 1) --#define ES11_ALPHAFUNCX (ES11_ALPHAFUNC + 1) --#define ES11_BINDBUFFER (ES11_ALPHAFUNCX + 1) --#define ES11_BINDTEXTURE (ES11_BINDBUFFER + 1) --#define ES11_BLENDFUNC (ES11_BINDTEXTURE + 1) --#define ES11_BUFFERDATA (ES11_BLENDFUNC + 1) --#define ES11_BUFFERSUBDATA (ES11_BUFFERDATA + 1) --#define ES11_CLEAR (ES11_BUFFERSUBDATA + 1) --#define ES11_CLEARCOLOR (ES11_CLEAR + 1) --#define ES11_CLEARCOLORX (ES11_CLEARCOLOR + 1) --#define ES11_CLEARDEPTHF (ES11_CLEARCOLORX + 1) --#define ES11_CLEARDEPTHX (ES11_CLEARDEPTHF + 1) --#define ES11_CLEARSTENCIL (ES11_CLEARDEPTHX + 1) --#define ES11_CLIENTACTIVETEXTURE (ES11_CLEARSTENCIL + 1) --#define ES11_CLIPPLANEF (ES11_CLIENTACTIVETEXTURE + 1) --#define ES11_CLIPPLANEX (ES11_CLIPPLANEF + 1) --#define ES11_COLOR4F (ES11_CLIPPLANEX + 1) --#define ES11_COLOR4UB (ES11_COLOR4F + 1) --#define ES11_COLOR4X (ES11_COLOR4UB + 1) --#define ES11_COLORMASK (ES11_COLOR4X + 1) --#define ES11_COLORPOINTER (ES11_COLORMASK + 1) --#define ES11_COMPRESSEDTEXIMAGE2D (ES11_COLORPOINTER + 1) --#define ES11_COMPRESSEDTEXSUBIMAGE2D (ES11_COMPRESSEDTEXIMAGE2D + 1) --#define ES11_COPYTEXIMAGE2D (ES11_COMPRESSEDTEXSUBIMAGE2D + 1) --#define ES11_COPYTEXSUBIMAGE2D (ES11_COPYTEXIMAGE2D + 1) --#define ES11_CULLFACE (ES11_COPYTEXSUBIMAGE2D + 1) --#define ES11_DELETEBUFFERS (ES11_CULLFACE + 1) --#define ES11_DELETETEXTURES (ES11_DELETEBUFFERS + 1) --#define ES11_DEPTHFUNC (ES11_DELETETEXTURES + 1) --#define ES11_DEPTHMASK (ES11_DEPTHFUNC + 1) --#define ES11_DEPTHRANGEF (ES11_DEPTHMASK + 1) --#define ES11_DEPTHRANGEX (ES11_DEPTHRANGEF + 1) --#define ES11_DISABLE (ES11_DEPTHRANGEX + 1) --#define ES11_DISABLECLIENTSTATE (ES11_DISABLE + 1) --#define ES11_DRAWARRAYS (ES11_DISABLECLIENTSTATE + 1) --#define ES11_DRAWELEMENTS (ES11_DRAWARRAYS + 1) --#define ES11_ENABLE (ES11_DRAWELEMENTS + 1) --#define ES11_ENABLECLIENTSTATE (ES11_ENABLE + 1) --#define ES11_FINISH (ES11_ENABLECLIENTSTATE + 1) --#define ES11_FLUSH (ES11_FINISH + 1) --#define ES11_FOGF (ES11_FLUSH + 1) --#define ES11_FOGFV (ES11_FOGF + 1) --#define ES11_FOGX (ES11_FOGFV + 1) --#define ES11_FOGXV (ES11_FOGX + 1) --#define ES11_FRONTFACE (ES11_FOGXV + 1) --#define ES11_FRUSTUMF (ES11_FRONTFACE + 1) --#define ES11_FRUSTUMX (ES11_FRUSTUMF + 1) --#define ES11_GENBUFFERS (ES11_FRUSTUMX + 1) --#define ES11_GENTEXTURES (ES11_GENBUFFERS + 1) --#define ES11_GETBOOLEANV (ES11_GENTEXTURES + 1) --#define ES11_GETBUFFERPARAMETERIV (ES11_GETBOOLEANV + 1) --#define ES11_GETCLIPPLANEF (ES11_GETBUFFERPARAMETERIV + 1) --#define ES11_GETCLIPPLANEX (ES11_GETCLIPPLANEF + 1) --#define ES11_GETERROR (ES11_GETCLIPPLANEX + 1) --#define ES11_GETFIXEDV (ES11_GETERROR + 1) --#define ES11_GETFLOATV (ES11_GETFIXEDV + 1) --#define ES11_GETINTEGERV (ES11_GETFLOATV + 1) --#define ES11_GETLIGHTFV (ES11_GETINTEGERV + 1) --#define ES11_GETLIGHTXV (ES11_GETLIGHTFV + 1) --#define ES11_GETMATERIALFV (ES11_GETLIGHTXV + 1) --#define ES11_GETMATERIALXV (ES11_GETMATERIALFV + 1) --#define ES11_GETPOINTERV (ES11_GETMATERIALXV + 1) --#define ES11_GETSTRING (ES11_GETPOINTERV + 1) --#define ES11_GETTEXENVFV (ES11_GETSTRING + 1) --#define ES11_GETTEXENVIV (ES11_GETTEXENVFV + 1) --#define ES11_GETTEXENVXV (ES11_GETTEXENVIV + 1) --#define ES11_GETTEXPARAMETERFV (ES11_GETTEXENVXV + 1) --#define ES11_GETTEXPARAMETERIV (ES11_GETTEXPARAMETERFV + 1) --#define ES11_GETTEXPARAMETERXV (ES11_GETTEXPARAMETERIV + 1) --#define ES11_HINT (ES11_GETTEXPARAMETERXV + 1) --#define ES11_ISBUFFER (ES11_HINT + 1) --#define ES11_ISENABLED (ES11_ISBUFFER + 1) --#define ES11_ISTEXTURE (ES11_ISENABLED + 1) --#define ES11_LIGHTF (ES11_ISTEXTURE + 1) --#define ES11_LIGHTFV (ES11_LIGHTF + 1) --#define ES11_LIGHTMODELF (ES11_LIGHTFV + 1) --#define ES11_LIGHTMODELFV (ES11_LIGHTMODELF + 1) --#define ES11_LIGHTMODELX (ES11_LIGHTMODELFV + 1) --#define ES11_LIGHTMODELXV (ES11_LIGHTMODELX + 1) --#define ES11_LIGHTX (ES11_LIGHTMODELXV + 1) --#define ES11_LIGHTXV (ES11_LIGHTX + 1) --#define ES11_LINEWIDTH (ES11_LIGHTXV + 1) --#define ES11_LINEWIDTHX (ES11_LINEWIDTH + 1) --#define ES11_LOADIDENTITY (ES11_LINEWIDTHX + 1) --#define ES11_LOADMATRIXF (ES11_LOADIDENTITY + 1) --#define ES11_LOADMATRIXX (ES11_LOADMATRIXF + 1) --#define ES11_LOGICOP (ES11_LOADMATRIXX + 1) --#define ES11_MATERIALF (ES11_LOGICOP + 1) --#define ES11_MATERIALFV (ES11_MATERIALF + 1) --#define ES11_MATERIALX (ES11_MATERIALFV + 1) --#define ES11_MATERIALXV (ES11_MATERIALX + 1) --#define ES11_MATRIXMODE (ES11_MATERIALXV + 1) --#define ES11_MULTITEXCOORD4F (ES11_MATRIXMODE + 1) --#define ES11_MULTITEXCOORD4X (ES11_MULTITEXCOORD4F + 1) --#define ES11_MULTMATRIXF (ES11_MULTITEXCOORD4X + 1) --#define ES11_MULTMATRIXX (ES11_MULTMATRIXF + 1) --#define ES11_NORMAL3F (ES11_MULTMATRIXX + 1) --#define ES11_NORMAL3X (ES11_NORMAL3F + 1) --#define ES11_NORMALPOINTER (ES11_NORMAL3X + 1) --#define ES11_ORTHOF (ES11_NORMALPOINTER + 1) --#define ES11_ORTHOX (ES11_ORTHOF + 1) --#define ES11_PIXELSTOREI (ES11_ORTHOX + 1) --#define ES11_POINTPARAMETERF (ES11_PIXELSTOREI + 1) --#define ES11_POINTPARAMETERFV (ES11_POINTPARAMETERF + 1) --#define ES11_POINTPARAMETERX (ES11_POINTPARAMETERFV + 1) --#define ES11_POINTPARAMETERXV (ES11_POINTPARAMETERX + 1) --#define ES11_POINTSIZE (ES11_POINTPARAMETERXV + 1) --#define ES11_POINTSIZEX (ES11_POINTSIZE + 1) --#define ES11_POLYGONOFFSET (ES11_POINTSIZEX + 1) --#define ES11_POLYGONOFFSETX (ES11_POLYGONOFFSET + 1) --#define ES11_POPMATRIX (ES11_POLYGONOFFSETX + 1) --#define ES11_PUSHMATRIX (ES11_POPMATRIX + 1) --#define ES11_READPIXELS (ES11_PUSHMATRIX + 1) --#define ES11_ROTATEF (ES11_READPIXELS + 1) --#define ES11_ROTATEX (ES11_ROTATEF + 1) --#define ES11_SAMPLECOVERAGE (ES11_ROTATEX + 1) --#define ES11_SAMPLECOVERAGEX (ES11_SAMPLECOVERAGE + 1) --#define ES11_SCALEF (ES11_SAMPLECOVERAGEX + 1) --#define ES11_SCALEX (ES11_SCALEF + 1) --#define ES11_SCISSOR (ES11_SCALEX + 1) --#define ES11_SHADEMODEL (ES11_SCISSOR + 1) --#define ES11_STENCILFUNC (ES11_SHADEMODEL + 1) --#define ES11_STENCILMASK (ES11_STENCILFUNC + 1) --#define ES11_STENCILOP (ES11_STENCILMASK + 1) --#define ES11_TEXCOORDPOINTER (ES11_STENCILOP + 1) --#define ES11_TEXENVF (ES11_TEXCOORDPOINTER + 1) --#define ES11_TEXENVFV (ES11_TEXENVF + 1) --#define ES11_TEXENVI (ES11_TEXENVFV + 1) --#define ES11_TEXENVIV (ES11_TEXENVI + 1) --#define ES11_TEXENVX (ES11_TEXENVIV + 1) --#define ES11_TEXENVXV (ES11_TEXENVX + 1) --#define ES11_TEXIMAGE2D (ES11_TEXENVXV + 1) --#define ES11_TEXPARAMETERF (ES11_TEXIMAGE2D + 1) --#define ES11_TEXPARAMETERFV (ES11_TEXPARAMETERF + 1) --#define ES11_TEXPARAMETERI (ES11_TEXPARAMETERFV + 1) --#define ES11_TEXPARAMETERIV (ES11_TEXPARAMETERI + 1) --#define ES11_TEXPARAMETERX (ES11_TEXPARAMETERIV + 1) --#define ES11_TEXPARAMETERXV (ES11_TEXPARAMETERX + 1) --#define ES11_TEXSUBIMAGE2D (ES11_TEXPARAMETERXV + 1) --#define ES11_TRANSLATEF (ES11_TEXSUBIMAGE2D + 1) --#define ES11_TRANSLATEX (ES11_TRANSLATEF + 1) --#define ES11_VERTEXPOINTER (ES11_TRANSLATEX + 1) --#define ES11_VIEWPORT (ES11_VERTEXPOINTER + 1) --#define ES11_BLENDEQUATIONOES (ES11_VIEWPORT + 1) --#define ES11_BLENDFUNCSEPERATEOES (ES11_BLENDEQUATIONOES + 1) --#define ES11_BLENDEQUATIONSEPARATEOES (ES11_BLENDFUNCSEPERATEOES + 1) --#define ES11_GLMAPBUFFEROES (ES11_BLENDEQUATIONSEPARATEOES + 1) --#define ES11_GLUNMAPBUFFEROES (ES11_GLMAPBUFFEROES + 1) --#define ES11_GLGETBUFFERPOINTERVOES (ES11_GLUNMAPBUFFEROES + 1) --#define ES11_CALLS (ES11_GLGETBUFFERPOINTERVOES + 1) --#define ES11_DRAWCALLS (ES11_CALLS + 1) --#define ES11_STATECHANGECALLS (ES11_DRAWCALLS + 1) --#define ES11_POINTCOUNT (ES11_STATECHANGECALLS + 1) --#define ES11_LINECOUNT (ES11_POINTCOUNT + 1) --#define ES11_TRIANGLECOUNT (ES11_LINECOUNT + 1) -- --/* OpenGL ES2X API IDs. */ --#define ES20_ACTIVETEXTURE 1 --#define ES20_ATTACHSHADER (ES20_ACTIVETEXTURE + 1) --#define ES20_BINDATTRIBLOCATION (ES20_ATTACHSHADER + 1) --#define ES20_BINDBUFFER (ES20_BINDATTRIBLOCATION + 1) --#define ES20_BINDFRAMEBUFFER (ES20_BINDBUFFER + 1) --#define ES20_BINDRENDERBUFFER (ES20_BINDFRAMEBUFFER + 1) --#define ES20_BINDTEXTURE (ES20_BINDRENDERBUFFER + 1) --#define ES20_BLENDCOLOR (ES20_BINDTEXTURE + 1) --#define ES20_BLENDEQUATION (ES20_BLENDCOLOR + 1) --#define ES20_BLENDEQUATIONSEPARATE (ES20_BLENDEQUATION + 1) --#define ES20_BLENDFUNC (ES20_BLENDEQUATIONSEPARATE + 1) --#define ES20_BLENDFUNCSEPARATE (ES20_BLENDFUNC + 1) --#define ES20_BUFFERDATA (ES20_BLENDFUNCSEPARATE + 1) --#define ES20_BUFFERSUBDATA (ES20_BUFFERDATA + 1) --#define ES20_CHECKFRAMEBUFFERSTATUS (ES20_BUFFERSUBDATA + 1) --#define ES20_CLEAR (ES20_CHECKFRAMEBUFFERSTATUS + 1) --#define ES20_CLEARCOLOR (ES20_CLEAR + 1) --#define ES20_CLEARDEPTHF (ES20_CLEARCOLOR + 1) --#define ES20_CLEARSTENCIL (ES20_CLEARDEPTHF + 1) --#define ES20_COLORMASK (ES20_CLEARSTENCIL + 1) --#define ES20_COMPILESHADER (ES20_COLORMASK + 1) --#define ES20_COMPRESSEDTEXIMAGE2D (ES20_COMPILESHADER + 1) --#define ES20_COMPRESSEDTEXSUBIMAGE2D (ES20_COMPRESSEDTEXIMAGE2D + 1) --#define ES20_COPYTEXIMAGE2D (ES20_COMPRESSEDTEXSUBIMAGE2D + 1) --#define ES20_COPYTEXSUBIMAGE2D (ES20_COPYTEXIMAGE2D + 1) --#define ES20_CREATEPROGRAM (ES20_COPYTEXSUBIMAGE2D + 1) --#define ES20_CREATESHADER (ES20_CREATEPROGRAM + 1) --#define ES20_CULLFACE (ES20_CREATESHADER + 1) --#define ES20_DELETEBUFFERS (ES20_CULLFACE + 1) --#define ES20_DELETEFRAMEBUFFERS (ES20_DELETEBUFFERS + 1) --#define ES20_DELETEPROGRAM (ES20_DELETEFRAMEBUFFERS + 1) --#define ES20_DELETERENDERBUFFERS (ES20_DELETEPROGRAM + 1) --#define ES20_DELETESHADER (ES20_DELETERENDERBUFFERS + 1) --#define ES20_DELETETEXTURES (ES20_DELETESHADER + 1) --#define ES20_DEPTHFUNC (ES20_DELETETEXTURES + 1) --#define ES20_DEPTHMASK (ES20_DEPTHFUNC + 1) --#define ES20_DEPTHRANGEF (ES20_DEPTHMASK + 1) --#define ES20_DETACHSHADER (ES20_DEPTHRANGEF + 1) --#define ES20_DISABLE (ES20_DETACHSHADER + 1) --#define ES20_DISABLEVERTEXATTRIBARRAY (ES20_DISABLE + 1) --#define ES20_DRAWARRAYS (ES20_DISABLEVERTEXATTRIBARRAY + 1) --#define ES20_DRAWELEMENTS (ES20_DRAWARRAYS + 1) --#define ES20_ENABLE (ES20_DRAWELEMENTS + 1) --#define ES20_ENABLEVERTEXATTRIBARRAY (ES20_ENABLE + 1) --#define ES20_FINISH (ES20_ENABLEVERTEXATTRIBARRAY + 1) --#define ES20_FLUSH (ES20_FINISH + 1) --#define ES20_FRAMEBUFFERRENDERBUFFER (ES20_FLUSH + 1) --#define ES20_FRAMEBUFFERTEXTURE2D (ES20_FRAMEBUFFERRENDERBUFFER + 1) --#define ES20_FRONTFACE (ES20_FRAMEBUFFERTEXTURE2D + 1) --#define ES20_GENBUFFERS (ES20_FRONTFACE + 1) --#define ES20_GENERATEMIPMAP (ES20_GENBUFFERS + 1) --#define ES20_GENFRAMEBUFFERS (ES20_GENERATEMIPMAP + 1) --#define ES20_GENRENDERBUFFERS (ES20_GENFRAMEBUFFERS + 1) --#define ES20_GENTEXTURES (ES20_GENRENDERBUFFERS + 1) --#define ES20_GETACTIVEATTRIB (ES20_GENTEXTURES + 1) --#define ES20_GETACTIVEUNIFORM (ES20_GETACTIVEATTRIB + 1) --#define ES20_GETATTACHEDSHADERS (ES20_GETACTIVEUNIFORM + 1) --#define ES20_GETATTRIBLOCATION (ES20_GETATTACHEDSHADERS + 1) --#define ES20_GETBOOLEANV (ES20_GETATTRIBLOCATION + 1) --#define ES20_GETBUFFERPARAMETERIV (ES20_GETBOOLEANV + 1) --#define ES20_GETERROR (ES20_GETBUFFERPARAMETERIV + 1) --#define ES20_GETFLOATV (ES20_GETERROR + 1) --#define ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV (ES20_GETFLOATV + 1) --#define ES20_GETINTEGERV (ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV + 1) --#define ES20_GETPROGRAMIV (ES20_GETINTEGERV + 1) --#define ES20_GETPROGRAMINFOLOG (ES20_GETPROGRAMIV + 1) --#define ES20_GETRENDERBUFFERPARAMETERIV (ES20_GETPROGRAMINFOLOG + 1) --#define ES20_GETSHADERIV (ES20_GETRENDERBUFFERPARAMETERIV + 1) --#define ES20_GETSHADERINFOLOG (ES20_GETSHADERIV + 1) --#define ES20_GETSHADERPRECISIONFORMAT (ES20_GETSHADERINFOLOG + 1) --#define ES20_GETSHADERSOURCE (ES20_GETSHADERPRECISIONFORMAT + 1) --#define ES20_GETSTRING (ES20_GETSHADERSOURCE + 1) --#define ES20_GETTEXPARAMETERFV (ES20_GETSTRING + 1) --#define ES20_GETTEXPARAMETERIV (ES20_GETTEXPARAMETERFV + 1) --#define ES20_GETUNIFORMFV (ES20_GETTEXPARAMETERIV + 1) --#define ES20_GETUNIFORMIV (ES20_GETUNIFORMFV + 1) --#define ES20_GETUNIFORMLOCATION (ES20_GETUNIFORMIV + 1) --#define ES20_GETVERTEXATTRIBFV (ES20_GETUNIFORMLOCATION + 1) --#define ES20_GETVERTEXATTRIBIV (ES20_GETVERTEXATTRIBFV + 1) --#define ES20_GETVERTEXATTRIBPOINTERV (ES20_GETVERTEXATTRIBIV + 1) --#define ES20_HINT (ES20_GETVERTEXATTRIBPOINTERV + 1) --#define ES20_ISBUFFER (ES20_HINT + 1) --#define ES20_ISENABLED (ES20_ISBUFFER + 1) --#define ES20_ISFRAMEBUFFER (ES20_ISENABLED + 1) --#define ES20_ISPROGRAM (ES20_ISFRAMEBUFFER + 1) --#define ES20_ISRENDERBUFFER (ES20_ISPROGRAM + 1) --#define ES20_ISSHADER (ES20_ISRENDERBUFFER + 1) --#define ES20_ISTEXTURE (ES20_ISSHADER + 1) --#define ES20_LINEWIDTH (ES20_ISTEXTURE + 1) --#define ES20_LINKPROGRAM (ES20_LINEWIDTH + 1) --#define ES20_PIXELSTOREI (ES20_LINKPROGRAM + 1) --#define ES20_POLYGONOFFSET (ES20_PIXELSTOREI + 1) --#define ES20_READPIXELS (ES20_POLYGONOFFSET + 1) --#define ES20_RELEASESHADERCOMPILER (ES20_READPIXELS + 1) --#define ES20_RENDERBUFFERSTORAGE (ES20_RELEASESHADERCOMPILER + 1) --#define ES20_SAMPLECOVERAGE (ES20_RENDERBUFFERSTORAGE + 1) --#define ES20_SCISSOR (ES20_SAMPLECOVERAGE + 1) --#define ES20_SHADERBINARY (ES20_SCISSOR + 1) --#define ES20_SHADERSOURCE (ES20_SHADERBINARY + 1) --#define ES20_STENCILFUNC (ES20_SHADERSOURCE + 1) --#define ES20_STENCILFUNCSEPARATE (ES20_STENCILFUNC + 1) --#define ES20_STENCILMASK (ES20_STENCILFUNCSEPARATE + 1) --#define ES20_STENCILMASKSEPARATE (ES20_STENCILMASK + 1) --#define ES20_STENCILOP (ES20_STENCILMASKSEPARATE + 1) --#define ES20_STENCILOPSEPARATE (ES20_STENCILOP + 1) --#define ES20_TEXIMAGE2D (ES20_STENCILOPSEPARATE + 1) --#define ES20_TEXPARAMETERF (ES20_TEXIMAGE2D + 1) --#define ES20_TEXPARAMETERFV (ES20_TEXPARAMETERF + 1) --#define ES20_TEXPARAMETERI (ES20_TEXPARAMETERFV + 1) --#define ES20_TEXPARAMETERIV (ES20_TEXPARAMETERI + 1) --#define ES20_TEXSUBIMAGE2D (ES20_TEXPARAMETERIV + 1) --#define ES20_UNIFORM1F (ES20_TEXSUBIMAGE2D + 1) --#define ES20_UNIFORM1FV (ES20_UNIFORM1F + 1) --#define ES20_UNIFORM1I (ES20_UNIFORM1FV + 1) --#define ES20_UNIFORM1IV (ES20_UNIFORM1I + 1) --#define ES20_UNIFORM2F (ES20_UNIFORM1IV + 1) --#define ES20_UNIFORM2FV (ES20_UNIFORM2F + 1) --#define ES20_UNIFORM2I (ES20_UNIFORM2FV + 1) --#define ES20_UNIFORM2IV (ES20_UNIFORM2I + 1) --#define ES20_UNIFORM3F (ES20_UNIFORM2IV + 1) --#define ES20_UNIFORM3FV (ES20_UNIFORM3F + 1) --#define ES20_UNIFORM3I (ES20_UNIFORM3FV + 1) --#define ES20_UNIFORM3IV (ES20_UNIFORM3I + 1) --#define ES20_UNIFORM4F (ES20_UNIFORM3IV + 1) --#define ES20_UNIFORM4FV (ES20_UNIFORM4F + 1) --#define ES20_UNIFORM4I (ES20_UNIFORM4FV + 1) --#define ES20_UNIFORM4IV (ES20_UNIFORM4I + 1) --#define ES20_UNIFORMMATRIX2FV (ES20_UNIFORM4IV + 1) --#define ES20_UNIFORMMATRIX3FV (ES20_UNIFORMMATRIX2FV + 1) --#define ES20_UNIFORMMATRIX4FV (ES20_UNIFORMMATRIX3FV + 1) --#define ES20_USEPROGRAM (ES20_UNIFORMMATRIX4FV + 1) --#define ES20_VALIDATEPROGRAM (ES20_USEPROGRAM + 1) --#define ES20_VERTEXATTRIB1F (ES20_VALIDATEPROGRAM + 1) --#define ES20_VERTEXATTRIB1FV (ES20_VERTEXATTRIB1F + 1) --#define ES20_VERTEXATTRIB2F (ES20_VERTEXATTRIB1FV + 1) --#define ES20_VERTEXATTRIB2FV (ES20_VERTEXATTRIB2F + 1) --#define ES20_VERTEXATTRIB3F (ES20_VERTEXATTRIB2FV + 1) --#define ES20_VERTEXATTRIB3FV (ES20_VERTEXATTRIB3F + 1) --#define ES20_VERTEXATTRIB4F (ES20_VERTEXATTRIB3FV + 1) --#define ES20_VERTEXATTRIB4FV (ES20_VERTEXATTRIB4F + 1) --#define ES20_VERTEXATTRIBPOINTER (ES20_VERTEXATTRIB4FV + 1) --#define ES20_VIEWPORT (ES20_VERTEXATTRIBPOINTER + 1) --#define ES20_GETPROGRAMBINARYOES (ES20_VIEWPORT + 1) --#define ES20_PROGRAMBINARYOES (ES20_GETPROGRAMBINARYOES + 1) --#define ES20_TEXIMAGE3DOES (ES20_PROGRAMBINARYOES + 1) --#define ES20_TEXSUBIMAGE3DOES (ES20_TEXIMAGE3DOES + 1) --#define ES20_COPYSUBIMAGE3DOES (ES20_TEXSUBIMAGE3DOES + 1) --#define ES20_COMPRESSEDTEXIMAGE3DOES (ES20_COPYSUBIMAGE3DOES + 1) --#define ES20_COMPRESSEDTEXSUBIMAGE3DOES (ES20_COMPRESSEDTEXIMAGE3DOES + 1) --#define ES20_FRAMEBUFFERTEXTURE3DOES (ES20_COMPRESSEDTEXSUBIMAGE3DOES + 1) --#define ES20_BINDVERTEXARRAYOES (ES20_FRAMEBUFFERTEXTURE3DOES + 1) --#define ES20_GENVERTEXARRAYOES (ES20_BINDVERTEXARRAYOES + 1) --#define ES20_ISVERTEXARRAYOES (ES20_GENVERTEXARRAYOES + 1) --#define ES20_DELETEVERTEXARRAYOES (ES20_ISVERTEXARRAYOES + 1) --#define ES20_GLMAPBUFFEROES (ES20_DELETEVERTEXARRAYOES + 1) --#define ES20_GLUNMAPBUFFEROES (ES20_GLMAPBUFFEROES + 1) --#define ES20_GLGETBUFFERPOINTERVOES (ES20_GLUNMAPBUFFEROES + 1) --#define ES20_DISCARDFRAMEBUFFEREXT (ES20_GLGETBUFFERPOINTERVOES + 1) --#define ES20_CALLS (ES20_DISCARDFRAMEBUFFEREXT + 1) --#define ES20_DRAWCALLS (ES20_CALLS + 1) --#define ES20_STATECHANGECALLS (ES20_DRAWCALLS + 1) --#define ES20_POINTCOUNT (ES20_STATECHANGECALLS + 1) --#define ES20_LINECOUNT (ES20_POINTCOUNT + 1) --#define ES20_TRIANGLECOUNT (ES20_LINECOUNT + 1) -- --/* OpenVG API IDs. */ --#define VG11_APPENDPATH 1 --#define VG11_APPENDPATHDATA (VG11_APPENDPATH + 1) --#define VG11_CHILDIMAGE (VG11_APPENDPATHDATA + 1) --#define VG11_CLEAR (VG11_CHILDIMAGE + 1) --#define VG11_CLEARGLYPH (VG11_CLEAR + 1) --#define VG11_CLEARIMAGE (VG11_CLEARGLYPH + 1) --#define VG11_CLEARPATH (VG11_CLEARIMAGE + 1) --#define VG11_COLORMATRIX (VG11_CLEARPATH + 1) --#define VG11_CONVOLVE (VG11_COLORMATRIX + 1) --#define VG11_COPYIMAGE (VG11_CONVOLVE + 1) --#define VG11_COPYMASK (VG11_COPYIMAGE + 1) --#define VG11_COPYPIXELS (VG11_COPYMASK + 1) --#define VG11_CREATEFONT (VG11_COPYPIXELS + 1) --#define VG11_CREATEIMAGE (VG11_CREATEFONT + 1) --#define VG11_CREATEMASKLAYER (VG11_CREATEIMAGE + 1) --#define VG11_CREATEPAINT (VG11_CREATEMASKLAYER + 1) --#define VG11_CREATEPATH (VG11_CREATEPAINT + 1) --#define VG11_DESTROYFONT (VG11_CREATEPATH + 1) --#define VG11_DESTROYIMAGE (VG11_DESTROYFONT + 1) --#define VG11_DESTROYMASKLAYER (VG11_DESTROYIMAGE + 1) --#define VG11_DESTROYPAINT (VG11_DESTROYMASKLAYER + 1) --#define VG11_DESTROYPATH (VG11_DESTROYPAINT + 1) --#define VG11_DRAWGLYPH (VG11_DESTROYPATH + 1) --#define VG11_DRAWGLYPHS (VG11_DRAWGLYPH + 1) --#define VG11_DRAWIMAGE (VG11_DRAWGLYPHS + 1) --#define VG11_DRAWPATH (VG11_DRAWIMAGE + 1) --#define VG11_FILLMASKLAYER (VG11_DRAWPATH + 1) --#define VG11_FINISH (VG11_FILLMASKLAYER + 1) --#define VG11_FLUSH (VG11_FINISH + 1) --#define VG11_GAUSSIANBLUR (VG11_FLUSH + 1) --#define VG11_GETCOLOR (VG11_GAUSSIANBLUR + 1) --#define VG11_GETERROR (VG11_GETCOLOR + 1) --#define VG11_GETF (VG11_GETERROR + 1) --#define VG11_GETFV (VG11_GETF + 1) --#define VG11_GETI (VG11_GETFV + 1) --#define VG11_GETIMAGESUBDATA (VG11_GETI + 1) --#define VG11_GETIV (VG11_GETIMAGESUBDATA + 1) --#define VG11_GETMATRIX (VG11_GETIV + 1) --#define VG11_GETPAINT (VG11_GETMATRIX + 1) --#define VG11_GETPARAMETERF (VG11_GETPAINT + 1) --#define VG11_GETPARAMETERFV (VG11_GETPARAMETERF + 1) --#define VG11_GETPARAMETERI (VG11_GETPARAMETERFV + 1) --#define VG11_GETPARAMETERIV (VG11_GETPARAMETERI + 1) --#define VG11_GETPARAMETERVECTORSIZE (VG11_GETPARAMETERIV + 1) --#define VG11_GETPARENT (VG11_GETPARAMETERVECTORSIZE + 1) --#define VG11_GETPATHCAPABILITIES (VG11_GETPARENT + 1) --#define VG11_GETPIXELS (VG11_GETPATHCAPABILITIES + 1) --#define VG11_GETSTRING (VG11_GETPIXELS + 1) --#define VG11_GETVECTORSIZE (VG11_GETSTRING + 1) --#define VG11_HARDWAREQUERY (VG11_GETVECTORSIZE + 1) --#define VG11_IMAGESUBDATA (VG11_HARDWAREQUERY + 1) --#define VG11_INTERPOLATEPATH (VG11_IMAGESUBDATA + 1) --#define VG11_LOADIDENTITY (VG11_INTERPOLATEPATH + 1) --#define VG11_LOADMATRIX (VG11_LOADIDENTITY + 1) --#define VG11_LOOKUP (VG11_LOADMATRIX + 1) --#define VG11_LOOKUPSINGLE (VG11_LOOKUP + 1) --#define VG11_MASK (VG11_LOOKUPSINGLE + 1) --#define VG11_MODIFYPATHCOORDS (VG11_MASK + 1) --#define VG11_MULTMATRIX (VG11_MODIFYPATHCOORDS + 1) --#define VG11_PAINTPATTERN (VG11_MULTMATRIX + 1) --#define VG11_PATHBOUNDS (VG11_PAINTPATTERN + 1) --#define VG11_PATHLENGTH (VG11_PATHBOUNDS + 1) --#define VG11_PATHTRANSFORMEDBOUNDS (VG11_PATHLENGTH + 1) --#define VG11_POINTALONGPATH (VG11_PATHTRANSFORMEDBOUNDS + 1) --#define VG11_READPIXELS (VG11_POINTALONGPATH + 1) --#define VG11_REMOVEPATHCAPABILITIES (VG11_READPIXELS + 1) --#define VG11_RENDERTOMASK (VG11_REMOVEPATHCAPABILITIES + 1) --#define VG11_ROTATE (VG11_RENDERTOMASK + 1) --#define VG11_SCALE (VG11_ROTATE + 1) --#define VG11_SEPARABLECONVOLVE (VG11_SCALE + 1) --#define VG11_SETCOLOR (VG11_SEPARABLECONVOLVE + 1) --#define VG11_SETF (VG11_SETCOLOR + 1) --#define VG11_SETFV (VG11_SETF + 1) --#define VG11_SETGLYPHTOIMAGE (VG11_SETFV + 1) --#define VG11_SETGLYPHTOPATH (VG11_SETGLYPHTOIMAGE + 1) --#define VG11_SETI (VG11_SETGLYPHTOPATH + 1) --#define VG11_SETIV (VG11_SETI + 1) --#define VG11_SETPAINT (VG11_SETIV + 1) --#define VG11_SETPARAMETERF (VG11_SETPAINT + 1) --#define VG11_SETPARAMETERFV (VG11_SETPARAMETERF + 1) --#define VG11_SETPARAMETERI (VG11_SETPARAMETERFV + 1) --#define VG11_SETPARAMETERIV (VG11_SETPARAMETERI + 1) --#define VG11_SETPIXELS (VG11_SETPARAMETERIV + 1) --#define VG11_SHEAR (VG11_SETPIXELS + 1) --#define VG11_TRANSFORMPATH (VG11_SHEAR + 1) --#define VG11_TRANSLATE (VG11_TRANSFORMPATH + 1) --#define VG11_WRITEPIXELS (VG11_TRANSLATE + 1) --#define VG11_CALLS (VG11_WRITEPIXELS + 1) --#define VG11_DRAWCALLS (VG11_CALLS + 1) --#define VG11_STATECHANGECALLS (VG11_DRAWCALLS + 1) --#define VG11_FILLCOUNT (VG11_STATECHANGECALLS + 1) --#define VG11_STROKECOUNT (VG11_FILLCOUNT + 1) -+#define ES11_CALLS 151 -+#define ES11_DRAWCALLS (ES11_CALLS + 1) -+#define ES11_STATECHANGECALLS (ES11_DRAWCALLS + 1) -+#define ES11_POINTCOUNT (ES11_STATECHANGECALLS + 1) -+#define ES11_LINECOUNT (ES11_POINTCOUNT + 1) -+#define ES11_TRIANGLECOUNT (ES11_LINECOUNT + 1) -+ -+#define ES20_CALLS 159 -+#define ES20_DRAWCALLS (ES20_CALLS + 1) -+#define ES20_STATECHANGECALLS (ES20_DRAWCALLS + 1) -+#define ES20_POINTCOUNT (ES20_STATECHANGECALLS + 1) -+#define ES20_LINECOUNT (ES20_POINTCOUNT + 1) -+#define ES20_TRIANGLECOUNT (ES20_LINECOUNT + 1) -+ -+#define VG11_CALLS 88 -+#define VG11_DRAWCALLS (VG11_CALLS + 1) -+#define VG11_STATECHANGECALLS (VG11_DRAWCALLS + 1) -+#define VG11_FILLCOUNT (VG11_STATECHANGECALLS + 1) -+#define VG11_STROKECOUNT (VG11_FILLCOUNT + 1) - /* End of Driver API ID Definitions. */ - - /* HAL & MISC IDs. */ --#define HAL_VERTBUFNEWBYTEALLOC 1 --#define HAL_VERTBUFTOTALBYTEALLOC (HAL_VERTBUFNEWBYTEALLOC + 1) --#define HAL_VERTBUFNEWOBJALLOC (HAL_VERTBUFTOTALBYTEALLOC + 1) --#define HAL_VERTBUFTOTALOBJALLOC (HAL_VERTBUFNEWOBJALLOC + 1) --#define HAL_INDBUFNEWBYTEALLOC (HAL_VERTBUFTOTALOBJALLOC + 1) --#define HAL_INDBUFTOTALBYTEALLOC (HAL_INDBUFNEWBYTEALLOC + 1) --#define HAL_INDBUFNEWOBJALLOC (HAL_INDBUFTOTALBYTEALLOC + 1) --#define HAL_INDBUFTOTALOBJALLOC (HAL_INDBUFNEWOBJALLOC + 1) --#define HAL_TEXBUFNEWBYTEALLOC (HAL_INDBUFTOTALOBJALLOC + 1) --#define HAL_TEXBUFTOTALBYTEALLOC (HAL_TEXBUFNEWBYTEALLOC + 1) --#define HAL_TEXBUFNEWOBJALLOC (HAL_TEXBUFTOTALBYTEALLOC + 1) --#define HAL_TEXBUFTOTALOBJALLOC (HAL_TEXBUFNEWOBJALLOC + 1) -- --#define GPU_CYCLES 1 --#define GPU_READ64BYTE (GPU_CYCLES + 1) --#define GPU_WRITE64BYTE (GPU_READ64BYTE + 1) --#define GPU_TOTALCYCLES (GPU_WRITE64BYTE + 1) --#define GPU_IDLECYCLES (GPU_TOTALCYCLES + 1) -- --#define VS_INSTCOUNT 1 --#define VS_BRANCHINSTCOUNT (VS_INSTCOUNT + 1) --#define VS_TEXLDINSTCOUNT (VS_BRANCHINSTCOUNT + 1) --#define VS_RENDEREDVERTCOUNT (VS_TEXLDINSTCOUNT + 1) -- --#define PS_INSTCOUNT 1 --#define PS_BRANCHINSTCOUNT (PS_INSTCOUNT + 1) --#define PS_TEXLDINSTCOUNT (PS_BRANCHINSTCOUNT + 1) --#define PS_RENDEREDPIXCOUNT (PS_TEXLDINSTCOUNT + 1) -- --#define PA_INVERTCOUNT 1 --#define PA_INPRIMCOUNT (PA_INVERTCOUNT + 1) --#define PA_OUTPRIMCOUNT (PA_INPRIMCOUNT + 1) --#define PA_DEPTHCLIPCOUNT (PA_OUTPRIMCOUNT + 1) --#define PA_TRIVIALREJCOUNT (PA_DEPTHCLIPCOUNT + 1) --#define PA_CULLCOUNT (PA_TRIVIALREJCOUNT + 1) -- --#define SE_TRIANGLECOUNT 1 --#define SE_LINECOUNT (SE_TRIANGLECOUNT + 1) -- --#define RA_VALIDPIXCOUNT 1 --#define RA_TOTALQUADCOUNT (RA_VALIDPIXCOUNT + 1) --#define RA_VALIDQUADCOUNTEZ (RA_TOTALQUADCOUNT + 1) --#define RA_TOTALPRIMCOUNT (RA_VALIDQUADCOUNTEZ + 1) --#define RA_PIPECACHEMISSCOUNT (RA_TOTALPRIMCOUNT + 1) --#define RA_PREFCACHEMISSCOUNT (RA_PIPECACHEMISSCOUNT + 1) --#define RA_EEZCULLCOUNT (RA_PREFCACHEMISSCOUNT + 1) -- --#define TX_TOTBILINEARREQ 1 --#define TX_TOTTRILINEARREQ (TX_TOTBILINEARREQ + 1) --#define TX_TOTDISCARDTEXREQ (TX_TOTTRILINEARREQ + 1) --#define TX_TOTTEXREQ (TX_TOTDISCARDTEXREQ + 1) --#define TX_MEMREADCOUNT (TX_TOTTEXREQ + 1) --#define TX_MEMREADIN8BCOUNT (TX_MEMREADCOUNT + 1) --#define TX_CACHEMISSCOUNT (TX_MEMREADIN8BCOUNT + 1) --#define TX_CACHEHITTEXELCOUNT (TX_CACHEMISSCOUNT + 1) --#define TX_CACHEMISSTEXELCOUNT (TX_CACHEHITTEXELCOUNT + 1) -- --#define PE_KILLEDBYCOLOR 1 --#define PE_KILLEDBYDEPTH (PE_KILLEDBYCOLOR + 1) --#define PE_DRAWNBYCOLOR (PE_KILLEDBYDEPTH + 1) --#define PE_DRAWNBYDEPTH (PE_DRAWNBYCOLOR + 1) -- --#define MC_READREQ8BPIPE 1 --#define MC_READREQ8BIP (MC_READREQ8BPIPE + 1) --#define MC_WRITEREQ8BPIPE (MC_READREQ8BIP + 1) -- --#define AXI_READREQSTALLED 1 --#define AXI_WRITEREQSTALLED (AXI_READREQSTALLED + 1) --#define AXI_WRITEDATASTALLED (AXI_WRITEREQSTALLED + 1) -- --#define PVS_INSTRCOUNT 1 --#define PVS_ALUINSTRCOUNT (PVS_INSTRCOUNT + 1) --#define PVS_TEXINSTRCOUNT (PVS_ALUINSTRCOUNT + 1) --#define PVS_ATTRIBCOUNT (PVS_TEXINSTRCOUNT + 1) --#define PVS_UNIFORMCOUNT (PVS_ATTRIBCOUNT + 1) --#define PVS_FUNCTIONCOUNT (PVS_UNIFORMCOUNT + 1) -- --#define PPS_INSTRCOUNT 1 --#define PPS_ALUINSTRCOUNT (PPS_INSTRCOUNT + 1) --#define PPS_TEXINSTRCOUNT (PPS_ALUINSTRCOUNT + 1) --#define PPS_ATTRIBCOUNT (PPS_TEXINSTRCOUNT + 1) --#define PPS_UNIFORMCOUNT (PPS_ATTRIBCOUNT + 1) --#define PPS_FUNCTIONCOUNT (PPS_UNIFORMCOUNT + 1) -+#define HAL_VERTBUFNEWBYTEALLOC 1 -+#define HAL_VERTBUFTOTALBYTEALLOC (HAL_VERTBUFNEWBYTEALLOC + 1) -+#define HAL_VERTBUFNEWOBJALLOC (HAL_VERTBUFTOTALBYTEALLOC + 1) -+#define HAL_VERTBUFTOTALOBJALLOC (HAL_VERTBUFNEWOBJALLOC + 1) -+#define HAL_INDBUFNEWBYTEALLOC (HAL_VERTBUFTOTALOBJALLOC + 1) -+#define HAL_INDBUFTOTALBYTEALLOC (HAL_INDBUFNEWBYTEALLOC + 1) -+#define HAL_INDBUFNEWOBJALLOC (HAL_INDBUFTOTALBYTEALLOC + 1) -+#define HAL_INDBUFTOTALOBJALLOC (HAL_INDBUFNEWOBJALLOC + 1) -+#define HAL_TEXBUFNEWBYTEALLOC (HAL_INDBUFTOTALOBJALLOC + 1) -+#define HAL_TEXBUFTOTALBYTEALLOC (HAL_TEXBUFNEWBYTEALLOC + 1) -+#define HAL_TEXBUFNEWOBJALLOC (HAL_TEXBUFTOTALBYTEALLOC + 1) -+#define HAL_TEXBUFTOTALOBJALLOC (HAL_TEXBUFNEWOBJALLOC + 1) -+ -+#define GPU_CYCLES 1 -+#define GPU_READ64BYTE (GPU_CYCLES + 1) -+#define GPU_WRITE64BYTE (GPU_READ64BYTE + 1) -+#define GPU_TOTALCYCLES (GPU_WRITE64BYTE + 1) -+#define GPU_IDLECYCLES (GPU_TOTALCYCLES + 1) -+ -+#define VS_INSTCOUNT 1 -+#define VS_BRANCHINSTCOUNT (VS_INSTCOUNT + 1) -+#define VS_TEXLDINSTCOUNT (VS_BRANCHINSTCOUNT + 1) -+#define VS_RENDEREDVERTCOUNT (VS_TEXLDINSTCOUNT + 1) -+#define VS_SOURCE (VS_RENDEREDVERTCOUNT + 1) -+ -+#define PS_INSTCOUNT 1 -+#define PS_BRANCHINSTCOUNT (PS_INSTCOUNT + 1) -+#define PS_TEXLDINSTCOUNT (PS_BRANCHINSTCOUNT + 1) -+#define PS_RENDEREDPIXCOUNT (PS_TEXLDINSTCOUNT + 1) -+#define PS_SOURCE (PS_RENDEREDPIXCOUNT + 1) -+ -+#define PA_INVERTCOUNT 1 -+#define PA_INPRIMCOUNT (PA_INVERTCOUNT + 1) -+#define PA_OUTPRIMCOUNT (PA_INPRIMCOUNT + 1) -+#define PA_DEPTHCLIPCOUNT (PA_OUTPRIMCOUNT + 1) -+#define PA_TRIVIALREJCOUNT (PA_DEPTHCLIPCOUNT + 1) -+#define PA_CULLCOUNT (PA_TRIVIALREJCOUNT + 1) -+ -+#define SE_TRIANGLECOUNT 1 -+#define SE_LINECOUNT (SE_TRIANGLECOUNT + 1) -+ -+#define RA_VALIDPIXCOUNT 1 -+#define RA_TOTALQUADCOUNT (RA_VALIDPIXCOUNT + 1) -+#define RA_VALIDQUADCOUNTEZ (RA_TOTALQUADCOUNT + 1) -+#define RA_TOTALPRIMCOUNT (RA_VALIDQUADCOUNTEZ + 1) -+#define RA_PIPECACHEMISSCOUNT (RA_TOTALPRIMCOUNT + 1) -+#define RA_PREFCACHEMISSCOUNT (RA_PIPECACHEMISSCOUNT + 1) -+#define RA_EEZCULLCOUNT (RA_PREFCACHEMISSCOUNT + 1) -+ -+#define TX_TOTBILINEARREQ 1 -+#define TX_TOTTRILINEARREQ (TX_TOTBILINEARREQ + 1) -+#define TX_TOTDISCARDTEXREQ (TX_TOTTRILINEARREQ + 1) -+#define TX_TOTTEXREQ (TX_TOTDISCARDTEXREQ + 1) -+#define TX_MEMREADCOUNT (TX_TOTTEXREQ + 1) -+#define TX_MEMREADIN8BCOUNT (TX_MEMREADCOUNT + 1) -+#define TX_CACHEMISSCOUNT (TX_MEMREADIN8BCOUNT + 1) -+#define TX_CACHEHITTEXELCOUNT (TX_CACHEMISSCOUNT + 1) -+#define TX_CACHEMISSTEXELCOUNT (TX_CACHEHITTEXELCOUNT + 1) -+ -+#define PE_KILLEDBYCOLOR 1 -+#define PE_KILLEDBYDEPTH (PE_KILLEDBYCOLOR + 1) -+#define PE_DRAWNBYCOLOR (PE_KILLEDBYDEPTH + 1) -+#define PE_DRAWNBYDEPTH (PE_DRAWNBYCOLOR + 1) -+ -+#define MC_READREQ8BPIPE 1 -+#define MC_READREQ8BIP (MC_READREQ8BPIPE + 1) -+#define MC_WRITEREQ8BPIPE (MC_READREQ8BIP + 1) -+ -+#define AXI_READREQSTALLED 1 -+#define AXI_WRITEREQSTALLED (AXI_READREQSTALLED + 1) -+#define AXI_WRITEDATASTALLED (AXI_WRITEREQSTALLED + 1) -+ -+#define PVS_INSTRCOUNT 1 -+#define PVS_ALUINSTRCOUNT (PVS_INSTRCOUNT + 1) -+#define PVS_TEXINSTRCOUNT (PVS_ALUINSTRCOUNT + 1) -+#define PVS_ATTRIBCOUNT (PVS_TEXINSTRCOUNT + 1) -+#define PVS_UNIFORMCOUNT (PVS_ATTRIBCOUNT + 1) -+#define PVS_FUNCTIONCOUNT (PVS_UNIFORMCOUNT + 1) -+#define PVS_SOURCE (PVS_FUNCTIONCOUNT + 1) -+ -+#define PPS_INSTRCOUNT 1 -+#define PPS_ALUINSTRCOUNT (PPS_INSTRCOUNT + 1) -+#define PPS_TEXINSTRCOUNT (PPS_ALUINSTRCOUNT + 1) -+#define PPS_ATTRIBCOUNT (PPS_TEXINSTRCOUNT + 1) -+#define PPS_UNIFORMCOUNT (PPS_ATTRIBCOUNT + 1) -+#define PPS_FUNCTIONCOUNT (PPS_UNIFORMCOUNT + 1) -+#define PPS_SOURCE (PPS_FUNCTIONCOUNT + 1) - /* End of MISC Counter IDs. */ - - #ifdef gcdNEW_PROFILER_FILE -@@ -578,8 +184,8 @@ extern "C" { - #define VPG_ES11_TIME 0x170000 - #define VPG_ES20_TIME 0x180000 - #define VPG_FRAME 0x190000 --#define VPG_ES11_DRAW 0x200000 --#define VPG_ES20_DRAW 0x210000 -+#define VPG_ES11_DRAW 0x200000 -+#define VPG_ES20_DRAW 0x210000 - #define VPG_END 0xff0000 - - /* Info. */ -@@ -592,7 +198,7 @@ extern "C" { - #define VPC_INFOSCREENSIZE (VPC_INFODRIVERMODE + 1) - - /* Counter Constants. */ --#define VPC_ELAPSETIME (VPG_TIME + 1) -+#define VPC_ELAPSETIME (VPG_TIME + 1) - #define VPC_CPUTIME (VPC_ELAPSETIME + 1) - - #define VPC_MEMMAXRES (VPG_MEM + 1) -@@ -600,404 +206,28 @@ extern "C" { - #define VPC_MEMUNSHAREDDATA (VPC_MEMSHARED + 1) - #define VPC_MEMUNSHAREDSTACK (VPC_MEMUNSHAREDDATA + 1) - --/* OpenGL ES11 Counters. */ --#define VPC_ES11ACTIVETEXTURE (VPG_ES11 + ES11_ACTIVETEXTURE) --#define VPC_ES11ALPHAFUNC (VPG_ES11 + ES11_ALPHAFUNC) --#define VPC_ES11ALPHAFUNCX (VPG_ES11 + ES11_ALPHAFUNCX) --#define VPC_ES11BINDBUFFER (VPG_ES11 + ES11_BINDBUFFER) --#define VPC_ES11BINDTEXTURE (VPG_ES11 + ES11_BINDTEXTURE) --#define VPC_ES11BLENDFUNC (VPG_ES11 + ES11_BLENDFUNC) --#define VPC_ES11BUFFERDATA (VPG_ES11 + ES11_BUFFERDATA) --#define VPC_ES11BUFFERSUBDATA (VPG_ES11 + ES11_BUFFERSUBDATA) --#define VPC_ES11CLEAR (VPG_ES11 + ES11_CLEAR) --#define VPC_ES11CLEARCOLOR (VPG_ES11 + ES11_CLEARCOLOR) --#define VPC_ES11CLEARCOLORX (VPG_ES11 + ES11_CLEARCOLORX) --#define VPC_ES11CLEARDEPTHF (VPG_ES11 + ES11_CLEARDEPTHF) --#define VPC_ES11CLEARDEPTHX (VPG_ES11 + ES11_CLEARDEPTHX) --#define VPC_ES11CLEARSTENCIL (VPG_ES11 + ES11_CLEARSTENCIL) --#define VPC_ES11CLIENTACTIVETEXTURE (VPG_ES11 + ES11_CLIENTACTIVETEXTURE) --#define VPC_ES11CLIPPLANEF (VPG_ES11 + ES11_CLIPPLANEF) --#define VPC_ES11CLIPPLANEX (VPG_ES11 + ES11_CLIPPLANEX) --#define VPC_ES11COLOR4F (VPG_ES11 + ES11_COLOR4F) --#define VPC_ES11COLOR4UB (VPG_ES11 + ES11_COLOR4UB) --#define VPC_ES11COLOR4X (VPG_ES11 + ES11_COLOR4X) --#define VPC_ES11COLORMASK (VPG_ES11 + ES11_COLORMASK) --#define VPC_ES11COLORPOINTER (VPG_ES11 + ES11_COLORPOINTER) --#define VPC_ES11COMPRESSEDTEXIMAGE2D (VPG_ES11 + ES11_COMPRESSEDTEXIMAGE2D) --#define VPC_ES11COMPRESSEDTEXSUBIMAGE2D (VPG_ES11 + ES11_COMPRESSEDTEXSUBIMAGE2D) --#define VPC_ES11COPYTEXIMAGE2D (VPG_ES11 + ES11_COPYTEXIMAGE2D) --#define VPC_ES11COPYTEXSUBIMAGE2D (VPG_ES11 + ES11_COPYTEXSUBIMAGE2D) --#define VPC_ES11CULLFACE (VPG_ES11 + ES11_CULLFACE) --#define VPC_ES11DELETEBUFFERS (VPG_ES11 + ES11_DELETEBUFFERS) --#define VPC_ES11DELETETEXTURES (VPG_ES11 + ES11_DELETETEXTURES) --#define VPC_ES11DEPTHFUNC (VPG_ES11 + ES11_DEPTHFUNC) --#define VPC_ES11DEPTHMASK (VPG_ES11 + ES11_DEPTHMASK) --#define VPC_ES11DEPTHRANGEF (VPG_ES11 + ES11_DEPTHRANGEF) --#define VPC_ES11DEPTHRANGEX (VPG_ES11 + ES11_DEPTHRANGEX) --#define VPC_ES11DISABLE (VPG_ES11 + ES11_DISABLE) --#define VPC_ES11DISABLECLIENTSTATE (VPG_ES11 + ES11_DISABLECLIENTSTATE) --#define VPC_ES11DRAWARRAYS (VPG_ES11 + ES11_DRAWARRAYS) --#define VPC_ES11DRAWELEMENTS (VPG_ES11 + ES11_DRAWELEMENTS) --#define VPC_ES11ENABLE (VPG_ES11 + ES11_ENABLE) --#define VPC_ES11ENABLECLIENTSTATE (VPG_ES11 + ES11_ENABLECLIENTSTATE) --#define VPC_ES11FINISH (VPG_ES11 + ES11_FINISH) --#define VPC_ES11FLUSH (VPG_ES11 + ES11_FLUSH) --#define VPC_ES11FOGF (VPG_ES11 + ES11_FOGF) --#define VPC_ES11FOGFV (VPG_ES11 + ES11_FOGFV) --#define VPC_ES11FOGX (VPG_ES11 + ES11_FOGX) --#define VPC_ES11FOGXV (VPG_ES11 + ES11_FOGXV) --#define VPC_ES11FRONTFACE (VPG_ES11 + ES11_FRONTFACE) --#define VPC_ES11FRUSTUMF (VPG_ES11 + ES11_FRUSTUMF) --#define VPC_ES11FRUSTUMX (VPG_ES11 + ES11_FRUSTUMX) --#define VPC_ES11GENBUFFERS (VPG_ES11 + ES11_GENBUFFERS) --#define VPC_ES11GENTEXTURES (VPG_ES11 + ES11_GENTEXTURES) --#define VPC_ES11GETBOOLEANV (VPG_ES11 + ES11_GETBOOLEANV) --#define VPC_ES11GETBUFFERPARAMETERIV (VPG_ES11 + ES11_GETBUFFERPARAMETERIV) --#define VPC_ES11GETCLIPPLANEF (VPG_ES11 + ES11_GETCLIPPLANEF) --#define VPC_ES11GETCLIPPLANEX (VPG_ES11 + ES11_GETCLIPPLANEX) --#define VPC_ES11GETERROR (VPG_ES11 + ES11_GETERROR) --#define VPC_ES11GETFIXEDV (VPG_ES11 + ES11_GETFIXEDV) --#define VPC_ES11GETFLOATV (VPG_ES11 + ES11_GETFLOATV) --#define VPC_ES11GETINTEGERV (VPG_ES11 + ES11_GETINTEGERV) --#define VPC_ES11GETLIGHTFV (VPG_ES11 + ES11_GETLIGHTFV) --#define VPC_ES11GETLIGHTXV (VPG_ES11 + ES11_GETLIGHTXV) --#define VPC_ES11GETMATERIALFV (VPG_ES11 + ES11_GETMATERIALFV) --#define VPC_ES11GETMATERIALXV (VPG_ES11 + ES11_GETMATERIALXV) --#define VPC_ES11GETPOINTERV (VPG_ES11 + ES11_GETPOINTERV) --#define VPC_ES11GETSTRING (VPG_ES11 + ES11_GETSTRING) --#define VPC_ES11GETTEXENVFV (VPG_ES11 + ES11_GETTEXENVFV) --#define VPC_ES11GETTEXENVIV (VPG_ES11 + ES11_GETTEXENVIV) --#define VPC_ES11GETTEXENVXV (VPG_ES11 + ES11_GETTEXENVXV) --#define VPC_ES11GETTEXPARAMETERFV (VPG_ES11 + ES11_GETTEXPARAMETERFV) --#define VPC_ES11GETTEXPARAMETERIV (VPG_ES11 + ES11_GETTEXPARAMETERIV) --#define VPC_ES11GETTEXPARAMETERXV (VPG_ES11 + ES11_GETTEXPARAMETERXV) --#define VPC_ES11HINT (VPG_ES11 + ES11_HINT) --#define VPC_ES11ISBUFFER (VPG_ES11 + ES11_ISBUFFER) --#define VPC_ES11ISENABLED (VPG_ES11 + ES11_ISENABLED) --#define VPC_ES11ISTEXTURE (VPG_ES11 + ES11_ISTEXTURE) --#define VPC_ES11LIGHTF (VPG_ES11 + ES11_LIGHTF) --#define VPC_ES11LIGHTFV (VPG_ES11 + ES11_LIGHTFV) --#define VPC_ES11LIGHTMODELF (VPG_ES11 + ES11_LIGHTMODELF) --#define VPC_ES11LIGHTMODELFV (VPG_ES11 + ES11_LIGHTMODELFV) --#define VPC_ES11LIGHTMODELX (VPG_ES11 + ES11_LIGHTMODELX) --#define VPC_ES11LIGHTMODELXV (VPG_ES11 + ES11_LIGHTMODELXV) --#define VPC_ES11LIGHTX (VPG_ES11 + ES11_LIGHTX) --#define VPC_ES11LIGHTXV (VPG_ES11 + ES11_LIGHTXV) --#define VPC_ES11LINEWIDTH (VPG_ES11 + ES11_LINEWIDTH) --#define VPC_ES11LINEWIDTHX (VPG_ES11 + ES11_LINEWIDTHX) --#define VPC_ES11LOADIDENTITY (VPG_ES11 + ES11_LOADIDENTITY) --#define VPC_ES11LOADMATRIXF (VPG_ES11 + ES11_LOADMATRIXF) --#define VPC_ES11LOADMATRIXX (VPG_ES11 + ES11_LOADMATRIXX) --#define VPC_ES11LOGICOP (VPG_ES11 + ES11_LOGICOP) --#define VPC_ES11MATERIALF (VPG_ES11 + ES11_MATERIALF) --#define VPC_ES11MATERIALFV (VPG_ES11 + ES11_MATERIALFV) --#define VPC_ES11MATERIALX (VPG_ES11 + ES11_MATERIALX) --#define VPC_ES11MATERIALXV (VPG_ES11 + ES11_MATERIALXV) --#define VPC_ES11MATRIXMODE (VPG_ES11 + ES11_MATRIXMODE) --#define VPC_ES11MULTITEXCOORD4F (VPG_ES11 + ES11_MULTITEXCOORD4F) --#define VPC_ES11MULTITEXCOORD4X (VPG_ES11 + ES11_MULTITEXCOORD4X) --#define VPC_ES11MULTMATRIXF (VPG_ES11 + ES11_MULTMATRIXF) --#define VPC_ES11MULTMATRIXX (VPG_ES11 + ES11_MULTMATRIXX) --#define VPC_ES11NORMAL3F (VPG_ES11 + ES11_NORMAL3F) --#define VPC_ES11NORMAL3X (VPG_ES11 + ES11_NORMAL3X) --#define VPC_ES11NORMALPOINTER (VPG_ES11 + ES11_NORMALPOINTER) --#define VPC_ES11ORTHOF (VPG_ES11 + ES11_ORTHOF) --#define VPC_ES11ORTHOX (VPG_ES11 + ES11_ORTHOX) --#define VPC_ES11PIXELSTOREI (VPG_ES11 + ES11_PIXELSTOREI) --#define VPC_ES11POINTPARAMETERF (VPG_ES11 + ES11_POINTPARAMETERF) --#define VPC_ES11POINTPARAMETERFV (VPG_ES11 + ES11_POINTPARAMETERFV) --#define VPC_ES11POINTPARAMETERX (VPG_ES11 + ES11_POINTPARAMETERX) --#define VPC_ES11POINTPARAMETERXV (VPG_ES11 + ES11_POINTPARAMETERXV) --#define VPC_ES11POINTSIZE (VPG_ES11 + ES11_POINTSIZE) --#define VPC_ES11POINTSIZEX (VPG_ES11 + ES11_POINTSIZEX) --#define VPC_ES11POLYGONOFFSET (VPG_ES11 + ES11_POLYGONOFFSET) --#define VPC_ES11POLYGONOFFSETX (VPG_ES11 + ES11_POLYGONOFFSETX) --#define VPC_ES11POPMATRIX (VPG_ES11 + ES11_POPMATRIX) --#define VPC_ES11PUSHMATRIX (VPG_ES11 + ES11_PUSHMATRIX) --#define VPC_ES11READPIXELS (VPG_ES11 + ES11_READPIXELS) --#define VPC_ES11ROTATEF (VPG_ES11 + ES11_ROTATEF) --#define VPC_ES11ROTATEX (VPG_ES11 + ES11_ROTATEX) --#define VPC_ES11SAMPLECOVERAGE (VPG_ES11 + ES11_SAMPLECOVERAGE) --#define VPC_ES11SAMPLECOVERAGEX (VPG_ES11 + ES11_SAMPLECOVERAGEX) --#define VPC_ES11SCALEF (VPG_ES11 + ES11_SCALEF) --#define VPC_ES11SCALEX (VPG_ES11 + ES11_SCALEX) --#define VPC_ES11SCISSOR (VPG_ES11 + ES11_SCISSOR) --#define VPC_ES11SHADEMODEL (VPG_ES11 + ES11_SHADEMODEL) --#define VPC_ES11STENCILFUNC (VPG_ES11 + ES11_STENCILFUNC) --#define VPC_ES11STENCILMASK (VPG_ES11 + ES11_STENCILMASK) --#define VPC_ES11STENCILOP (VPG_ES11 + ES11_STENCILOP) --#define VPC_ES11TEXCOORDPOINTER (VPG_ES11 + ES11_TEXCOORDPOINTER) --#define VPC_ES11TEXENVF (VPG_ES11 + ES11_TEXENVF) --#define VPC_ES11TEXENVFV (VPG_ES11 + ES11_TEXENVFV) --#define VPC_ES11TEXENVI (VPG_ES11 + ES11_TEXENVI) --#define VPC_ES11TEXENVIV (VPG_ES11 + ES11_TEXENVIV) --#define VPC_ES11TEXENVX (VPG_ES11 + ES11_TEXENVX) --#define VPC_ES11TEXENVXV (VPG_ES11 + ES11_TEXENVXV) --#define VPC_ES11TEXIMAGE2D (VPG_ES11 + ES11_TEXIMAGE2D) --#define VPC_ES11TEXPARAMETERF (VPG_ES11 + ES11_TEXPARAMETERF) --#define VPC_ES11TEXPARAMETERFV (VPG_ES11 + ES11_TEXPARAMETERFV) --#define VPC_ES11TEXPARAMETERI (VPG_ES11 + ES11_TEXPARAMETERI) --#define VPC_ES11TEXPARAMETERIV (VPG_ES11 + ES11_TEXPARAMETERIV) --#define VPC_ES11TEXPARAMETERX (VPG_ES11 + ES11_TEXPARAMETERX) --#define VPC_ES11TEXPARAMETERXV (VPG_ES11 + ES11_TEXPARAMETERXV) --#define VPC_ES11TEXSUBIMAGE2D (VPG_ES11 + ES11_TEXSUBIMAGE2D) --#define VPC_ES11TRANSLATEF (VPG_ES11 + ES11_TRANSLATEF) --#define VPC_ES11TRANSLATEX (VPG_ES11 + ES11_TRANSLATEX) --#define VPC_ES11VERTEXPOINTER (VPG_ES11 + ES11_VERTEXPOINTER) --#define VPC_ES11VIEWPORT (VPG_ES11 + ES11_VIEWPORT) - /* OpenGL ES11 Statics Counter IDs. */ --#define VPC_ES11CALLS (VPG_ES11 + ES11_CALLS) --#define VPC_ES11DRAWCALLS (VPG_ES11 + ES11_DRAWCALLS) --#define VPC_ES11STATECHANGECALLS (VPG_ES11 + ES11_STATECHANGECALLS) --#define VPC_ES11POINTCOUNT (VPG_ES11 + ES11_POINTCOUNT) --#define VPC_ES11LINECOUNT (VPG_ES11 + ES11_LINECOUNT) --#define VPC_ES11TRIANGLECOUNT (VPG_ES11 + ES11_TRIANGLECOUNT) -- --/* OpenGLES 2.x */ --#define VPC_ES20ACTIVETEXTURE (VPG_ES20 + ES20_ACTIVETEXTURE) --#define VPC_ES20ATTACHSHADER (VPG_ES20 + ES20_ATTACHSHADER) --#define VPC_ES20BINDATTRIBLOCATION (VPG_ES20 + ES20_BINDATTRIBLOCATION) --#define VPC_ES20BINDBUFFER (VPG_ES20 + ES20_BINDBUFFER) --#define VPC_ES20BINDFRAMEBUFFER (VPG_ES20 + ES20_BINDFRAMEBUFFER) --#define VPC_ES20BINDRENDERBUFFER (VPG_ES20 + ES20_BINDRENDERBUFFER) --#define VPC_ES20BINDTEXTURE (VPG_ES20 + ES20_BINDTEXTURE) --#define VPC_ES20BLENDCOLOR (VPG_ES20 + ES20_BLENDCOLOR) --#define VPC_ES20BLENDEQUATION (VPG_ES20 + ES20_BLENDEQUATION) --#define VPC_ES20BLENDEQUATIONSEPARATE (VPG_ES20 + ES20_BLENDEQUATIONSEPARATE) --#define VPC_ES20BLENDFUNC (VPG_ES20 + ES20_BLENDFUNC) --#define VPC_ES20BLENDFUNCSEPARATE (VPG_ES20 + ES20_BLENDFUNCSEPARATE) --#define VPC_ES20BUFFERDATA (VPG_ES20 + ES20_BUFFERDATA) --#define VPC_ES20BUFFERSUBDATA (VPG_ES20 + ES20_BUFFERSUBDATA) --#define VPC_ES20CHECKFRAMEBUFFERSTATUS (VPG_ES20 + ES20_CHECKFRAMEBUFFERSTATUS) --#define VPC_ES20CLEAR (VPG_ES20 + ES20_CLEAR) --#define VPC_ES20CLEARCOLOR (VPG_ES20 + ES20_CLEARCOLOR) --#define VPC_ES20CLEARDEPTHF (VPG_ES20 + ES20_CLEARDEPTHF) --#define VPC_ES20CLEARSTENCIL (VPG_ES20 + ES20_CLEARSTENCIL) --#define VPC_ES20COLORMASK (VPG_ES20 + ES20_COLORMASK) --#define VPC_ES20COMPILESHADER (VPG_ES20 + ES20_COMPILESHADER) --#define VPC_ES20COMPRESSEDTEXIMAGE2D (VPG_ES20 + ES20_COMPRESSEDTEXIMAGE2D) --#define VPC_ES20COMPRESSEDTEXSUBIMAGE2D (VPG_ES20 + ES20_COMPRESSEDTEXSUBIMAGE2D) --#define VPC_ES20COPYTEXIMAGE2D (VPG_ES20 + ES20_COPYTEXIMAGE2D) --#define VPC_ES20COPYTEXSUBIMAGE2D (VPG_ES20 + ES20_COPYTEXSUBIMAGE2D) --#define VPC_ES20CREATEPROGRAM (VPG_ES20 + ES20_CREATEPROGRAM) --#define VPC_ES20CREATESHADER (VPG_ES20 + ES20_CREATESHADER) --#define VPC_ES20CULLFACE (VPG_ES20 + ES20_CULLFACE) --#define VPC_ES20DELETEBUFFERS (VPG_ES20 + ES20_DELETEBUFFERS) --#define VPC_ES20DELETEFRAMEBUFFERS (VPG_ES20 + ES20_DELETEFRAMEBUFFERS) --#define VPC_ES20DELETEPROGRAM (VPG_ES20 + ES20_DELETEPROGRAM) --#define VPC_ES20DELETERENDERBUFFERS (VPG_ES20 + ES20_DELETERENDERBUFFERS) --#define VPC_ES20DELETESHADER (VPG_ES20 + ES20_DELETESHADER) --#define VPC_ES20DELETETEXTURES (VPG_ES20 + ES20_DELETETEXTURES) --#define VPC_ES20DEPTHFUNC (VPG_ES20 + ES20_DEPTHFUNC) --#define VPC_ES20DEPTHMASK (VPG_ES20 + ES20_DEPTHMASK) --#define VPC_ES20DEPTHRANGEF (VPG_ES20 + ES20_DEPTHRANGEF) --#define VPC_ES20DETACHSHADER (VPG_ES20 + ES20_DETACHSHADER) --#define VPC_ES20DISABLE (VPG_ES20 + ES20_DISABLE) --#define VPC_ES20DISABLEVERTEXATTRIBARRAY (VPG_ES20 + ES20_DISABLEVERTEXATTRIBARRAY) --#define VPC_ES20DRAWARRAYS (VPG_ES20 + ES20_DRAWARRAYS) --#define VPC_ES20DRAWELEMENTS (VPG_ES20 + ES20_DRAWELEMENTS) --#define VPC_ES20ENABLE (VPG_ES20 + ES20_ENABLE) --#define VPC_ES20ENABLEVERTEXATTRIBARRAY (VPG_ES20 + ES20_ENABLEVERTEXATTRIBARRAY) --#define VPC_ES20FINISH (VPG_ES20 + ES20_FINISH) --#define VPC_ES20FLUSH (VPG_ES20 + ES20_FLUSH) --#define VPC_ES20FRAMEBUFFERRENDERBUFFER (VPG_ES20 + ES20_FRAMEBUFFERRENDERBUFFER) --#define VPC_ES20FRAMEBUFFERTEXTURE2D (VPG_ES20 + ES20_FRAMEBUFFERTEXTURE2D) --#define VPC_ES20FRONTFACE (VPG_ES20 + ES20_FRONTFACE) --#define VPC_ES20GENBUFFERS (VPG_ES20 + ES20_GENBUFFERS) --#define VPC_ES20GENERATEMIPMAP (VPG_ES20 + ES20_GENERATEMIPMAP) --#define VPC_ES20GENFRAMEBUFFERS (VPG_ES20 + ES20_GENFRAMEBUFFERS) --#define VPC_ES20GENRENDERBUFFERS (VPG_ES20 + ES20_GENRENDERBUFFERS) --#define VPC_ES20GENTEXTURES (VPG_ES20 + ES20_GENTEXTURES) --#define VPC_ES20GETACTIVEATTRIB (VPG_ES20 + ES20_GETACTIVEATTRIB) --#define VPC_ES20GETACTIVEUNIFORM (VPG_ES20 + ES20_GETACTIVEUNIFORM) --#define VPC_ES20GETATTACHEDSHADERS (VPG_ES20 + ES20_GETATTACHEDSHADERS) --#define VPC_ES20GETATTRIBLOCATION (VPG_ES20 + ES20_GETATTRIBLOCATION) --#define VPC_ES20GETBOOLEANV (VPG_ES20 + ES20_GETBOOLEANV) --#define VPC_ES20GETBUFFERPARAMETERIV (VPG_ES20 + ES20_GETBUFFERPARAMETERIV) --#define VPC_ES20GETERROR (VPG_ES20 + ES20_GETERROR) --#define VPC_ES20GETFLOATV (VPG_ES20 + ES20_GETFLOATV) --#define VPC_ES20GETFRAMEBUFFERATTACHMENTPARAMETERIV (VPG_ES20 + ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV) --#define VPC_ES20GETINTEGERV (VPG_ES20 + ES20_GETINTEGERV) --#define VPC_ES20GETPROGRAMIV (VPG_ES20 + ES20_GETPROGRAMIV) --#define VPC_ES20GETPROGRAMINFOLOG (VPG_ES20 + ES20_GETPROGRAMINFOLOG) --#define VPC_ES20GETRENDERBUFFERPARAMETERIV (VPG_ES20 + ES20_GETRENDERBUFFERPARAMETERIV) --#define VPC_ES20GETSHADERIV (VPG_ES20 + ES20_GETSHADERIV) --#define VPC_ES20GETSHADERINFOLOG (VPG_ES20 + ES20_GETSHADERINFOLOG) --#define VPC_ES20GETSHADERPRECISIONFORMAT (VPG_ES20 + ES20_GETSHADERPRECISIONFORMAT) --#define VPC_ES20GETSHADERSOURCE (VPG_ES20 + ES20_GETSHADERSOURCE) --#define VPC_ES20GETSTRING (VPG_ES20 + ES20_GETSTRING) --#define VPC_ES20GETTEXPARAMETERFV (VPG_ES20 + ES20_GETTEXPARAMETERFV) --#define VPC_ES20GETTEXPARAMETERIV (VPG_ES20 + ES20_GETTEXPARAMETERIV) --#define VPC_ES20GETUNIFORMFV (VPG_ES20 + ES20_GETUNIFORMFV) --#define VPC_ES20GETUNIFORMIV (VPG_ES20 + ES20_GETUNIFORMIV) --#define VPC_ES20GETUNIFORMLOCATION (VPG_ES20 + ES20_GETUNIFORMLOCATION) --#define VPC_ES20GETVERTEXATTRIBFV (VPG_ES20 + ES20_GETVERTEXATTRIBFV) --#define VPC_ES20GETVERTEXATTRIBIV (VPG_ES20 + ES20_GETVERTEXATTRIBIV) --#define VPC_ES20GETVERTEXATTRIBPOINTERV (VPG_ES20 + ES20_GETVERTEXATTRIBPOINTERV) --#define VPC_ES20HINT (VPG_ES20 + ES20_HINT) --#define VPC_ES20ISBUFFER (VPG_ES20 + ES20_ISBUFFER) --#define VPC_ES20ISENABLED (VPG_ES20 + ES20_ISENABLED) --#define VPC_ES20ISFRAMEBUFFER (VPG_ES20 + ES20_ISFRAMEBUFFER) --#define VPC_ES20ISPROGRAM (VPG_ES20 + ES20_ISPROGRAM) --#define VPC_ES20ISRENDERBUFFER (VPG_ES20 + ES20_ISRENDERBUFFER) --#define VPC_ES20ISSHADER (VPG_ES20 + ES20_ISSHADER) --#define VPC_ES20ISTEXTURE (VPG_ES20 + ES20_ISTEXTURE) --#define VPC_ES20LINEWIDTH (VPG_ES20 + ES20_LINEWIDTH) --#define VPC_ES20LINKPROGRAM (VPG_ES20 + ES20_LINKPROGRAM) --#define VPC_ES20PIXELSTOREI (VPG_ES20 + ES20_PIXELSTOREI) --#define VPC_ES20POLYGONOFFSET (VPG_ES20 + ES20_POLYGONOFFSET) --#define VPC_ES20READPIXELS (VPG_ES20 + ES20_READPIXELS) --#define VPC_ES20RELEASESHADERCOMPILER (VPG_ES20 + ES20_RELEASESHADERCOMPILER) --#define VPC_ES20RENDERBUFFERSTORAGE (VPG_ES20 + ES20_RENDERBUFFERSTORAGE) --#define VPC_ES20SAMPLECOVERAGE (VPG_ES20 + ES20_SAMPLECOVERAGE) --#define VPC_ES20SCISSOR (VPG_ES20 + ES20_SCISSOR) --#define VPC_ES20SHADERBINARY (VPG_ES20 + ES20_SHADERBINARY) --#define VPC_ES20SHADERSOURCE (VPG_ES20 + ES20_SHADERSOURCE) --#define VPC_ES20STENCILFUNC (VPG_ES20 + ES20_STENCILFUNC) --#define VPC_ES20STENCILFUNCSEPARATE (VPG_ES20 + ES20_STENCILFUNCSEPARATE) --#define VPC_ES20STENCILMASK (VPG_ES20 + ES20_STENCILMASK) --#define VPC_ES20STENCILMASKSEPARATE (VPG_ES20 + ES20_STENCILMASKSEPARATE) --#define VPC_ES20STENCILOP (VPG_ES20 + ES20_STENCILOP) --#define VPC_ES20STENCILOPSEPARATE (VPG_ES20 + ES20_STENCILOPSEPARATE) --#define VPC_ES20TEXIMAGE2D (VPG_ES20 + ES20_TEXIMAGE2D) --#define VPC_ES20TEXPARAMETERF (VPG_ES20 + ES20_TEXPARAMETERF) --#define VPC_ES20TEXPARAMETERFV (VPG_ES20 + ES20_TEXPARAMETERFV) --#define VPC_ES20TEXPARAMETERI (VPG_ES20 + ES20_TEXPARAMETERI) --#define VPC_ES20TEXPARAMETERIV (VPG_ES20 + ES20_TEXPARAMETERIV) --#define VPC_ES20TEXSUBIMAGE2D (VPG_ES20 + ES20_TEXSUBIMAGE2D) --#define VPC_ES20UNIFORM1F (VPG_ES20 + ES20_UNIFORM1F) --#define VPC_ES20UNIFORM1FV (VPG_ES20 + ES20_UNIFORM1FV) --#define VPC_ES20UNIFORM1I (VPG_ES20 + ES20_UNIFORM1I) --#define VPC_ES20UNIFORM1IV (VPG_ES20 + ES20_UNIFORM1IV) --#define VPC_ES20UNIFORM2F (VPG_ES20 + ES20_UNIFORM2F) --#define VPC_ES20UNIFORM2FV (VPG_ES20 + ES20_UNIFORM2FV) --#define VPC_ES20UNIFORM2I (VPG_ES20 + ES20_UNIFORM2I) --#define VPC_ES20UNIFORM2IV (VPG_ES20 + ES20_UNIFORM2IV) --#define VPC_ES20UNIFORM3F (VPG_ES20 + ES20_UNIFORM3F) --#define VPC_ES20UNIFORM3FV (VPG_ES20 + ES20_UNIFORM3FV) --#define VPC_ES20UNIFORM3I (VPG_ES20 + ES20_UNIFORM3I) --#define VPC_ES20UNIFORM3IV (VPG_ES20 + ES20_UNIFORM3IV) --#define VPC_ES20UNIFORM4F (VPG_ES20 + ES20_UNIFORM4F) --#define VPC_ES20UNIFORM4FV (VPG_ES20 + ES20_UNIFORM4FV) --#define VPC_ES20UNIFORM4I (VPG_ES20 + ES20_UNIFORM4I) --#define VPC_ES20UNIFORM4IV (VPG_ES20 + ES20_UNIFORM4IV) --#define VPC_ES20UNIFORMMATRIX2FV (VPG_ES20 + ES20_UNIFORMMATRIX2FV) --#define VPC_ES20UNIFORMMATRIX3FV (VPG_ES20 + ES20_UNIFORMMATRIX3FV) --#define VPC_ES20UNIFORMMATRIX4FV (VPG_ES20 + ES20_UNIFORMMATRIX4FV) --#define VPC_ES20USEPROGRAM (VPG_ES20 + ES20_USEPROGRAM) --#define VPC_ES20VALIDATEPROGRAM (VPG_ES20 + ES20_VALIDATEPROGRAM) --#define VPC_ES20VERTEXATTRIB1F (VPG_ES20 + ES20_VERTEXATTRIB1F) --#define VPC_ES20VERTEXATTRIB1FV (VPG_ES20 + ES20_VERTEXATTRIB1FV) --#define VPC_ES20VERTEXATTRIB2F (VPG_ES20 + ES20_VERTEXATTRIB2F) --#define VPC_ES20VERTEXATTRIB2FV (VPG_ES20 + ES20_VERTEXATTRIB2FV) --#define VPC_ES20VERTEXATTRIB3F (VPG_ES20 + ES20_VERTEXATTRIB3F) --#define VPC_ES20VERTEXATTRIB3FV (VPG_ES20 + ES20_VERTEXATTRIB3FV) --#define VPC_ES20VERTEXATTRIB4F (VPG_ES20 + ES20_VERTEXATTRIB4F) --#define VPC_ES20VERTEXATTRIB4FV (VPG_ES20 + ES20_VERTEXATTRIB4FV) --#define VPC_ES20VERTEXATTRIBPOINTER (VPG_ES20 + ES20_VERTEXATTRIBPOINTER) --#define VPC_ES20VIEWPORT (VPG_ES20 + ES20_VIEWPORT) -+#define VPC_ES11CALLS (VPG_ES11 + ES11_CALLS) -+#define VPC_ES11DRAWCALLS (VPG_ES11 + ES11_DRAWCALLS) -+#define VPC_ES11STATECHANGECALLS (VPG_ES11 + ES11_STATECHANGECALLS) -+#define VPC_ES11POINTCOUNT (VPG_ES11 + ES11_POINTCOUNT) -+#define VPC_ES11LINECOUNT (VPG_ES11 + ES11_LINECOUNT) -+#define VPC_ES11TRIANGLECOUNT (VPG_ES11 + ES11_TRIANGLECOUNT) -+ - /* OpenGL ES20 Statistics Counter IDs. */ --#define VPC_ES20CALLS (VPG_ES20 + ES20_CALLS) --#define VPC_ES20DRAWCALLS (VPG_ES20 + ES20_DRAWCALLS) --#define VPC_ES20STATECHANGECALLS (VPG_ES20 + ES20_STATECHANGECALLS) --#define VPC_ES20POINTCOUNT (VPG_ES20 + ES20_POINTCOUNT) --#define VPC_ES20LINECOUNT (VPG_ES20 + ES20_LINECOUNT) --#define VPC_ES20TRIANGLECOUNT (VPG_ES20 + ES20_TRIANGLECOUNT) -- --/* VG11 Counters. */ --#define VPC_VG11APPENDPATH (VPG_VG11 + VG11_APPENDPATH) --#define VPC_VG11APPENDPATHDATA (VPG_VG11 + VG11_APPENDPATHDATA) --#define VPC_VG11CHILDIMAGE (VPG_VG11 + VG11_CHILDIMAGE) --#define VPC_VG11CLEAR (VPG_VG11 + VG11_CLEAR) --#define VPC_VG11CLEARGLYPH (VPG_VG11 + VG11_CLEARGLYPH) --#define VPC_VG11CLEARIMAGE (VPG_VG11 + VG11_CLEARIMAGE) --#define VPC_VG11CLEARPATH (VPG_VG11 + VG11_CLEARPATH) --#define VPC_VG11COLORMATRIX (VPG_VG11 + VG11_COLORMATRIX) --#define VPC_VG11CONVOLVE (VPG_VG11 + VG11_CONVOLVE) --#define VPC_VG11COPYIMAGE (VPG_VG11 + VG11_COPYIMAGE) --#define VPC_VG11COPYMASK (VPG_VG11 + VG11_COPYMASK) --#define VPC_VG11COPYPIXELS (VPG_VG11 + VG11_COPYPIXELS) --#define VPC_VG11CREATEFONT (VPG_VG11 + VG11_CREATEFONT) --#define VPC_VG11CREATEIMAGE (VPG_VG11 + VG11_CREATEIMAGE) --#define VPC_VG11CREATEMASKLAYER (VPG_VG11 + VG11_CREATEMASKLAYER) --#define VPC_VG11CREATEPAINT (VPG_VG11 + VG11_CREATEPAINT) --#define VPC_VG11CREATEPATH (VPG_VG11 + VG11_CREATEPATH) --#define VPC_VG11DESTROYFONT (VPG_VG11 + VG11_DESTROYFONT) --#define VPC_VG11DESTROYIMAGE (VPG_VG11 + VG11_DESTROYIMAGE) --#define VPC_VG11DESTROYMASKLAYER (VPG_VG11 + VG11_DESTROYMASKLAYER) --#define VPC_VG11DESTROYPAINT (VPG_VG11 + VG11_DESTROYPAINT) --#define VPC_VG11DESTROYPATH (VPG_VG11 + VG11_DESTROYPATH) --#define VPC_VG11DRAWGLYPH (VPG_VG11 + VG11_DRAWGLYPH) --#define VPC_VG11DRAWGLYPHS (VPG_VG11 + VG11_DRAWGLYPHS) --#define VPC_VG11DRAWIMAGE (VPG_VG11 + VG11_DRAWIMAGE) --#define VPC_VG11DRAWPATH (VPG_VG11 + VG11_DRAWPATH) --#define VPC_VG11FILLMASKLAYER (VPG_VG11 + VG11_FILLMASKLAYER) --#define VPC_VG11FINISH (VPG_VG11 + VG11_FINISH) --#define VPC_VG11FLUSH (VPG_VG11 + VG11_FLUSH) --#define VPC_VG11GAUSSIANBLUR (VPG_VG11 + VG11_GAUSSIANBLUR) --#define VPC_VG11GETCOLOR (VPG_VG11 + VG11_GETCOLOR) --#define VPC_VG11GETERROR (VPG_VG11 + VG11_GETERROR) --#define VPC_VG11GETF (VPG_VG11 + VG11_GETF) --#define VPC_VG11GETFV (VPG_VG11 + VG11_GETFV) --#define VPC_VG11GETI (VPG_VG11 + VG11_GETI) --#define VPC_VG11GETIMAGESUBDATA (VPG_VG11 + VG11_GETIMAGESUBDATA) --#define VPC_VG11GETIV (VPG_VG11 + VG11_GETIV) --#define VPC_VG11GETMATRIX (VPG_VG11 + VG11_GETMATRIX) --#define VPC_VG11GETPAINT (VPG_VG11 + VG11_GETPAINT) --#define VPC_VG11GETPARAMETERF (VPG_VG11 + VG11_GETPARAMETERF) --#define VPC_VG11GETPARAMETERFV (VPG_VG11 + VG11_GETPARAMETERFV) --#define VPC_VG11GETPARAMETERI (VPG_VG11 + VG11_GETPARAMETERI) --#define VPC_VG11GETPARAMETERIV (VPG_VG11 + VG11_GETPARAMETERIV) --#define VPC_VG11GETPARAMETERVECTORSIZE (VPG_VG11 + VG11_GETPARAMETERVECTORSIZE) --#define VPC_VG11GETPARENT (VPG_VG11 + VG11_GETPARENT) --#define VPC_VG11GETPATHCAPABILITIES (VPG_VG11 + VG11_GETPATHCAPABILITIES) --#define VPC_VG11GETPIXELS (VPG_VG11 + VG11_GETPIXELS) --#define VPC_VG11GETSTRING (VPG_VG11 + VG11_GETSTRING) --#define VPC_VG11GETVECTORSIZE (VPG_VG11 + VG11_GETVECTORSIZE) --#define VPC_VG11HARDWAREQUERY (VPG_VG11 + VG11_HARDWAREQUERY) --#define VPC_VG11IMAGESUBDATA (VPG_VG11 + VG11_IMAGESUBDATA) --#define VPC_VG11INTERPOLATEPATH (VPG_VG11 + VG11_INTERPOLATEPATH) --#define VPC_VG11LOADIDENTITY (VPG_VG11 + VG11_LOADIDENTITY) --#define VPC_VG11LOADMATRIX (VPG_VG11 + VG11_LOADMATRIX) --#define VPC_VG11LOOKUP (VPG_VG11 + VG11_LOOKUP) --#define VPC_VG11LOOKUPSINGLE (VPG_VG11 + VG11_LOOKUPSINGLE) --#define VPC_VG11MASK (VPG_VG11 + VG11_MASK) --#define VPC_VG11MODIFYPATHCOORDS (VPG_VG11 + VG11_MODIFYPATHCOORDS) --#define VPC_VG11MULTMATRIX (VPG_VG11 + VG11_MULTMATRIX) --#define VPC_VG11PAINTPATTERN (VPG_VG11 + VG11_PAINTPATTERN) --#define VPC_VG11PATHBOUNDS (VPG_VG11 + VG11_PATHBOUNDS) --#define VPC_VG11PATHLENGTH (VPG_VG11 + VG11_PATHLENGTH) --#define VPC_VG11PATHTRANSFORMEDBOUNDS (VPG_VG11 + VG11_PATHTRANSFORMEDBOUNDS) --#define VPC_VG11POINTALONGPATH (VPG_VG11 + VG11_POINTALONGPATH) --#define VPC_VG11READPIXELS (VPG_VG11 + VG11_READPIXELS) --#define VPC_VG11REMOVEPATHCAPABILITIES (VPG_VG11 + VG11_REMOVEPATHCAPABILITIES) --#define VPC_VG11RENDERTOMASK (VPG_VG11 + VG11_RENDERTOMASK) --#define VPC_VG11ROTATE (VPG_VG11 + VG11_ROTATE) --#define VPC_VG11SCALE (VPG_VG11 + VG11_SCALE) --#define VPC_VG11SEPARABLECONVOLVE (VPG_VG11 + VG11_SEPARABLECONVOLVE) --#define VPC_VG11SETCOLOR (VPG_VG11 + VG11_SETCOLOR) --#define VPC_VG11SETF (VPG_VG11 + VG11_SETF) --#define VPC_VG11SETFV (VPG_VG11 + VG11_SETFV) --#define VPC_VG11SETGLYPHTOIMAGE (VPG_VG11 + VG11_SETGLYPHTOIMAGE) --#define VPC_VG11SETGLYPHTOPATH (VPG_VG11 + VG11_SETGLYPHTOPATH) --#define VPC_VG11SETI (VPG_VG11 + VG11_SETI) --#define VPC_VG11SETIV (VPG_VG11 + VG11_SETIV) --#define VPC_VG11SETPAINT (VPG_VG11 + VG11_SETPAINT) --#define VPC_VG11SETPARAMETERF (VPG_VG11 + VG11_SETPARAMETERF) --#define VPC_VG11SETPARAMETERFV (VPG_VG11 + VG11_SETPARAMETERFV) --#define VPC_VG11SETPARAMETERI (VPG_VG11 + VG11_SETPARAMETERI) --#define VPC_VG11SETPARAMETERIV (VPG_VG11 + VG11_SETPARAMETERIV) --#define VPC_VG11SETPIXELS (VPG_VG11 + VG11_SETPIXELS) --#define VPC_VG11SHEAR (VPG_VG11 + VG11_SHEAR) --#define VPC_VG11TRANSFORMPATH (VPG_VG11 + VG11_TRANSFORMPATH) --#define VPC_VG11TRANSLATE (VPG_VG11 + VG11_TRANSLATE) --#define VPC_VG11WRITEPIXELS (VPG_VG11 + VG11_WRITEPIXELS) -+#define VPC_ES20CALLS (VPG_ES20 + ES20_CALLS) -+#define VPC_ES20DRAWCALLS (VPG_ES20 + ES20_DRAWCALLS) -+#define VPC_ES20STATECHANGECALLS (VPG_ES20 + ES20_STATECHANGECALLS) -+#define VPC_ES20POINTCOUNT (VPG_ES20 + ES20_POINTCOUNT) -+#define VPC_ES20LINECOUNT (VPG_ES20 + ES20_LINECOUNT) -+#define VPC_ES20TRIANGLECOUNT (VPG_ES20 + ES20_TRIANGLECOUNT) -+ - /* OpenVG Statistics Counter IDs. */ --#define VPC_VG11CALLS (VPG_VG11 + VG11_CALLS) --#define VPC_VG11DRAWCALLS (VPG_VG11 + VG11_DRAWCALLS) --#define VPC_VG11STATECHANGECALLS (VPG_VG11 + VG11_STATECHANGECALLS) --#define VPC_VG11FILLCOUNT (VPG_VG11 + VG11_FILLCOUNT) --#define VPC_VG11STROKECOUNT (VPG_VG11 + VG11_STROKECOUNT) -+#define VPC_VG11CALLS (VPG_VG11 + VG11_CALLS) -+#define VPC_VG11DRAWCALLS (VPG_VG11 + VG11_DRAWCALLS) -+#define VPC_VG11STATECHANGECALLS (VPG_VG11 + VG11_STATECHANGECALLS) -+#define VPC_VG11FILLCOUNT (VPG_VG11 + VG11_FILLCOUNT) -+#define VPC_VG11STROKECOUNT (VPG_VG11 + VG11_STROKECOUNT) - - /* HAL Counters. */ - #define VPC_HALVERTBUFNEWBYTEALLOC (VPG_HAL + HAL_VERTBUFNEWBYTEALLOC) -@@ -1018,7 +248,7 @@ extern "C" { - #define VPC_GPUREAD64BYTE (VPG_GPU + GPU_READ64BYTE) - #define VPC_GPUWRITE64BYTE (VPG_GPU + GPU_WRITE64BYTE) - #define VPC_GPUTOTALCYCLES (VPG_GPU + GPU_TOTALCYCLES) --#define VPC_GPUIDLECYCLES (VPG_GPU + GPU_IDLECYCLES) -+#define VPC_GPUIDLECYCLES (VPG_GPU + GPU_IDLECYCLES) - - /* HW: Shader Counters. */ - #define VPC_VSINSTCOUNT (VPG_VS + VS_INSTCOUNT) -@@ -1026,9 +256,9 @@ extern "C" { - #define VPC_VSTEXLDINSTCOUNT (VPG_VS + VS_TEXLDINSTCOUNT) - #define VPC_VSRENDEREDVERTCOUNT (VPG_VS + VS_RENDEREDVERTCOUNT) - /* HW: PS Count. */ --#define VPC_PSINSTCOUNT (VPG_PS + PS_INSTCOUNT) --#define VPC_PSBRANCHINSTCOUNT (VPG_PS + PS_BRANCHINSTCOUNT) --#define VPC_PSTEXLDINSTCOUNT (VPG_PS + PS_TEXLDINSTCOUNT) -+#define VPC_PSINSTCOUNT (VPG_PS + PS_INSTCOUNT) -+#define VPC_PSBRANCHINSTCOUNT (VPG_PS + PS_BRANCHINSTCOUNT) -+#define VPC_PSTEXLDINSTCOUNT (VPG_PS + PS_TEXLDINSTCOUNT) - #define VPC_PSRENDEREDPIXCOUNT (VPG_PS + PS_RENDEREDPIXCOUNT) - - -@@ -1071,7 +301,7 @@ extern "C" { - #define VPC_PEDRAWNBYDEPTH (VPG_PE + PE_DRAWNBYDEPTH) - - /* HW: MC Counters. */ --#define VPC_MCREADREQ8BPIPE (VPG_MC + MC_READREQ8BPIPE) -+#define VPC_MCREADREQ8BPIPE (VPG_MC + MC_READREQ8BPIPE) - #define VPC_MCREADREQ8BIP (VPG_MC + MC_READREQ8BIP) - #define VPC_MCWRITEREQ8BPIPE (VPG_MC + MC_WRITEREQ8BPIPE) - -@@ -1087,6 +317,7 @@ extern "C" { - #define VPC_PVSATTRIBCOUNT (VPG_PVS + PVS_ATTRIBCOUNT) - #define VPC_PVSUNIFORMCOUNT (VPG_PVS + PVS_UNIFORMCOUNT) - #define VPC_PVSFUNCTIONCOUNT (VPG_PVS + PVS_FUNCTIONCOUNT) -+#define VPC_PVSSOURCE (VPG_PVS + PVS_SOURCE) - - #define VPC_PPSINSTRCOUNT (VPG_PPS + PPS_INSTRCOUNT) - #define VPC_PPSALUINSTRCOUNT (VPG_PPS + PPS_ALUINSTRCOUNT) -@@ -1094,7 +325,9 @@ extern "C" { - #define VPC_PPSATTRIBCOUNT (VPG_PPS + PPS_ATTRIBCOUNT) - #define VPC_PPSUNIFORMCOUNT (VPG_PPS + PPS_UNIFORMCOUNT) - #define VPC_PPSFUNCTIONCOUNT (VPG_PPS + PPS_FUNCTIONCOUNT) -+#define VPC_PPSSOURCE (VPG_PPS + PPS_SOURCE) - -+#define VPC_PROGRAMHANDLE (VPG_PROG + 1) - - #define VPG_ES20_DRAW_NO (VPG_ES20_DRAW + 1) - #define VPG_ES11_DRAW_NO (VPG_ES11_DRAW + 1) -@@ -1118,8 +351,8 @@ typedef struct _gcsPROFILER_COUNTERS - - /* HW vairable counters. */ - gctUINT32 gpuCyclesCounter; -- gctUINT32 gpuTotalCyclesCounter; -- gctUINT32 gpuIdleCyclesCounter; -+ gctUINT32 gpuTotalCyclesCounter; -+ gctUINT32 gpuIdleCyclesCounter; - gctUINT32 gpuTotalRead64BytesPerFrame; - gctUINT32 gpuTotalWrite64BytesPerFrame; - -@@ -1158,7 +391,7 @@ typedef struct _gcsPROFILER_COUNTERS - gctUINT32 ra_total_primitive_count; - gctUINT32 ra_pipe_cache_miss_counter; - gctUINT32 ra_prefetch_cache_miss_counter; -- gctUINT32 ra_eez_culled_counter; -+ gctUINT32 ra_eez_culled_counter; - - /* TX */ - gctUINT32 tx_total_bilinear_requests; -@@ -1190,7 +423,7 @@ typedef struct _gcsPROFILER - gctBOOL enableHal; - gctBOOL enableHW; - gctBOOL enableSH; -- gctBOOL isSyncMode; -+ gctBOOL isSyncMode; - - gctBOOL useSocket; - gctINT sockFd; -@@ -1234,14 +467,17 @@ typedef struct _gcsPROFILER - gctUINT32 redundantStateChangeCalls; - #endif - -- gctUINT32 prevVSInstCount; -- gctUINT32 prevVSBranchInstCount; -- gctUINT32 prevVSTexInstCount; -- gctUINT32 prevVSVertexCount; -- gctUINT32 prevPSInstCount; -- gctUINT32 prevPSBranchInstCount; -- gctUINT32 prevPSTexInstCount; -- gctUINT32 prevPSPixelCount; -+ gctUINT32 prevVSInstCount; -+ gctUINT32 prevVSBranchInstCount; -+ gctUINT32 prevVSTexInstCount; -+ gctUINT32 prevVSVertexCount; -+ gctUINT32 prevPSInstCount; -+ gctUINT32 prevPSBranchInstCount; -+ gctUINT32 prevPSTexInstCount; -+ gctUINT32 prevPSPixelCount; -+ -+ char* psSource; -+ char* vsSource; - - } - gcsPROFILER; -@@ -1315,6 +551,18 @@ gcoPROFILER_Count( - IN gctINT Value - ); - -+gceSTATUS -+gcoPROFILER_ShaderSourceFS( -+ IN gcoHAL Hal, -+ IN char* source -+ ); -+ -+gceSTATUS -+gcoPROFILER_ShaderSourceVS( -+ IN gcoHAL Hal, -+ IN char* source -+ ); -+ - /* Profile input vertex shader. */ - gceSTATUS - gcoPROFILER_ShaderVS( -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h -index bc4171e..6e4d830 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h -@@ -568,6 +568,23 @@ gco2D_MonoBlit( - IN gceSURF_FORMAT DestFormat - ); - -+gceSTATUS -+gco2D_MonoBlitEx( -+ IN gco2D Engine, -+ IN gctPOINTER StreamBits, -+ IN gctINT32 StreamStride, -+ IN gctINT32 StreamWidth, -+ IN gctINT32 StreamHeight, -+ IN gctINT32 StreamX, -+ IN gctINT32 StreamY, -+ IN gctUINT32 FgColor, -+ IN gctUINT32 BgColor, -+ IN gcsRECT_PTR SrcRect, -+ IN gcsRECT_PTR DstRect, -+ IN gctUINT8 FgRop, -+ IN gctUINT8 BgRop -+ ); -+ - /* Set kernel size. */ - gceSTATUS - gco2D_SetKernelSize( -@@ -942,6 +959,15 @@ gco2D_SetSourceTileStatus( - ); - - gceSTATUS -+gco2D_SetTargetTileStatus( -+ IN gco2D Engine, -+ IN gce2D_TILE_STATUS_CONFIG TileStatusConfig, -+ IN gceSURF_FORMAT CompressedFormat, -+ IN gctUINT32 ClearValue, -+ IN gctUINT32 GpuAddress -+ ); -+ -+gceSTATUS - gco2D_QueryU32( - IN gco2D Engine, - IN gce2D_QUERY Item, -@@ -955,6 +981,28 @@ gco2D_SetStateU32( - IN gctUINT32 Value - ); - -+gceSTATUS -+gco2D_SetStateArrayI32( -+ IN gco2D Engine, -+ IN gce2D_STATE State, -+ IN gctINT32_PTR Array, -+ IN gctINT32 ArraySize -+ ); -+ -+gceSTATUS -+gco2D_SetStateArrayU32( -+ IN gco2D Engine, -+ IN gce2D_STATE State, -+ IN gctUINT32_PTR Array, -+ IN gctINT32 ArraySize -+ ); -+ -+gceSTATUS -+gco2D_SetTargetRect( -+ IN gco2D Engine, -+ IN gcsRECT_PTR Rect -+ ); -+ - #ifdef __cplusplus - } - #endif -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h -index 5c0877d..14801aa 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h -@@ -128,6 +128,7 @@ typedef int gctBOOL; - typedef gctBOOL * gctBOOL_PTR; - - typedef int gctINT; -+typedef long gctLONG; - typedef signed char gctINT8; - typedef signed short gctINT16; - typedef signed int gctINT32; -@@ -171,6 +172,7 @@ typedef void * gctFILE; - typedef void * gctSIGNAL; - typedef void * gctWINDOW; - typedef void * gctIMAGE; -+typedef void * gctSYNC_POINT; - - typedef void * gctSEMAPHORE; - -@@ -941,12 +943,19 @@ typedef struct _gcsHAL_FRAME_INFO - OUT gctUINT readRequests[8]; - OUT gctUINT writeRequests[8]; - -+ /* FE counters. */ -+ OUT gctUINT drawCount; -+ OUT gctUINT vertexOutCount; -+ OUT gctUINT vertexMissCount; -+ - /* 3D counters. */ - OUT gctUINT vertexCount; - OUT gctUINT primitiveCount; - OUT gctUINT rejectedPrimitives; - OUT gctUINT culledPrimitives; - OUT gctUINT clippedPrimitives; -+ OUT gctUINT droppedPrimitives; -+ OUT gctUINT frustumClippedPrimitives; - OUT gctUINT outPrimitives; - OUT gctUINT inPrimitives; - OUT gctUINT culledQuadCount; -@@ -964,18 +973,86 @@ typedef struct _gcsHAL_FRAME_INFO - OUT gctUINT shaderCycles; - OUT gctUINT vsInstructionCount; - OUT gctUINT vsTextureCount; -+ OUT gctUINT vsBranchCount; -+ OUT gctUINT vsVertices; - OUT gctUINT psInstructionCount; - OUT gctUINT psTextureCount; -+ OUT gctUINT psBranchCount; -+ OUT gctUINT psPixels; - - /* Texture counters. */ - OUT gctUINT bilinearRequests; - OUT gctUINT trilinearRequests; -- OUT gctUINT txBytes8; -+ OUT gctUINT txBytes8[2]; - OUT gctUINT txHitCount; - OUT gctUINT txMissCount; - } - gcsHAL_FRAME_INFO; - -+typedef enum _gcePATCH_ID -+{ -+ gcePATCH_UNKNOWN = 0xFFFFFFFF, -+ -+ /* Benchmark list*/ -+ gcePATCH_GLB11 = 0x0, -+ gcePATCH_GLB21, -+ gcePATCH_GLB25, -+ gcePATCH_GLB27, -+ -+ gcePATCH_BM21, -+ gcePATCH_MM, -+ gcePATCH_MM06, -+ gcePATCH_MM07, -+ gcePATCH_QUADRANT, -+ gcePATCH_ANTUTU, -+ gcePATCH_SMARTBENCH, -+ gcePATCH_JPCT, -+ gcePATCH_NENAMARK, -+ gcePATCH_NENAMARK2, -+ gcePATCH_NEOCORE, -+ gcePATCH_GLB, -+ gcePATCH_GB, -+ gcePATCH_RTESTVA, -+ gcePATCH_BMX, -+ gcePATCH_BMGUI, -+ -+ /* Game list */ -+ gcePATCH_NBA2013, -+ gcePATCH_BARDTALE, -+ gcePATCH_BUSPARKING3D, -+ gcePATCH_FISHBOODLE, -+ gcePATCH_SUBWAYSURFER, -+ gcePATCH_HIGHWAYDRIVER, -+ gcePATCH_PREMIUM, -+ gcePATCH_RACEILLEGAL, -+ gcePATCH_BLABLA, -+ gcePATCH_MEGARUN, -+ gcePATCH_GALAXYONFIRE2, -+ gcePATCH_GLOFTR3HM, -+ gcePATCH_GLOFTSXHM, -+ gcePATCH_GLOFTF3HM, -+ gcePATCH_GLOFTGANG, -+ gcePATCH_XRUNNER, -+ gcePATCH_WP, -+ gcePATCH_DEVIL, -+ gcePATCH_HOLYARCH, -+ gcePATCH_MUSE, -+ gcePATCH_SG, -+ gcePATCH_SIEGECRAFT, -+ gcePATCH_CARCHALLENGE, -+ gcePATCH_HEROESCALL, -+ gcePATCH_MONOPOLY, -+ gcePATCH_CTGL20, -+ gcePATCH_FIREFOX, -+ gcePATCH_CHORME, -+ gcePATCH_DUOKANTV, -+ gcePATCH_TESTAPP, -+ -+ /* Count enum*/ -+ gcePATCH_COUNT, -+} -+gcePATCH_ID; -+ - #if gcdLINK_QUEUE_SIZE - typedef struct _gckLINKDATA * gckLINKDATA; - struct _gckLINKDATA -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h -index 03cb4d6..2eab666 100644 ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h -@@ -28,7 +28,7 @@ - - #define gcvVERSION_PATCH 9 - --#define gcvVERSION_BUILD 6622 -+#define gcvVERSION_BUILD 9754 - - #define gcvVERSION_DATE __DATE__ - -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c -index 4d48bd5..b029428 100644 ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c -@@ -25,7 +25,9 @@ - #include <linux/mm.h> - #include <linux/mman.h> - #include <linux/slab.h> -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - #include <mach/hardware.h> -+#endif - #include <linux/pm_runtime.h> - - #define _GC_OBJ_ZONE gcvZONE_DEVICE -@@ -305,6 +307,7 @@ gckGALDEVICE_Construct( - IN gctUINT LogFileSize, - IN struct device *pdev, - IN gctINT PowerManagement, -+ IN gctINT GpuProfiler, - OUT gckGALDEVICE *Device - ) - { -@@ -369,6 +372,10 @@ gckGALDEVICE_Construct( - #if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) - /*get gpu regulator*/ - device->gpu_regulator = regulator_get(pdev, "cpu_vddgpu"); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ device->gpu_regulator = regulator_get(pdev, "vddpu"); -+#endif -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) - if (IS_ERR(device->gpu_regulator)) { - gcmkTRACE_ZONE(gcvLEVEL_ERROR, gcvZONE_DRIVER, - "%s(%d): Failed to get gpu regulator %s/%s \n", -@@ -541,6 +548,10 @@ gckGALDEVICE_Construct( - device->kernels[gcvCORE_MAJOR]->hardware, PowerManagement - )); - -+ gcmkONERROR(gckHARDWARE_SetGpuProfiler( -+ device->kernels[gcvCORE_MAJOR]->hardware, GpuProfiler -+ )); -+ - #if COMMAND_PROCESSOR_VERSION == 1 - /* Start the command queue. */ - gcmkONERROR(gckCOMMAND_Start(device->kernels[gcvCORE_MAJOR]->command)); -@@ -599,6 +610,7 @@ gckGALDEVICE_Construct( - device->kernels[gcvCORE_2D]->hardware, PowerManagement - )); - -+ - #if COMMAND_PROCESSOR_VERSION == 1 - /* Start the command queue. */ - gcmkONERROR(gckCOMMAND_Start(device->kernels[gcvCORE_2D]->command)); -@@ -635,6 +647,7 @@ gckGALDEVICE_Construct( - device->kernels[gcvCORE_VG]->vg->hardware, - PowerManagement - )); -+ - #endif - } - else -@@ -849,6 +862,7 @@ gckGALDEVICE_Construct( - } - else - { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - mem_region = request_mem_region( - ContiguousBase, ContiguousSize, "galcore managed memory" - ); -@@ -864,6 +878,7 @@ gckGALDEVICE_Construct( - - gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); - } -+#endif - - device->requestedContiguousBase = ContiguousBase; - device->requestedContiguousSize = ContiguousSize; -@@ -1107,7 +1122,7 @@ gckGALDEVICE_Destroy( - pm_runtime_disable(Device->pmdev); - #endif - --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) - if (Device->gpu_regulator) { - regulator_put(Device->gpu_regulator); - Device->gpu_regulator = NULL; -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h -index dde4f03..c51432f 100644 ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h -@@ -26,6 +26,15 @@ - ******************************* gckGALDEVICE Structure ******************************* - \******************************************************************************/ - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+struct contiguous_mem_pool { -+ struct dma_attrs attrs; -+ dma_addr_t phys; -+ void *virt; -+ size_t size; -+}; -+#endif -+ - typedef struct _gckGALDEVICE - { - /* Objects. */ -@@ -91,12 +100,16 @@ typedef struct _gckGALDEVICE - struct clk *clk_2d_axi; - struct clk *clk_vg_axi; - --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) - /*Power management.*/ - struct regulator *gpu_regulator; - #endif - /*Run time pm*/ - struct device *pmdev; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ struct contiguous_mem_pool *pool; -+ struct reset_control *rstc[gcdMAX_GPU_COUNT]; -+#endif - } - * gckGALDEVICE; - -@@ -171,6 +184,7 @@ gceSTATUS gckGALDEVICE_Construct( - IN gctUINT LogFileSize, - IN struct device *pdev, - IN gctINT PowerManagement, -+ IN gctINT GpuProfiler, - OUT gckGALDEVICE *Device - ); - -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c -index bacd531..88a7e4e6 100644 ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c -@@ -1,7 +1,7 @@ - /**************************************************************************** - * - * Copyright (C) 2005 - 2013 by Vivante Corp. --* Copyright (C) 2011-2012 Freescale Semiconductor, Inc. -+* Copyright (C) 2011-2013 Freescale Semiconductor, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by -@@ -69,14 +69,26 @@ task_notify_func(struct notifier_block *self, unsigned long val, void *data) - #include <mach/viv_gpu.h> - #else - #include <linux/pm_runtime.h> -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - #include <mach/busfreq.h> -+#else -+#include <linux/reset.h> -+#endif - #endif - /* Zone used for header/footer. */ - #define _GC_OBJ_ZONE gcvZONE_DRIVER - - #if gcdENABLE_FSCALE_VAL_ADJUST -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+#include <linux/device_cooling.h> -+#define REG_THERMAL_NOTIFIER(a) register_devfreq_cooling_notifier(a); -+#define UNREG_THERMAL_NOTIFIER(a) unregister_devfreq_cooling_notifier(a); -+#else - extern int register_thermal_notifier(struct notifier_block *nb); - extern int unregister_thermal_notifier(struct notifier_block *nb); -+#define REG_THERMAL_NOTIFIER(a) register_thermal_notifier(a); -+#define UNREG_THERMAL_NOTIFIER(a) unregister_thermal_notifier(a); -+#endif - #endif - - MODULE_DESCRIPTION("Vivante Graphics Driver"); -@@ -116,7 +128,11 @@ module_param(registerMemBaseVG, ulong, 0644); - static ulong registerMemSizeVG = 2 << 10; - module_param(registerMemSizeVG, ulong, 0644); - -+#if gcdENABLE_FSCALE_VAL_ADJUST -+static ulong contiguousSize = 128 << 20; -+#else - static ulong contiguousSize = 4 << 20; -+#endif - module_param(contiguousSize, ulong, 0644); - - static ulong contiguousBase = 0; -@@ -134,6 +150,9 @@ module_param(compression, int, 0644); - static int powerManagement = 1; - module_param(powerManagement, int, 0644); - -+static int gpuProfiler = 0; -+module_param(gpuProfiler, int, 0644); -+ - static int signal = 48; - module_param(signal, int, 0644); - -@@ -786,7 +805,9 @@ static int drv_init(struct device *pdev) - - printk(KERN_INFO "Galcore version %d.%d.%d.%d\n", - gcvVERSION_MAJOR, gcvVERSION_MINOR, gcvVERSION_PATCH, gcvVERSION_BUILD); -- -+ /* when enable gpu profiler, we need to turn off gpu powerMangement */ -+ if(gpuProfiler) -+ powerManagement = 0; - if (showArgs) - { - printk("galcore options:\n"); -@@ -818,6 +839,7 @@ static int drv_init(struct device *pdev) - printk(" physSize = 0x%08lX\n", physSize); - printk(" logFileSize = %d KB \n", logFileSize); - printk(" powerManagement = %d\n", powerManagement); -+ printk(" gpuProfiler = %d\n", gpuProfiler); - #if ENABLE_GPU_CLOCK_BY_DRIVER - printk(" coreClock = %lu\n", coreClock); - #endif -@@ -841,9 +863,14 @@ static int drv_init(struct device *pdev) - logFileSize, - pdev, - powerManagement, -+ gpuProfiler, - &device - )); - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ device->pool = dev_get_drvdata(pdev); -+#endif -+ - /* Start the GAL device. */ - gcmkONERROR(gckGALDEVICE_Start(device)); - -@@ -1028,11 +1055,18 @@ static struct notifier_block thermal_hot_pm_notifier = { - - - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) -+static int gpu_probe(struct platform_device *pdev) -+#else - static int __devinit gpu_probe(struct platform_device *pdev) -+#endif - { - int ret = -ENODEV; - struct resource* res; --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ struct contiguous_mem_pool *pool; -+ struct reset_control *rstc; -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) - struct device_node *dn =pdev->dev.of_node; - const u32 *prop; - #else -@@ -1077,7 +1111,22 @@ static int __devinit gpu_probe(struct platform_device *pdev) - registerMemSizeVG = res->end - res->start + 1; - } - --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ pool = devm_kzalloc(&pdev->dev, sizeof(*pool), GFP_KERNEL); -+ if (!pool) -+ return -ENOMEM; -+ pool->size = contiguousSize; -+ init_dma_attrs(&pool->attrs); -+ dma_set_attr(DMA_ATTR_WRITE_COMBINE, &pool->attrs); -+ pool->virt = dma_alloc_attrs(&pdev->dev, pool->size, &pool->phys, -+ GFP_KERNEL, &pool->attrs); -+ if (!pool->virt) { -+ dev_err(&pdev->dev, "Failed to allocate contiguous memory\n"); -+ return -ENOMEM; -+ } -+ contiguousBase = pool->phys; -+ dev_set_drvdata(&pdev->dev, pool); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) - prop = of_get_property(dn, "contiguousbase", NULL); - if(prop) - contiguousBase = *prop; -@@ -1095,30 +1144,56 @@ static int __devinit gpu_probe(struct platform_device *pdev) - - if (!ret) - { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ rstc = devm_reset_control_get(&pdev->dev, "gpu3d"); -+ galDevice->rstc[gcvCORE_MAJOR] = IS_ERR(rstc) ? NULL : rstc; -+ -+ rstc = devm_reset_control_get(&pdev->dev, "gpu2d"); -+ galDevice->rstc[gcvCORE_2D] = IS_ERR(rstc) ? NULL : rstc; -+ -+ rstc = devm_reset_control_get(&pdev->dev, "gpuvg"); -+ galDevice->rstc[gcvCORE_VG] = IS_ERR(rstc) ? NULL : rstc; -+#endif - platform_set_drvdata(pdev, galDevice); - - #if gcdENABLE_FSCALE_VAL_ADJUST -- if(galDevice->kernels[gcvCORE_MAJOR]) -- register_thermal_notifier(&thermal_hot_pm_notifier); -+ if (galDevice->kernels[gcvCORE_MAJOR]) -+ REG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier); - #endif - gcmkFOOTER_NO(); - return ret; - } - #if gcdENABLE_FSCALE_VAL_ADJUST -- unregister_thermal_notifier(&thermal_hot_pm_notifier); -+ UNREG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier); -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ dma_free_attrs(&pdev->dev, pool->size, pool->virt, pool->phys, -+ &pool->attrs); - #endif - gcmkFOOTER_ARG(KERN_INFO "Failed to register gpu driver: %d\n", ret); - return ret; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) -+static int gpu_remove(struct platform_device *pdev) -+#else - static int __devexit gpu_remove(struct platform_device *pdev) -+#endif - { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ gckGALDEVICE device = platform_get_drvdata(pdev); -+ struct contiguous_mem_pool *pool = device->pool; -+#endif - gcmkHEADER(); - #if gcdENABLE_FSCALE_VAL_ADJUST - if(galDevice->kernels[gcvCORE_MAJOR]) -- unregister_thermal_notifier(&thermal_hot_pm_notifier); -+ UNREG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier); - #endif - drv_exit(); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ dma_free_attrs(&pdev->dev, pool->size, pool->virt, pool->phys, -+ &pool->attrs); -+#endif - gcmkFOOTER_NO(); - return 0; - } -@@ -1254,13 +1329,17 @@ MODULE_DEVICE_TABLE(of, mxs_gpu_dt_ids); - #ifdef CONFIG_PM - static int gpu_runtime_suspend(struct device *dev) - { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - release_bus_freq(BUS_FREQ_HIGH); -+#endif - return 0; - } - - static int gpu_runtime_resume(struct device *dev) - { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - request_bus_freq(BUS_FREQ_HIGH); -+#endif - return 0; - } - -@@ -1284,7 +1363,11 @@ static const struct dev_pm_ops gpu_pm_ops = { - - static struct platform_driver gpu_driver = { - .probe = gpu_probe, -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) -+ .remove = gpu_remove, -+#else - .remove = __devexit_p(gpu_remove), -+#endif - - .suspend = gpu_suspend, - .resume = gpu_resume, -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c -index e7edc39..331c73f 100644 ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c -@@ -30,19 +30,30 @@ - #include <linux/dma-mapping.h> - #include <linux/slab.h> - #include <linux/idr.h> -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - #include <mach/hardware.h> -+#endif - #include <linux/workqueue.h> - #include <linux/idr.h> - #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,23) - #include <linux/math64.h> - #endif --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+#include <linux/reset.h> -+static inline void imx_gpc_power_up_pu(bool flag) {} -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) - #include <mach/common.h> - #endif - #include <linux/delay.h> - #include <linux/pm_runtime.h> - - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+#include <linux/file.h> -+#include "gc_hal_kernel_sync.h" -+#endif -+ -+ - #define _GC_OBJ_ZONE gcvZONE_OS - - /******************************************************************************* -@@ -148,6 +159,7 @@ typedef struct _gcsINTEGER_DB - { - struct idr idr; - spinlock_t lock; -+ gctINT curr; - } - gcsINTEGER_DB; - -@@ -180,6 +192,14 @@ struct _gckOS - /* signal id database. */ - gcsINTEGER_DB signalDB; - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ /* Lock. */ -+ gctPOINTER syncPointMutex; -+ -+ /* sync point id database. */ -+ gcsINTEGER_DB syncPointDB; -+#endif -+ - gcsUSER_MAPPING_PTR userMap; - gctPOINTER debugLock; - -@@ -215,6 +235,25 @@ typedef struct _gcsSIGNAL - } - gcsSIGNAL; - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+typedef struct _gcsSYNC_POINT * gcsSYNC_POINT_PTR; -+typedef struct _gcsSYNC_POINT -+{ -+ /* The reference counter. */ -+ atomic_t ref; -+ -+ /* State. */ -+ atomic_t state; -+ -+ /* timeline. */ -+ struct sync_timeline * timeline; -+ -+ /* ID. */ -+ gctUINT32 id; -+} -+gcsSYNC_POINT; -+#endif -+ - typedef struct _gcsPageInfo * gcsPageInfo_PTR; - typedef struct _gcsPageInfo - { -@@ -767,7 +806,32 @@ _AllocateIntegerId( - ) - { - int result; -+ gctINT next; -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) -+ idr_preload(GFP_KERNEL | gcdNOWARN); - -+ spin_lock(&Database->lock); -+ -+ next = (Database->curr + 1 <= 0) ? 1 : Database->curr + 1; -+ result = idr_alloc(&Database->idr, KernelPointer, next, 0, GFP_ATOMIC); -+ -+ if (!result) -+ { -+ Database->curr = *Id; -+ } -+ -+ spin_unlock(&Database->lock); -+ -+ idr_preload_end(); -+ -+ if (result < 0) -+ { -+ return gcvSTATUS_OUT_OF_RESOURCES; -+ } -+ -+ *Id = result; -+#else - again: - if (idr_pre_get(&Database->idr, GFP_KERNEL | gcdNOWARN) == 0) - { -@@ -776,8 +840,15 @@ again: - - spin_lock(&Database->lock); - -- /* Try to get a id greater than 0. */ -- result = idr_get_new_above(&Database->idr, KernelPointer, 1, Id); -+ next = (Database->curr + 1 <= 0) ? 1 : Database->curr + 1; -+ -+ /* Try to get a id greater than current id. */ -+ result = idr_get_new_above(&Database->idr, KernelPointer, next, Id); -+ -+ if (!result) -+ { -+ Database->curr = *Id; -+ } - - spin_unlock(&Database->lock); - -@@ -790,6 +861,7 @@ again: - { - return gcvSTATUS_OUT_OF_RESOURCES; - } -+#endif - - return gcvSTATUS_OK; - } -@@ -1008,6 +1080,21 @@ gckOS_Construct( - /* Initialize signal id database. */ - idr_init(&os->signalDB.idr); - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ /* -+ * Initialize the sync point manager. -+ */ -+ -+ /* Initialize mutex. */ -+ gcmkONERROR(gckOS_CreateMutex(os, &os->syncPointMutex)); -+ -+ /* Initialize sync point id database lock. */ -+ spin_lock_init(&os->syncPointDB.lock); -+ -+ /* Initialize sync point id database. */ -+ idr_init(&os->syncPointDB.idr); -+#endif -+ - #if gcdUSE_NON_PAGED_MEMORY_CACHE - os->cacheSize = 0; - os->cacheHead = gcvNULL; -@@ -1031,6 +1118,15 @@ gckOS_Construct( - return gcvSTATUS_OK; - - OnError: -+ -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ if (os->syncPointMutex != gcvNULL) -+ { -+ gcmkVERIFY_OK( -+ gckOS_DeleteMutex(os, os->syncPointMutex)); -+ } -+#endif -+ - if (os->signalMutex != gcvNULL) - { - gcmkVERIFY_OK( -@@ -1104,6 +1200,15 @@ gckOS_Destroy( - _FreeAllNonPagedMemoryCache(Os); - #endif - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ /* -+ * Destroy the sync point manager. -+ */ -+ -+ /* Destroy the mutex. */ -+ gcmkVERIFY_OK(gckOS_DeleteMutex(Os, Os->syncPointMutex)); -+#endif -+ - /* - * Destroy the signal manager. - */ -@@ -1961,12 +2066,6 @@ gckOS_AllocateNonPagedMemory( - gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); - } - -- if ((Os->device->baseAddress & 0x80000000) != (mdl->dmaHandle & 0x80000000)) -- { -- mdl->dmaHandle = (mdl->dmaHandle & ~0x80000000) -- | (Os->device->baseAddress & 0x80000000); -- } -- - mdl->addr = addr; - - /* Return allocated memory. */ -@@ -2307,6 +2406,7 @@ gckOS_ReadRegisterEx( - - /* Verify the arguments. */ - gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); -+ gcmkVERIFY_ARGUMENT(Address < Os->device->requestedRegisterMemSizes[Core]); - gcmkVERIFY_ARGUMENT(Data != gcvNULL); - - *Data = readl((gctUINT8 *)Os->device->registerBases[Core] + Address); -@@ -2357,6 +2457,8 @@ gckOS_WriteRegisterEx( - { - gcmkHEADER_ARG("Os=0x%X Core=%d Address=0x%X Data=0x%08x", Os, Core, Address, Data); - -+ gcmkVERIFY_ARGUMENT(Address < Os->device->requestedRegisterMemSizes[Core]); -+ - writel(Data, (gctUINT8 *)Os->device->registerBases[Core] + Address); - - /* Success. */ -@@ -2799,16 +2901,25 @@ gckOS_MapPhysical( - - if (mdl == gcvNULL) - { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ struct contiguous_mem_pool *pool = Os->device->pool; -+ -+ if (Physical >= pool->phys && Physical < pool->phys + pool->size) -+ logical = (gctPOINTER)(Physical - pool->phys + pool->virt); -+ else -+ logical = gcvNULL; -+#else - /* Map memory as cached memory. */ - request_mem_region(physical, Bytes, "MapRegion"); - logical = (gctPOINTER) ioremap_nocache(physical, Bytes); -+#endif - - if (logical == gcvNULL) - { - gcmkTRACE_ZONE( - gcvLEVEL_INFO, gcvZONE_OS, -- "%s(%d): Failed to ioremap", -- __FUNCTION__, __LINE__ -+ "%s(%d): Failed to map physical address 0x%08x", -+ __FUNCTION__, __LINE__, Physical - ); - - MEMORY_UNLOCK(Os); -@@ -3621,7 +3732,7 @@ gckOS_Delay( - if (Delay > 0) - { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) -- ktime_t delay = ktime_set(0, Delay * NSEC_PER_MSEC); -+ ktime_t delay = ktime_set(Delay/1000, (Delay%1000) * NSEC_PER_MSEC); - __set_current_state(TASK_UNINTERRUPTIBLE); - schedule_hrtimeout(&delay, HRTIMER_MODE_REL); - #else -@@ -3881,8 +3992,13 @@ gckOS_AllocatePagedMemoryEx( - - if (Contiguous) - { -- /* Get contiguous pages, and suppress warning (stack dump) from kernel when -- we run out of memory. */ -+ gctUINT32 order = get_order(bytes); -+ -+ if (order >= MAX_ORDER) -+ { -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); -+ } -+ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) - addr = - alloc_pages_exact(numPages * PAGE_SIZE, GFP_KERNEL | gcdNOWARN | __GFP_NORETRY); -@@ -3894,12 +4010,12 @@ gckOS_AllocatePagedMemoryEx( - mdl->exact = gcvTRUE; - #else - mdl->u.contiguousPages = -- alloc_pages(GFP_KERNEL | gcdNOWARN | __GFP_NORETRY, GetOrder(numPages)); -+ alloc_pages(GFP_KERNEL | gcdNOWARN | __GFP_NORETRY, order); - #endif - if (mdl->u.contiguousPages == gcvNULL) - { - mdl->u.contiguousPages = -- alloc_pages(GFP_KERNEL | __GFP_HIGHMEM | gcdNOWARN, GetOrder(numPages)); -+ alloc_pages(GFP_KERNEL | __GFP_HIGHMEM | gcdNOWARN, order); - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) - mdl->exact = gcvFALSE; -@@ -4239,13 +4355,13 @@ gckOS_LockPages( - } - - mdlMap->vma->vm_flags |= gcdVM_FLAGS; --#if !gcdPAGED_MEMORY_CACHEABLE -+ - if (Cacheable == gcvFALSE) - { - /* Make this mapping non-cached. */ - mdlMap->vma->vm_page_prot = gcmkPAGED_MEMROY_PROT(mdlMap->vma->vm_page_prot); - } --#endif -+ - addr = mdl->addr; - - /* Now map all the vmalloc pages to this user address. */ -@@ -5336,6 +5452,7 @@ OnError: - { - /* Get the user pages. */ - down_read(¤t->mm->mmap_sem); -+ - result = get_user_pages(current, - current->mm, - memory & PAGE_MASK, -@@ -5345,105 +5462,127 @@ OnError: - pages, - gcvNULL - ); -+ - up_read(¤t->mm->mmap_sem); - - if (result <=0 || result < pageCount) - { - struct vm_area_struct *vma; - -- /* Free the page table. */ -- if (pages != gcvNULL) -+ /* Release the pages if any. */ -+ if (result > 0) - { -- /* Release the pages if any. */ -- if (result > 0) -+ for (i = 0; i < result; i++) - { -- for (i = 0; i < result; i++) -+ if (pages[i] == gcvNULL) - { -- if (pages[i] == gcvNULL) -- { -- break; -- } -- -- page_cache_release(pages[i]); -+ break; - } -+ -+ page_cache_release(pages[i]); -+ pages[i] = gcvNULL; - } - -- kfree(pages); -- pages = gcvNULL; -+ result = 0; - } - - vma = find_vma(current->mm, memory); - -- if (vma && (vma->vm_flags & VM_PFNMAP) ) -+ if (vma && (vma->vm_flags & VM_PFNMAP)) - { - pte_t * pte; - spinlock_t * ptl; -- unsigned long pfn; -+ gctUINTPTR_T logical = memory; - -- pgd_t * pgd = pgd_offset(current->mm, memory); -- pud_t * pud = pud_offset(pgd, memory); -- if (pud) -+ for (i = 0; i < pageCount; i++) - { -- pmd_t * pmd = pmd_offset(pud, memory); -- pte = pte_offset_map_lock(current->mm, pmd, memory, &ptl); -- if (!pte) -+ pgd_t * pgd = pgd_offset(current->mm, logical); -+ pud_t * pud = pud_offset(pgd, logical); -+ -+ if (pud) -+ { -+ pmd_t * pmd = pmd_offset(pud, logical); -+ pte = pte_offset_map_lock(current->mm, pmd, logical, &ptl); -+ if (!pte) -+ { -+ gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); -+ } -+ } -+ else - { - gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); - } -+ -+ pages[i] = pte_page(*pte); -+ pte_unmap_unlock(pte, ptl); -+ -+ /* Advance to next. */ -+ logical += PAGE_SIZE; - } -- else -+ } -+ else -+ { -+ gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); -+ } -+ -+ /* Check if this memory is contiguous for old mmu. */ -+ if (Os->device->kernels[Core]->hardware->mmuVersion == 0) -+ { -+ for (i = 1; i < pageCount; i++) - { -- gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); -+ if (pages[i] != nth_page(pages[0], i)) -+ { -+ /* Non-contiguous. */ -+ break; -+ } - } - -- pfn = pte_pfn(*pte); -- -- physical = (pfn << PAGE_SHIFT) | (memory & ~PAGE_MASK); -+ if (i == pageCount) -+ { -+ /* Contiguous memory. */ -+ physical = page_to_phys(pages[0]) | (memory & ~PAGE_MASK); - -- pte_unmap_unlock(pte, ptl); -+ if (!((physical - Os->device->baseAddress) & 0x80000000)) -+ { -+ kfree(pages); -+ pages = gcvNULL; - -- if ((Os->device->kernels[Core]->hardware->mmuVersion == 0) -- && !((physical - Os->device->baseAddress) & 0x80000000)) -- { -- info->pages = gcvNULL; -- info->pageTable = gcvNULL; -+ info->pages = gcvNULL; -+ info->pageTable = gcvNULL; - -- MEMORY_MAP_UNLOCK(Os); -+ MEMORY_MAP_UNLOCK(Os); - -- *Address = physical - Os->device->baseAddress; -- *Info = info; -+ *Address = physical - Os->device->baseAddress; -+ *Info = info; - -- gcmkFOOTER_ARG("*Info=0x%X *Address=0x%08x", -- *Info, *Address); -+ gcmkFOOTER_ARG("*Info=0x%X *Address=0x%08x", -+ *Info, *Address); - -- return gcvSTATUS_OK; -+ return gcvSTATUS_OK; -+ } - } - } -- else -+ -+ /* Reference pages. */ -+ for (i = 0; i < pageCount; i++) - { -- gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); -+ get_page(pages[i]); - } - } - } - -- if (pages) -- { -- for (i = 0; i < pageCount; i++) -- { -- /* Flush(clean) the data cache. */ -- gcmkONERROR(gckOS_CacheFlush(Os, _GetProcessID(), gcvNULL, -- (gctPOINTER)(gctUINTPTR_T)page_to_phys(pages[i]), -- (gctPOINTER)(memory & PAGE_MASK) + i*PAGE_SIZE, -- PAGE_SIZE)); -- } -- } -- else -+ for (i = 0; i < pageCount; i++) - { -+#ifdef CONFIG_ARM -+ gctUINT32 data; -+ get_user(data, (gctUINT32*)((memory & PAGE_MASK) + i * PAGE_SIZE)); -+#endif -+ - /* Flush(clean) the data cache. */ - gcmkONERROR(gckOS_CacheFlush(Os, _GetProcessID(), gcvNULL, -- (gctPOINTER)(gctUINTPTR_T)(physical & PAGE_MASK), -- (gctPOINTER)(memory & PAGE_MASK), -- PAGE_SIZE * pageCount)); -+ (gctPOINTER)(gctUINTPTR_T)page_to_phys(pages[i]), -+ (gctPOINTER)(memory & PAGE_MASK) + i*PAGE_SIZE, -+ PAGE_SIZE)); - } - - #if gcdENABLE_VG -@@ -5464,20 +5603,14 @@ OnError: - (gctPOINTER *) &pageTable, - &address)); - } -+ - /* Fill the page table. */ - for (i = 0; i < pageCount; i++) - { - gctUINT32 phys; - gctUINT32_PTR tab = pageTable + i * (PAGE_SIZE/4096); - -- if (pages) -- { -- phys = page_to_phys(pages[i]); -- } -- else -- { -- phys = (physical & PAGE_MASK) + i * PAGE_SIZE; -- } -+ phys = page_to_phys(pages[i]); - - #if gcdENABLE_VG - if (Core == gcvCORE_VG) -@@ -6126,7 +6259,7 @@ gckOS_CacheClean( - #else - dma_sync_single_for_device( - gcvNULL, -- Physical, -+ (dma_addr_t)Physical, - Bytes, - DMA_TO_DEVICE); - #endif -@@ -6205,7 +6338,7 @@ gckOS_CacheInvalidate( - #else - dma_sync_single_for_device( - gcvNULL, -- Physical, -+ (dma_addr_t)Physical, - Bytes, - DMA_FROM_DEVICE); - #endif -@@ -6279,7 +6412,7 @@ gckOS_CacheFlush( - #else - dma_sync_single_for_device( - gcvNULL, -- Physical, -+ (dma_addr_t)Physical, - Bytes, - DMA_BIDIRECTIONAL); - #endif -@@ -6827,6 +6960,9 @@ gckOS_SetGPUPower( - struct clk *clk_2dcore = Os->device->clk_2d_core; - struct clk *clk_2d_axi = Os->device->clk_2d_axi; - struct clk *clk_vg_axi = Os->device->clk_vg_axi; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ int ret; -+#endif - - gctBOOL oldClockState = gcvFALSE; - gctBOOL oldPowerState = gcvFALSE; -@@ -6852,9 +6988,13 @@ gckOS_SetGPUPower( - } - if((Power == gcvTRUE) && (oldPowerState == gcvFALSE)) - { --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) -- if(!IS_ERR(Os->device->gpu_regulator)) -- regulator_enable(Os->device->gpu_regulator); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ if(!IS_ERR(Os->device->gpu_regulator)) { -+ ret = regulator_enable(Os->device->gpu_regulator); -+ if (ret != 0) -+ gckOS_Print("%s(%d): fail to enable pu regulator %d!\n", -+ __FUNCTION__, __LINE__, ret); -+ } - #else - imx_gpc_power_up_pu(true); - #endif -@@ -6969,7 +7109,7 @@ gckOS_SetGPUPower( - pm_runtime_put_sync(Os->device->pmdev); - #endif - --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) - if(!IS_ERR(Os->device->gpu_regulator)) - regulator_disable(Os->device->gpu_regulator); - #else -@@ -7033,6 +7173,10 @@ gckOS_ResetGPU( - } - - gcmkFOOTER_NO(); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ struct reset_control *rstc = Os->device->rstc[Core]; -+ if (rstc) -+ reset_control_reset(rstc); - #else - imx_src_reset_gpu((int)Core); - #endif -@@ -8529,3 +8673,338 @@ gckOS_GetProcessNameByPid( - return gcvSTATUS_OK; - } - -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ -+gceSTATUS -+gckOS_CreateSyncPoint( -+ IN gckOS Os, -+ OUT gctSYNC_POINT * SyncPoint -+ ) -+{ -+ gceSTATUS status; -+ gcsSYNC_POINT_PTR syncPoint; -+ -+ gcmkHEADER_ARG("Os=0x%X", Os); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); -+ -+ /* Create an sync point structure. */ -+ syncPoint = (gcsSYNC_POINT_PTR) kmalloc( -+ sizeof(gcsSYNC_POINT), GFP_KERNEL | gcdNOWARN); -+ -+ if (syncPoint == gcvNULL) -+ { -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); -+ } -+ -+ /* Initialize the sync point. */ -+ atomic_set(&syncPoint->ref, 1); -+ atomic_set(&syncPoint->state, 0); -+ -+ gcmkONERROR(_AllocateIntegerId(&Os->syncPointDB, syncPoint, &syncPoint->id)); -+ -+ *SyncPoint = (gctSYNC_POINT)(gctUINTPTR_T)syncPoint->id; -+ -+ gcmkFOOTER_ARG("*SyncPonint=%d", syncPoint->id); -+ return gcvSTATUS_OK; -+ -+OnError: -+ if (syncPoint != gcvNULL) -+ { -+ kfree(syncPoint); -+ } -+ -+ gcmkFOOTER(); -+ return status; -+} -+ -+gceSTATUS -+gckOS_ReferenceSyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint -+ ) -+{ -+ gceSTATUS status; -+ gcsSYNC_POINT_PTR syncPoint; -+ -+ gcmkHEADER_ARG("Os=0x%X", Os); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); -+ -+ gcmkONERROR( -+ _QueryIntegerId(&Os->syncPointDB, -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, -+ (gctPOINTER)&syncPoint)); -+ -+ /* Initialize the sync point. */ -+ atomic_inc(&syncPoint->ref); -+ -+ gcmkFOOTER_NO(); -+ return gcvSTATUS_OK; -+ -+OnError: -+ gcmkFOOTER(); -+ return status; -+} -+ -+gceSTATUS -+gckOS_DestroySyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint -+ ) -+{ -+ gceSTATUS status; -+ gcsSYNC_POINT_PTR syncPoint; -+ gctBOOL acquired = gcvFALSE; -+ -+ gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); -+ -+ gcmkONERROR(gckOS_AcquireMutex(Os, Os->syncPointMutex, gcvINFINITE)); -+ acquired = gcvTRUE; -+ -+ gcmkONERROR( -+ _QueryIntegerId(&Os->syncPointDB, -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, -+ (gctPOINTER)&syncPoint)); -+ -+ gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint); -+ -+ if (atomic_dec_and_test(&syncPoint->ref)) -+ { -+ gcmkVERIFY_OK(_DestroyIntegerId(&Os->syncPointDB, syncPoint->id)); -+ -+ /* Free the sgianl. */ -+ syncPoint->timeline = gcvNULL; -+ kfree(syncPoint); -+ } -+ -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); -+ acquired = gcvFALSE; -+ -+ /* Success. */ -+ gcmkFOOTER_NO(); -+ return gcvSTATUS_OK; -+ -+OnError: -+ if (acquired) -+ { -+ /* Release the mutex. */ -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); -+ } -+ -+ gcmkFOOTER(); -+ return status; -+} -+ -+gceSTATUS -+gckOS_SignalSyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint -+ ) -+{ -+ gceSTATUS status; -+ gcsSYNC_POINT_PTR syncPoint; -+ gctBOOL acquired = gcvFALSE; -+ -+ gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); -+ -+ gcmkONERROR(gckOS_AcquireMutex(Os, Os->syncPointMutex, gcvINFINITE)); -+ acquired = gcvTRUE; -+ -+ gcmkONERROR( -+ _QueryIntegerId(&Os->syncPointDB, -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, -+ (gctPOINTER)&syncPoint)); -+ -+ gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint); -+ -+ /* Get state. */ -+ atomic_set(&syncPoint->state, gcvTRUE); -+ -+ /* Signal timeline. */ -+ if (syncPoint->timeline) -+ { -+ sync_timeline_signal(syncPoint->timeline); -+ } -+ -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); -+ acquired = gcvFALSE; -+ -+ /* Success. */ -+ gcmkFOOTER_NO(); -+ return gcvSTATUS_OK; -+ -+OnError: -+ if (acquired) -+ { -+ /* Release the mutex. */ -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); -+ } -+ -+ gcmkFOOTER(); -+ return status; -+} -+ -+gceSTATUS -+gckOS_QuerySyncPoint( -+ IN gckOS Os, -+ IN gctSYNC_POINT SyncPoint, -+ OUT gctBOOL_PTR State -+ ) -+{ -+ gceSTATUS status; -+ gcsSYNC_POINT_PTR syncPoint; -+ -+ gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint); -+ -+ /* Verify the arguments. */ -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); -+ -+ gcmkONERROR( -+ _QueryIntegerId(&Os->syncPointDB, -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, -+ (gctPOINTER)&syncPoint)); -+ -+ gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint); -+ -+ /* Get state. */ -+ *State = atomic_read(&syncPoint->state); -+ -+ /* Success. */ -+ gcmkFOOTER_ARG("*State=%d", *State); -+ return gcvSTATUS_OK; -+ -+OnError: -+ gcmkFOOTER(); -+ return status; -+} -+ -+gceSTATUS -+gckOS_CreateSyncTimeline( -+ IN gckOS Os, -+ OUT gctHANDLE * Timeline -+ ) -+{ -+ struct viv_sync_timeline * timeline; -+ -+ /* Create viv sync timeline. */ -+ timeline = viv_sync_timeline_create("viv timeline", Os); -+ -+ if (timeline == gcvNULL) -+ { -+ /* Out of memory. */ -+ return gcvSTATUS_OUT_OF_MEMORY; -+ } -+ -+ *Timeline = (gctHANDLE) timeline; -+ return gcvSTATUS_OK; -+} -+ -+gceSTATUS -+gckOS_DestroySyncTimeline( -+ IN gckOS Os, -+ IN gctHANDLE Timeline -+ ) -+{ -+ struct viv_sync_timeline * timeline; -+ gcmkASSERT(Timeline != gcvNULL); -+ -+ /* Destroy timeline. */ -+ timeline = (struct viv_sync_timeline *) Timeline; -+ sync_timeline_destroy(&timeline->obj); -+ -+ return gcvSTATUS_OK; -+} -+ -+gceSTATUS -+gckOS_CreateNativeFence( -+ IN gckOS Os, -+ IN gctHANDLE Timeline, -+ IN gctSYNC_POINT SyncPoint, -+ OUT gctINT * FenceFD -+ ) -+{ -+ int fd = -1; -+ struct viv_sync_timeline *timeline; -+ struct sync_pt * pt = gcvNULL; -+ struct sync_fence * fence; -+ char name[32]; -+ gcsSYNC_POINT_PTR syncPoint; -+ gceSTATUS status; -+ -+ gcmkHEADER_ARG("Os=0x%X Timeline=0x%X SyncPoint=%d", -+ Os, Timeline, (gctUINT)(gctUINTPTR_T)SyncPoint); -+ -+ gcmkONERROR( -+ _QueryIntegerId(&Os->syncPointDB, -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, -+ (gctPOINTER)&syncPoint)); -+ -+ /* Cast timeline. */ -+ timeline = (struct viv_sync_timeline *) Timeline; -+ -+ fd = get_unused_fd(); -+ -+ if (fd < 0) -+ { -+ /* Out of resources. */ -+ gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); -+ } -+ -+ /* Create viv_sync_pt. */ -+ pt = viv_sync_pt_create(timeline, SyncPoint); -+ -+ if (pt == gcvNULL) -+ { -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); -+ } -+ -+ /* Reference sync_timeline. */ -+ syncPoint->timeline = &timeline->obj; -+ -+ /* Build fence name. */ -+ snprintf(name, 32, "viv sync_fence-%u", (gctUINT)(gctUINTPTR_T)SyncPoint); -+ -+ /* Create sync_fence. */ -+ fence = sync_fence_create(name, pt); -+ -+ if (fence == NULL) -+ { -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); -+ } -+ -+ /* Install fence to fd. */ -+ sync_fence_install(fence, fd); -+ -+ *FenceFD = fd; -+ gcmkFOOTER_ARG("*FenceFD=%d", fd); -+ return gcvSTATUS_OK; -+ -+OnError: -+ /* Error roll back. */ -+ if (pt) -+ { -+ sync_pt_free(pt); -+ } -+ -+ if (fd > 0) -+ { -+ put_unused_fd(fd); -+ } -+ -+ gcmkFOOTER(); -+ return status; -+} -+#endif -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c -new file mode 100644 -index 0000000..7efae1c ---- /dev/null -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c -@@ -0,0 +1,174 @@ -+/**************************************************************************** -+* -+* Copyright (C) 2005 - 2013 by Vivante Corp. -+* -+* This program is free software; you can redistribute it and/or modify -+* it under the terms of the GNU General Public License as published by -+* the Free Software Foundation; either version 2 of the license, or -+* (at your option) any later version. -+* -+* This program is distributed in the hope that it will be useful, -+* but WITHOUT ANY WARRANTY; without even the implied warranty of -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+* GNU General Public License for more details. -+* -+* You should have received a copy of the GNU General Public License -+* along with this program; if not write to the Free Software -+* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+* -+*****************************************************************************/ -+ -+ -+#include <linux/kernel.h> -+#include <linux/file.h> -+#include <linux/fs.h> -+#include <linux/miscdevice.h> -+#include <linux/module.h> -+#include <linux/syscalls.h> -+#include <linux/uaccess.h> -+ -+#include "gc_hal_kernel_sync.h" -+ -+#if gcdANDROID_NATIVE_FENCE_SYNC -+ -+static struct sync_pt * -+viv_sync_pt_dup( -+ struct sync_pt * sync_pt -+ ) -+{ -+ gceSTATUS status; -+ struct viv_sync_pt *pt; -+ struct viv_sync_pt *src; -+ struct viv_sync_timeline *obj; -+ -+ src = (struct viv_sync_pt *) sync_pt; -+ obj = (struct viv_sync_timeline *) sync_pt->parent; -+ -+ /* Create the new sync_pt. */ -+ pt = (struct viv_sync_pt *) -+ sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt)); -+ -+ pt->stamp = src->stamp; -+ pt->sync = src->sync; -+ -+ /* Reference sync point. */ -+ status = gckOS_ReferenceSyncPoint(obj->os, pt->sync); -+ -+ if (gcmIS_ERROR(status)) -+ { -+ sync_pt_free((struct sync_pt *)pt); -+ return NULL; -+ } -+ -+ return (struct sync_pt *)pt; -+} -+ -+static int -+viv_sync_pt_has_signaled( -+ struct sync_pt * sync_pt -+ ) -+{ -+ gceSTATUS status; -+ gctBOOL state; -+ struct viv_sync_pt * pt; -+ struct viv_sync_timeline * obj; -+ -+ pt = (struct viv_sync_pt *)sync_pt; -+ obj = (struct viv_sync_timeline *)sync_pt->parent; -+ -+ status = gckOS_QuerySyncPoint(obj->os, pt->sync, &state); -+ -+ if (gcmIS_ERROR(status)) -+ { -+ /* Error. */ -+ return -1; -+ } -+ -+ return state; -+} -+ -+static int -+viv_sync_pt_compare( -+ struct sync_pt * a, -+ struct sync_pt * b -+ ) -+{ -+ int ret; -+ struct viv_sync_pt * pt1 = (struct viv_sync_pt *) a; -+ struct viv_sync_pt * pt2 = (struct viv_sync_pt *) b; -+ -+ ret = (pt1->stamp < pt2->stamp) ? -1 -+ : (pt1->stamp == pt2->stamp) ? 0 -+ : 1; -+ -+ return ret; -+} -+ -+static void -+viv_sync_pt_free( -+ struct sync_pt * sync_pt -+ ) -+{ -+ struct viv_sync_pt * pt; -+ struct viv_sync_timeline * obj; -+ -+ pt = (struct viv_sync_pt *) sync_pt; -+ obj = (struct viv_sync_timeline *) sync_pt->parent; -+ -+ gckOS_DestroySyncPoint(obj->os, pt->sync); -+} -+ -+static struct sync_timeline_ops viv_timeline_ops = -+{ -+ .driver_name = "viv_sync", -+ .dup = viv_sync_pt_dup, -+ .has_signaled = viv_sync_pt_has_signaled, -+ .compare = viv_sync_pt_compare, -+ .free_pt = viv_sync_pt_free, -+}; -+ -+struct viv_sync_timeline * -+viv_sync_timeline_create( -+ const char * name, -+ gckOS os -+ ) -+{ -+ struct viv_sync_timeline * obj; -+ -+ obj = (struct viv_sync_timeline *) -+ sync_timeline_create(&viv_timeline_ops, sizeof(struct viv_sync_timeline), name); -+ -+ obj->os = os; -+ obj->stamp = 0; -+ -+ return obj; -+} -+ -+struct sync_pt * -+viv_sync_pt_create( -+ struct viv_sync_timeline * obj, -+ gctSYNC_POINT SyncPoint -+ ) -+{ -+ gceSTATUS status; -+ struct viv_sync_pt * pt; -+ -+ pt = (struct viv_sync_pt *) -+ sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt)); -+ -+ pt->stamp = obj->stamp++; -+ pt->sync = SyncPoint; -+ -+ /* Dup signal. */ -+ status = gckOS_ReferenceSyncPoint(obj->os, SyncPoint); -+ -+ if (gcmIS_ERROR(status)) -+ { -+ sync_pt_free((struct sync_pt *)pt); -+ return NULL; -+ } -+ -+ return (struct sync_pt *) pt; -+} -+ -+#endif -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h -new file mode 100644 -index 0000000..6fc12e5 ---- /dev/null -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h -@@ -0,0 +1,71 @@ -+/**************************************************************************** -+* -+* Copyright (C) 2005 - 2013 by Vivante Corp. -+* -+* This program is free software; you can redistribute it and/or modify -+* it under the terms of the GNU General Public License as published by -+* the Free Software Foundation; either version 2 of the license, or -+* (at your option) any later version. -+* -+* This program is distributed in the hope that it will be useful, -+* but WITHOUT ANY WARRANTY; without even the implied warranty of -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+* GNU General Public License for more details. -+* -+* You should have received a copy of the GNU General Public License -+* along with this program; if not write to the Free Software -+* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+* -+*****************************************************************************/ -+ -+ -+#ifndef __gc_hal_kernel_sync_h_ -+#define __gc_hal_kernel_sync_h_ -+ -+#include <linux/types.h> -+ -+#include <linux/sync.h> -+ -+#include <gc_hal.h> -+#include <gc_hal_base.h> -+ -+struct viv_sync_timeline -+{ -+ /* Parent object. */ -+ struct sync_timeline obj; -+ -+ /* Timestamp when sync_pt is created. */ -+ gctUINT stamp; -+ -+ /* Pointer to os struct. */ -+ gckOS os; -+}; -+ -+ -+struct viv_sync_pt -+{ -+ /* Parent object. */ -+ struct sync_pt pt; -+ -+ /* Reference sync point*/ -+ gctSYNC_POINT sync; -+ -+ /* Timestamp when sync_pt is created. */ -+ gctUINT stamp; -+}; -+ -+/* Create viv_sync_timeline object. */ -+struct viv_sync_timeline * -+viv_sync_timeline_create( -+ const char * Name, -+ gckOS Os -+ ); -+ -+/* Create viv_sync_pt object. */ -+struct sync_pt * -+viv_sync_pt_create( -+ struct viv_sync_timeline * Obj, -+ gctSYNC_POINT SyncPoint -+ ); -+ -+#endif /* __gc_hal_kernel_sync_h_ */ --- -1.7.9.5 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch b/recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch deleted file mode 100644 index 815d02c..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b37a944f55a5010bd08297a63db0275540922f32 Mon Sep 17 00:00:00 2001 -From: Otavio Salvador <otavio@ossystems.com.br> -Date: Thu, 22 Aug 2013 16:31:29 -0300 -Subject: [PATCH] drm/vivante: Add ":00" sufix in returned bus Id - -This makes the 3.0.35 compatible with a Xorg driver build for 3.5.7 or -newer kernels. - -Upstream-Status: Inapropriate [embedded specific] - -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> ---- - drivers/gpu/drm/vivante/vivante_drv.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/gpu/drm/vivante/vivante_drv.c b/drivers/gpu/drm/vivante/vivante_drv.c -index 4224608..cea360d 100644 ---- a/drivers/gpu/drm/vivante/vivante_drv.c -+++ b/drivers/gpu/drm/vivante/vivante_drv.c -@@ -55,7 +55,7 @@ - - #include "drm_pciids.h" - --static char platformdevicename[] = "Vivante GCCore"; -+static char platformdevicename[] = "Vivante GCCore:00"; - static struct platform_device *pplatformdev; - - static struct drm_driver driver = { --- -1.8.4.rc1 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch b/recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch deleted file mode 100644 index 0a20b3f..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 149545df26169d257b144ff78934ce9cb5b6818b Mon Sep 17 00:00:00 2001 -From: Otavio Salvador <otavio@ossystems.com.br> -Date: Sat, 19 Oct 2013 10:55:11 -0300 -Subject: [PATCH] epdc: Rename mxcfb_epdc_kernel.h to mxc_epdc.h -Organization: O.S. Systems Software LTDA. - -This allow for forward compatibility with imx-test >= 3.10.9-1.0.0. - -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> ---- - drivers/video/mxc/mxc_epdc_fb.c | 2 +- - include/linux/mxcfb_epdc.h | 49 +++++++++++++++++++++++++++++++++++++++ - include/linux/mxcfb_epdc_kernel.h | 49 --------------------------------------- - 3 files changed, 50 insertions(+), 50 deletions(-) - create mode 100644 include/linux/mxcfb_epdc.h - delete mode 100644 include/linux/mxcfb_epdc_kernel.h - -diff --git a/drivers/video/mxc/mxc_epdc_fb.c b/drivers/video/mxc/mxc_epdc_fb.c -index 4103498..b3ef8ea 100644 ---- a/drivers/video/mxc/mxc_epdc_fb.c -+++ b/drivers/video/mxc/mxc_epdc_fb.c -@@ -43,7 +43,7 @@ - #include <linux/dmaengine.h> - #include <linux/pxp_dma.h> - #include <linux/mxcfb.h> --#include <linux/mxcfb_epdc_kernel.h> -+#include <linux/mxcfb_epdc.h> - #include <linux/gpio.h> - #include <linux/regulator/driver.h> - #include <linux/fsl_devices.h> -diff --git a/include/linux/mxcfb_epdc.h b/include/linux/mxcfb_epdc.h -new file mode 100644 -index 0000000..06fea6f ---- /dev/null -+++ b/include/linux/mxcfb_epdc.h -@@ -0,0 +1,49 @@ -+/* -+ * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ * -+ */ -+#ifndef _MXCFB_EPDC_KERNEL -+#define _MXCFB_EPDC_KERNEL -+ -+void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, -+ struct fb_info *info); -+int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info); -+int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); -+int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data, -+ struct fb_info *info); -+int mxc_epdc_fb_wait_update_complete( -+ struct mxcfb_update_marker_data *marker_data, -+ struct fb_info *info); -+int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay, -+ struct fb_info *info); -+int mxc_epdc_get_pwrdown_delay(struct fb_info *info); -+int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); -+ -+void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, -+ struct fb_info *info); -+int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info); -+int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); -+int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data, -+ struct fb_info *info); -+int mxc_spdc_fb_wait_update_complete( -+ struct mxcfb_update_marker_data *marker_data, -+ struct fb_info *info); -+int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay, -+ struct fb_info *info); -+int mxc_spdc_get_pwrdown_delay(struct fb_info *info); -+int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); -+#endif -diff --git a/include/linux/mxcfb_epdc_kernel.h b/include/linux/mxcfb_epdc_kernel.h -deleted file mode 100644 -index 06fea6f..0000000 ---- a/include/linux/mxcfb_epdc_kernel.h -+++ /dev/null -@@ -1,49 +0,0 @@ --/* -- * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- * -- */ --#ifndef _MXCFB_EPDC_KERNEL --#define _MXCFB_EPDC_KERNEL -- --void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, -- struct fb_info *info); --int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info); --int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); --int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data, -- struct fb_info *info); --int mxc_epdc_fb_wait_update_complete( -- struct mxcfb_update_marker_data *marker_data, -- struct fb_info *info); --int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay, -- struct fb_info *info); --int mxc_epdc_get_pwrdown_delay(struct fb_info *info); --int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); -- --void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, -- struct fb_info *info); --int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info); --int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); --int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data, -- struct fb_info *info); --int mxc_spdc_fb_wait_update_complete( -- struct mxcfb_update_marker_data *marker_data, -- struct fb_info *info); --int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay, -- struct fb_info *info); --int mxc_spdc_get_pwrdown_delay(struct fb_info *info); --int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); --#endif --- -1.8.4.rc3 - diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig deleted file mode 100644 index d709519..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig +++ /dev/null @@ -1,301 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_CGROUPS=y -CONFIG_EMBEDDED=y -CONFIG_PERF_EVENTS=y -CONFIG_KPROBES=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_MXC=y -CONFIG_GPIO_PCA953X=y -CONFIG_ARCH_MX6=y -CONFIG_FORCE_MAX_ZONEORDER=14 -CONFIG_MACH_MX6Q_ARM2=y -CONFIG_MACH_MX6Q_SABRELITE=y -CONFIG_MACH_MX6Q_SABRESD=y -CONFIG_MACH_MX6Q_SABREAUTO=y -CONFIG_MACH_MX6Q_HDMIDONGLE=y -CONFIG_USB_EHCI_ARC_H1=y -CONFIG_USB_FSL_ARC_OTG=y -CONFIG_MXC_PWM=y -CONFIG_MXC_REBOOT_MFGMODE=y -CONFIG_CLK_DEBUG=y -CONFIG_DMA_ZONE_SIZE=184 -# CONFIG_SWP_EMULATE is not set -CONFIG_ARM_ERRATA_743622=y -CONFIG_ARM_ERRATA_751472=y -CONFIG_ARM_ERRATA_754322=y -CONFIG_ARM_ERRATA_764369=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_SMP=y -CONFIG_VMSPLIT_2G=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -CONFIG_HIGHMEM=y -CONFIG_COMPACTION=y -CONFIG_KSM=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_IMX=y -CONFIG_VFP=y -CONFIG_NEON=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y -CONFIG_PM_RUNTIME=y -CONFIG_PM_DEBUG=y -CONFIG_APM_EMULATION=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_INET_LRO is not set -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -CONFIG_LLC2=y -CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_VCAN=y -CONFIG_CAN_FLEXCAN=y -CONFIG_BT=y -CONFIG_BT_L2CAP=y -CONFIG_BT_SCO=y -CONFIG_BT_RFCOMM=y -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=y -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=y -CONFIG_BT_HCIBTUSB=y -CONFIG_BT_HCIUART=y -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIVHCI=y -CONFIG_CFG80211=y -CONFIG_RFKILL=y -CONFIG_RFKILL_INPUT=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_CONNECTOR=y -CONFIG_MTD=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_CFI=y -CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_M25P80=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_GPMI_NAND=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_MISC_DEVICES=y -CONFIG_MXS_PERFMON=m -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_ATA=y -# CONFIG_SATA_PMP is not set -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_NETDEVICES=y -CONFIG_MICREL_PHY=y -CONFIG_NET_ETHERNET=y -CONFIG_SMSC911X=y -CONFIG_FEC_NAPI=y -# CONFIG_NETDEV_1000 is not set -# CONFIG_NETDEV_10000 is not set -CONFIG_ATH_COMMON=m -CONFIG_ATH6KL=m -CONFIG_HOSTAP=y -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_GPIO=y -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_EGALAX=y -CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH=y -CONFIG_TOUCHSCREEN_ELAN=y -CONFIG_TOUCHSCREEN_MAX11801=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=y -CONFIG_INPUT_ISL29023=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_SERIAL_IMX=y -CONFIG_SERIAL_IMX_CONSOLE=y -CONFIG_FSL_OTP=y -CONFIG_HW_RANDOM=y -CONFIG_MXS_VIIM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_IMX=y -CONFIG_SPI=y -CONFIG_SPI_IMX=y -CONFIG_GPIO_SYSFS=y -CONFIG_SABRESD_MAX8903=y -CONFIG_SENSORS_MAX17135=y -CONFIG_SENSORS_MAG3110=y -# CONFIG_MXC_MMA8450 is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y -CONFIG_IMX2_WDT=y -CONFIG_MFD_WM8994=y -CONFIG_MFD_PFUZE=y -CONFIG_MFD_MAX17135=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_PFUZE100=y -CONFIG_REGULATOR_MAX17135=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_DEV=y -# CONFIG_RC_CORE is not set -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set -CONFIG_VIDEO_MXC_CAMERA=m -CONFIG_MXC_CAMERA_OV3640=m -CONFIG_MXC_CAMERA_OV5640=m -CONFIG_MXC_CAMERA_OV8820_MIPI=m -CONFIG_MXC_CAMERA_OV5642=m -CONFIG_MXC_TVIN_ADV7180=m -CONFIG_MXC_CAMERA_OV5640_MIPI=m -CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m -CONFIG_USB_VIDEO_CLASS=m -# CONFIG_RADIO_ADAPTERS is not set -CONFIG_DRM=m -CONFIG_DRM_VIVANTE=m -CONFIG_FB=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_BACKLIGHT_GENERIC is not set -CONFIG_BACKLIGHT_PWM=y -CONFIG_FB_MXC_LDB=y -CONFIG_FB_MXC_MIPI_DSI=y -CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y -CONFIG_FB_MXC_EINK_PANEL=y -CONFIG_FB_MXC_HDMI=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FONTS=y -CONFIG_FONT_8x16=y -CONFIG_LOGO=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_USB_AUDIO=y -CONFIG_SND_SOC=y -CONFIG_SND_IMX_SOC=y -CONFIG_SND_SOC_IMX_SGTL5000=y -CONFIG_SND_SOC_IMX_WM8962=y -CONFIG_SND_SOC_IMX_CS42888=y -CONFIG_SND_SOC_IMX_SPDIF=y -CONFIG_SND_SOC_IMX_HDMI=y -CONFIG_HIDRAW=y -CONFIG_HID_A4TECH=m -CONFIG_HID_APPLE=m -CONFIG_HID_BELKIN=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GYRATION=m -CONFIG_HID_LOGITECH=m -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_PANTHERLORD=m -CONFIG_HID_PETALYNX=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_HID_SUNPLUS=m -CONFIG_USB=y -# CONFIG_USB_DEVICE_CLASS is not set -CONFIG_USB_SUSPEND=y -# CONFIG_USB_OTG_WHITELIST is not set -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ARC=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -# CONFIG_USB_EHCI_TT_NEWSCHED is not set -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_AUDIO=m -CONFIG_USB_ETH=m -CONFIG_USB_FILE_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_MXC_OTG=y -CONFIG_MMC=y -CONFIG_MMC_UNSAFE_RESUME=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_ESDHC_IMX=y -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_INTF_DEV_UIE_EMUL=y -CONFIG_RTC_DRV_SNVS=y -CONFIG_DMADEVICES=y -CONFIG_MXC_PXP_V2=y -CONFIG_IMX_SDMA=y -CONFIG_MXC_IPU=y -# CONFIG_MXC_HMP4E is not set -# CONFIG_MXC_HWEVENT is not set -CONFIG_MXC_ASRC=y -CONFIG_MXC_MLB150=m -CONFIG_MXC_GPU_VIV=y -CONFIG_MXC_MIPI_CSI2=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set -CONFIG_EXT4_FS=y -CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_CRAMFS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_ROOT_NFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_EFI_PARTITION=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=m -CONFIG_MAGIC_SYSRQ=y -CONFIG_SYSCTL_SYSCALL_CHECK=y -# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set -CONFIG_FTRACE=y -# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CTS=y -CONFIG_CRYPTO_LRW=y -CONFIG_CRYPTO_PCBC=y -CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRYPTO_DEV_FSL_CAAM=y -CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y -CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y -CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y -CONFIG_CRC_CCITT=m diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig deleted file mode 100644 index 542e949..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig +++ /dev/null @@ -1,302 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_CGROUPS=y -CONFIG_EMBEDDED=y -CONFIG_PERF_EVENTS=y -CONFIG_KPROBES=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_MXC=y -CONFIG_GPIO_PCA953X=y -CONFIG_ARCH_MX6=y -CONFIG_FORCE_MAX_ZONEORDER=14 -CONFIG_MACH_MX6Q_ARM2=y -CONFIG_MACH_MX6Q_SABRELITE=y -CONFIG_MACH_MX6Q_SABRESD=y -CONFIG_MACH_MX6Q_SABREAUTO=y -CONFIG_MACH_MX6Q_HDMIDONGLE=y -CONFIG_USB_EHCI_ARC_H1=y -CONFIG_USB_FSL_ARC_OTG=y -CONFIG_MXC_PWM=y -CONFIG_MXC_REBOOT_MFGMODE=y -CONFIG_CLK_DEBUG=y -CONFIG_DMA_ZONE_SIZE=184 -# CONFIG_SWP_EMULATE is not set -CONFIG_ARM_ERRATA_743622=y -CONFIG_ARM_ERRATA_751472=y -CONFIG_ARM_ERRATA_754322=y -CONFIG_ARM_ERRATA_764369=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_SMP=y -CONFIG_VMSPLIT_2G=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -CONFIG_HIGHMEM=y -CONFIG_COMPACTION=y -CONFIG_KSM=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_IMX=y -CONFIG_VFP=y -CONFIG_NEON=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y -CONFIG_PM_RUNTIME=y -CONFIG_PM_DEBUG=y -CONFIG_APM_EMULATION=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_INET_LRO is not set -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -CONFIG_LLC2=y -CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_VCAN=y -CONFIG_CAN_FLEXCAN=y -CONFIG_BT=y -CONFIG_BT_L2CAP=y -CONFIG_BT_SCO=y -CONFIG_BT_RFCOMM=y -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=y -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=y -CONFIG_BT_HCIBTUSB=y -CONFIG_BT_HCIUART=y -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIVHCI=y -CONFIG_CFG80211=y -CONFIG_RFKILL=y -CONFIG_RFKILL_INPUT=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_CONNECTOR=y -CONFIG_MTD=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_CFI=y -CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_M25P80=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_GPMI_NAND=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_MISC_DEVICES=y -CONFIG_MXS_PERFMON=m -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_ATA=y -# CONFIG_SATA_PMP is not set -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_NETDEVICES=y -CONFIG_MICREL_PHY=y -CONFIG_NET_ETHERNET=y -CONFIG_SMSC911X=y -CONFIG_FEC_NAPI=y -# CONFIG_NETDEV_1000 is not set -# CONFIG_NETDEV_10000 is not set -CONFIG_ATH_COMMON=m -CONFIG_ATH6KL=m -CONFIG_HOSTAP=y -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_GPIO=y -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_EGALAX=y -CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH=y -CONFIG_TOUCHSCREEN_ELAN=y -CONFIG_TOUCHSCREEN_MAX11801=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=y -CONFIG_INPUT_ISL29023=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_SERIAL_IMX=y -CONFIG_SERIAL_IMX_CONSOLE=y -CONFIG_FSL_OTP=y -CONFIG_HW_RANDOM=y -CONFIG_MXS_VIIM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_IMX=y -CONFIG_SPI=y -CONFIG_SPI_IMX=y -CONFIG_GPIO_SYSFS=y -CONFIG_SABRESD_MAX8903=y -CONFIG_SENSORS_MAX17135=y -CONFIG_SENSORS_MAG3110=y -# CONFIG_MXC_MMA8450 is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y -CONFIG_IMX2_WDT=y -CONFIG_MFD_WM8994=y -CONFIG_MFD_PFUZE=y -CONFIG_MFD_MAX17135=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_PFUZE100=y -CONFIG_REGULATOR_MAX17135=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_DEV=y -# CONFIG_RC_CORE is not set -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set -CONFIG_VIDEO_MXC_CAMERA=m -CONFIG_MXC_CAMERA_OV3640=m -CONFIG_MXC_CAMERA_OV5640=m -CONFIG_MXC_CAMERA_OV8820_MIPI=m -CONFIG_MXC_CAMERA_OV5642=m -CONFIG_MXC_TVIN_ADV7180=m -CONFIG_MXC_CAMERA_OV5640_MIPI=m -CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m -CONFIG_USB_VIDEO_CLASS=m -# CONFIG_RADIO_ADAPTERS is not set -CONFIG_DRM=m -CONFIG_DRM_VIVANTE=m -CONFIG_FB=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_BACKLIGHT_GENERIC is not set -CONFIG_BACKLIGHT_PWM=y -CONFIG_FB_MXC_LDB=y -CONFIG_FB_MXC_MIPI_DSI=y -CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y -CONFIG_FB_MXC_EINK_PANEL=y -CONFIG_FB_MXC_HDMI=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FONTS=y -CONFIG_FONT_8x16=y -CONFIG_LOGO=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_USB_AUDIO=y -CONFIG_SND_SOC=y -CONFIG_SND_IMX_SOC=y -CONFIG_SND_SOC_IMX_SGTL5000=y -CONFIG_SND_SOC_IMX_WM8962=y -CONFIG_SND_SOC_IMX_CS42888=y -CONFIG_SND_SOC_IMX_SPDIF=y -CONFIG_SND_SOC_IMX_HDMI=y -CONFIG_HIDRAW=y -CONFIG_HID_A4TECH=m -CONFIG_HID_APPLE=m -CONFIG_HID_BELKIN=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GYRATION=m -CONFIG_HID_LOGITECH=m -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_PANTHERLORD=m -CONFIG_HID_PETALYNX=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_HID_SUNPLUS=m -CONFIG_USB=y -# CONFIG_USB_DEVICE_CLASS is not set -CONFIG_USB_SUSPEND=y -# CONFIG_USB_OTG_WHITELIST is not set -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ARC=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -# CONFIG_USB_EHCI_TT_NEWSCHED is not set -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_AUDIO=m -CONFIG_USB_ETH=m -CONFIG_USB_FILE_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_MXC_OTG=y -CONFIG_MMC=y -CONFIG_MMC_UNSAFE_RESUME=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_ESDHC_IMX=y -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_INTF_DEV_UIE_EMUL=y -CONFIG_RTC_DRV_SNVS=y -CONFIG_DMADEVICES=y -CONFIG_MXC_PXP_V2=y -CONFIG_IMX_SDMA=y -CONFIG_MXC_IPU=y -# CONFIG_MXC_HMP4E is not set -# CONFIG_MXC_HWEVENT is not set -CONFIG_MXC_ASRC=y -CONFIG_MXC_MLB150=m -CONFIG_MXC_GPU_VIV=y -CONFIG_MXC_MIPI_CSI2=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set -CONFIG_EXT4_FS=y -CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_CRAMFS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_ROOT_NFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_EFI_PARTITION=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=m -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_FS=y -CONFIG_SYSCTL_SYSCALL_CHECK=y -# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set -CONFIG_FTRACE=y -# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CTS=y -CONFIG_CRYPTO_LRW=y -CONFIG_CRYPTO_PCBC=y -CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRYPTO_DEV_FSL_CAAM=y -CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y -CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y -CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y -CONFIG_CRC_CCITT=m diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig deleted file mode 100644 index b8f88f7..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig +++ /dev/null @@ -1,267 +0,0 @@ -CONFIG_ARM_PATCH_PHYS_VIRT=y -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_CGROUPS=y -CONFIG_EMBEDDED=y -CONFIG_PERF_EVENTS=y -CONFIG_KPROBES=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_MXC=y -CONFIG_GPIO_PCA953X=y -CONFIG_ARCH_MX6=y -CONFIG_FORCE_MAX_ZONEORDER=14 -CONFIG_MACH_MX6Q_ARM2=y -CONFIG_MACH_MX6SL_ARM2=y -CONFIG_MACH_MX6SL_EVK=y -CONFIG_MACH_MX6Q_SABRESD=y -CONFIG_USB_EHCI_ARC_H1=y -CONFIG_MX6_INTER_LDO_BYPASS=y -CONFIG_MXC_PWM=y -CONFIG_CLK_DEBUG=y -CONFIG_DMA_ZONE_SIZE=184 -CONFIG_ARM_ERRATA_743622=y -CONFIG_ARM_ERRATA_754322=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_VMSPLIT_2G=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -CONFIG_HIGHMEM=y -CONFIG_COMPACTION=y -CONFIG_KSM=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" -CONFIG_AUTO_ZRELADDR=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -# CONFIG_CPU_FREQ_IMX is not set -CONFIG_VFP=y -CONFIG_NEON=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y -CONFIG_PM_RUNTIME=y -CONFIG_PM_DEBUG=y -CONFIG_APM_EMULATION=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_INET_LRO is not set -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -CONFIG_LLC2=y -CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_VCAN=y -CONFIG_CAN_FLEXCAN=y -CONFIG_BT=y -CONFIG_BT_L2CAP=y -CONFIG_BT_SCO=y -CONFIG_BT_RFCOMM=y -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=y -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=y -CONFIG_BT_HCIBTUSB=y -CONFIG_BT_HCIUART=y -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIVHCI=y -CONFIG_CFG80211=y -CONFIG_RFKILL=y -CONFIG_RFKILL_INPUT=y -CONFIG_UEVENT_HELPER_PATH="" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_CONNECTOR=y -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_M25P80=y -CONFIG_MTD_NAND=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_MISC_DEVICES=y -CONFIG_MXS_PERFMON=m -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_ATA=y -# CONFIG_SATA_PMP is not set -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_NETDEVICES=y -CONFIG_MICREL_PHY=y -CONFIG_NET_ETHERNET=y -CONFIG_SMSC911X=y -# CONFIG_NETDEV_1000 is not set -# CONFIG_NETDEV_10000 is not set -CONFIG_ATH_COMMON=m -CONFIG_ATH6KL=m -CONFIG_HOSTAP=y -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_GPIO=y -CONFIG_KEYBOARD_IMX=y -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_EGALAX=y -CONFIG_TOUCHSCREEN_ELAN=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=y -CONFIG_INPUT_ISL29023=y -CONFIG_SERIAL_IMX=y -CONFIG_SERIAL_IMX_CONSOLE=y -CONFIG_FSL_OTP=y -CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_FSL_RNGC=y -CONFIG_MXS_VIIM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_IMX=y -CONFIG_SPI=y -CONFIG_SPI_IMX=y -CONFIG_GPIO_SYSFS=y -CONFIG_SABRESD_MAX8903=y -CONFIG_SENSORS_MAX17135=y -CONFIG_SENSORS_MAG3110=y -# CONFIG_MXC_MMA8451 is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y -CONFIG_IMX2_WDT=y -CONFIG_MFD_WM8994=y -CONFIG_MFD_PFUZE=y -CONFIG_MFD_MAX17135=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_PFUZE100=y -CONFIG_REGULATOR_MAX17135=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_DEV=y -# CONFIG_RC_CORE is not set -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set -CONFIG_VIDEO_MXC_CSI_CAMERA=y -CONFIG_MXC_CAMERA_OV5640=y -CONFIG_VIDEO_MXC_PXP_V4L2=y -CONFIG_USB_VIDEO_CLASS=m -# CONFIG_RADIO_ADAPTERS is not set -CONFIG_FB=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_BACKLIGHT_GENERIC is not set -CONFIG_BACKLIGHT_PWM=y -CONFIG_FB_MXC_SEIKO_WVGA_SYNC_PANEL=y -CONFIG_FB_MXC_SII902X_ELCDIF=y -CONFIG_FB_MXC_EINK_PANEL=y -CONFIG_FB_MXC_ELCDIF_FB=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FONTS=y -CONFIG_FONT_8x16=y -CONFIG_LOGO=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_USB_AUDIO=y -CONFIG_SND_SOC=y -CONFIG_SND_IMX_SOC=y -CONFIG_SND_SOC_IMX_SGTL5000=y -CONFIG_SND_SOC_IMX_WM8958=y -CONFIG_SND_SOC_IMX_WM8962=y -CONFIG_SND_SOC_IMX_CS42888=y -CONFIG_SND_SOC_IMX_SPDIF=y -CONFIG_SND_SOC_IMX_HDMI=y -CONFIG_HIDRAW=y -CONFIG_HID_A4TECH=m -CONFIG_HID_APPLE=m -CONFIG_HID_BELKIN=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GYRATION=m -CONFIG_HID_LOGITECH=m -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_PANTHERLORD=m -CONFIG_HID_PETALYNX=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_HID_SUNPLUS=m -CONFIG_USB=y -# CONFIG_USB_DEVICE_CLASS is not set -CONFIG_USB_SUSPEND=y -# CONFIG_USB_OTG_WHITELIST is not set -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ARC=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -# CONFIG_USB_EHCI_TT_NEWSCHED is not set -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_AUDIO=m -CONFIG_USB_ETH=m -CONFIG_USB_FILE_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_MXC_OTG=y -CONFIG_MMC=y -CONFIG_MMC_UNSAFE_RESUME=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_ESDHC_IMX=y -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_INTF_DEV_UIE_EMUL=y -CONFIG_RTC_DRV_SNVS=y -CONFIG_DMADEVICES=y -CONFIG_MXC_PXP_V2=y -CONFIG_IMX_SDMA=y -# CONFIG_MXC_HMP4E is not set -# CONFIG_MXC_HWEVENT is not set -CONFIG_MXC_ASRC=y -CONFIG_MXC_MLB150=m -CONFIG_MXC_GPU_VIV=y -CONFIG_MXC_MIPI_CSI2=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set -CONFIG_EXT4_FS=y -CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_CRAMFS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_ROOT_NFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_EFI_PARTITION=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=m -CONFIG_DEBUG_FS=y -CONFIG_SYSCTL_SYSCALL_CHECK=y -CONFIG_FTRACE=y -CONFIG_CRYPTO_AUTHENC=m -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_CBC=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRYPTO_DEV_DCP=y -CONFIG_CRC_CCITT=m diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig deleted file mode 100644 index b8f88f7..0000000 --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig +++ /dev/null @@ -1,267 +0,0 @@ -CONFIG_ARM_PATCH_PHYS_VIRT=y -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_CGROUPS=y -CONFIG_EMBEDDED=y -CONFIG_PERF_EVENTS=y -CONFIG_KPROBES=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_MXC=y -CONFIG_GPIO_PCA953X=y -CONFIG_ARCH_MX6=y -CONFIG_FORCE_MAX_ZONEORDER=14 -CONFIG_MACH_MX6Q_ARM2=y -CONFIG_MACH_MX6SL_ARM2=y -CONFIG_MACH_MX6SL_EVK=y -CONFIG_MACH_MX6Q_SABRESD=y -CONFIG_USB_EHCI_ARC_H1=y -CONFIG_MX6_INTER_LDO_BYPASS=y -CONFIG_MXC_PWM=y -CONFIG_CLK_DEBUG=y -CONFIG_DMA_ZONE_SIZE=184 -CONFIG_ARM_ERRATA_743622=y -CONFIG_ARM_ERRATA_754322=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_VMSPLIT_2G=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -CONFIG_HIGHMEM=y -CONFIG_COMPACTION=y -CONFIG_KSM=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" -CONFIG_AUTO_ZRELADDR=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -# CONFIG_CPU_FREQ_IMX is not set -CONFIG_VFP=y -CONFIG_NEON=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y -CONFIG_PM_RUNTIME=y -CONFIG_PM_DEBUG=y -CONFIG_APM_EMULATION=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_INET_LRO is not set -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -CONFIG_LLC2=y -CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_VCAN=y -CONFIG_CAN_FLEXCAN=y -CONFIG_BT=y -CONFIG_BT_L2CAP=y -CONFIG_BT_SCO=y -CONFIG_BT_RFCOMM=y -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=y -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=y -CONFIG_BT_HCIBTUSB=y -CONFIG_BT_HCIUART=y -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIVHCI=y -CONFIG_CFG80211=y -CONFIG_RFKILL=y -CONFIG_RFKILL_INPUT=y -CONFIG_UEVENT_HELPER_PATH="" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_CONNECTOR=y -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_M25P80=y -CONFIG_MTD_NAND=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_MISC_DEVICES=y -CONFIG_MXS_PERFMON=m -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_ATA=y -# CONFIG_SATA_PMP is not set -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_NETDEVICES=y -CONFIG_MICREL_PHY=y -CONFIG_NET_ETHERNET=y -CONFIG_SMSC911X=y -# CONFIG_NETDEV_1000 is not set -# CONFIG_NETDEV_10000 is not set -CONFIG_ATH_COMMON=m -CONFIG_ATH6KL=m -CONFIG_HOSTAP=y -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_GPIO=y -CONFIG_KEYBOARD_IMX=y -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_EGALAX=y -CONFIG_TOUCHSCREEN_ELAN=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=y -CONFIG_INPUT_ISL29023=y -CONFIG_SERIAL_IMX=y -CONFIG_SERIAL_IMX_CONSOLE=y -CONFIG_FSL_OTP=y -CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_FSL_RNGC=y -CONFIG_MXS_VIIM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_IMX=y -CONFIG_SPI=y -CONFIG_SPI_IMX=y -CONFIG_GPIO_SYSFS=y -CONFIG_SABRESD_MAX8903=y -CONFIG_SENSORS_MAX17135=y -CONFIG_SENSORS_MAG3110=y -# CONFIG_MXC_MMA8451 is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y -CONFIG_IMX2_WDT=y -CONFIG_MFD_WM8994=y -CONFIG_MFD_PFUZE=y -CONFIG_MFD_MAX17135=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_PFUZE100=y -CONFIG_REGULATOR_MAX17135=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_DEV=y -# CONFIG_RC_CORE is not set -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set -CONFIG_VIDEO_MXC_CSI_CAMERA=y -CONFIG_MXC_CAMERA_OV5640=y -CONFIG_VIDEO_MXC_PXP_V4L2=y -CONFIG_USB_VIDEO_CLASS=m -# CONFIG_RADIO_ADAPTERS is not set -CONFIG_FB=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_BACKLIGHT_GENERIC is not set -CONFIG_BACKLIGHT_PWM=y -CONFIG_FB_MXC_SEIKO_WVGA_SYNC_PANEL=y -CONFIG_FB_MXC_SII902X_ELCDIF=y -CONFIG_FB_MXC_EINK_PANEL=y -CONFIG_FB_MXC_ELCDIF_FB=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FONTS=y -CONFIG_FONT_8x16=y -CONFIG_LOGO=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_USB_AUDIO=y -CONFIG_SND_SOC=y -CONFIG_SND_IMX_SOC=y -CONFIG_SND_SOC_IMX_SGTL5000=y -CONFIG_SND_SOC_IMX_WM8958=y -CONFIG_SND_SOC_IMX_WM8962=y -CONFIG_SND_SOC_IMX_CS42888=y -CONFIG_SND_SOC_IMX_SPDIF=y -CONFIG_SND_SOC_IMX_HDMI=y -CONFIG_HIDRAW=y -CONFIG_HID_A4TECH=m -CONFIG_HID_APPLE=m -CONFIG_HID_BELKIN=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GYRATION=m -CONFIG_HID_LOGITECH=m -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_PANTHERLORD=m -CONFIG_HID_PETALYNX=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_HID_SUNPLUS=m -CONFIG_USB=y -# CONFIG_USB_DEVICE_CLASS is not set -CONFIG_USB_SUSPEND=y -# CONFIG_USB_OTG_WHITELIST is not set -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ARC=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -# CONFIG_USB_EHCI_TT_NEWSCHED is not set -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_AUDIO=m -CONFIG_USB_ETH=m -CONFIG_USB_FILE_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_MXC_OTG=y -CONFIG_MMC=y -CONFIG_MMC_UNSAFE_RESUME=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_ESDHC_IMX=y -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_INTF_DEV_UIE_EMUL=y -CONFIG_RTC_DRV_SNVS=y -CONFIG_DMADEVICES=y -CONFIG_MXC_PXP_V2=y -CONFIG_IMX_SDMA=y -# CONFIG_MXC_HMP4E is not set -# CONFIG_MXC_HWEVENT is not set -CONFIG_MXC_ASRC=y -CONFIG_MXC_MLB150=m -CONFIG_MXC_GPU_VIV=y -CONFIG_MXC_MIPI_CSI2=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set -CONFIG_EXT4_FS=y -CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_CRAMFS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_ROOT_NFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_EFI_PARTITION=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=m -CONFIG_DEBUG_FS=y -CONFIG_SYSCTL_SYSCALL_CHECK=y -CONFIG_FTRACE=y -CONFIG_CRYPTO_AUTHENC=m -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_CBC=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRYPTO_DEV_DCP=y -CONFIG_CRC_CCITT=m diff --git a/recipes-kernel/linux/linux-imx_3.0.35.bb b/recipes-kernel/linux/linux-imx_3.0.35.bb deleted file mode 100644 index e2d808e..0000000 --- a/recipes-kernel/linux/linux-imx_3.0.35.bb +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (C) 2011-2013 Freescale Semiconductor -# Released under the MIT license (see COPYING.MIT for the terms) - -include linux-imx.inc - -PR = "r38" - -COMPATIBLE_MACHINE = "(mx6)" - -# Revision of 4.1.0 branch -SRCREV = "bdde708ebfde4a8c1d3829578d3f6481a343533a" -LOCALVERSION = "-4.1.0+yocto" -SRCBRANCH = "imx_3.0.35_4.1.0" - -# Patches need for Yocto and not applied by Freescale when doing 4.1.0 branch -SRC_URI += "file://drm-vivante-Add-00-sufix-in-returned-bus-Id.patch \ - file://epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch \ - file://0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch \ - file://0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch \ - file://0003-ARM-7670-1-fix-the-memset-fix.patch \ - file://0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch \ - file://0005-ENGR00271359-Add-Multi-touch-support.patch \ - file://0006-Add-support-for-DVI-monitors.patch \ - file://0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch \ - file://ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch \ -" -- 1.9.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP 2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP Otavio Salvador @ 2014-03-13 14:10 ` Daiane Angolini 2014-03-13 14:15 ` Daiane Angolini 1 sibling, 0 replies; 8+ messages in thread From: Daiane Angolini @ 2014-03-13 14:10 UTC (permalink / raw) To: Otavio Salvador, meta-freescale Mailing List On 13-03-2014 11:04, Otavio Salvador wrote: > The 1.6 release cycle is focused in the 3.10.17-1.0.0 BSP and has no > compromise in test and maintain the 3.0.35 compatibility. This does > not mean the support as a whole will be dropped but no board in > meta-fsl-arm BSP ought to use it. > > Users which need to use Freescale reference designs with 3.0.35 ought > to keep using the Dora branch. I'm OK with it. And I think there is no meta-fsl-arm-extra board depending on this right now. Could you confirm? Daiane > > Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> > --- > > Changes in v2: > - new patch > > ...Fix-getrusage-related-build-failure-on-gl.patch | 43 - > ...fix-memset-related-crashes-caused-by-rece.patch | 259 - > .../0003-ARM-7670-1-fix-the-memset-fix.patch | 87 - > ...6-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch | 43 - > ...0005-ENGR00271359-Add-Multi-touch-support.patch | 98 - > .../0006-Add-support-for-DVI-monitors.patch | 227 - > ...6-board-mx6q_sabresd-Register-SDHC3-first.patch | 38 - > ...0-gpu-viante-4.6.9p13-kernel-part-integra.patch | 6261 -------------------- > ...m-vivante-Add-00-sufix-in-returned-bus-Id.patch | 31 - > ...-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch | 143 - > .../linux/linux-imx-3.0.35/mx6dl/defconfig | 301 - > .../linux/linux-imx-3.0.35/mx6q/defconfig | 302 - > .../linux/linux-imx-3.0.35/mx6s/defconfig | 267 - > .../linux/linux-imx-3.0.35/mx6sl/defconfig | 267 - > recipes-kernel/linux/linux-imx_3.0.35.bb | 26 - > 15 files changed, 8393 deletions(-) > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx_3.0.35.bb > > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch b/recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch > deleted file mode 100644 > index abc02c9..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch > +++ /dev/null > @@ -1,43 +0,0 @@ > -From 503daf4789dd23e4dc1e16c256de0c163fc2bf87 Mon Sep 17 00:00:00 2001 > -From: Markus Trippelsdorf <markus@trippelsdorf.de> > -Date: Wed, 4 Apr 2012 10:45:27 +0200 > -Subject: [PATCH] perf tools: Fix getrusage() related build failure on glibc > - trunk > -MIME-Version: 1.0 > -Content-Type: text/plain; charset=UTF-8 > -Content-Transfer-Encoding: 8bit > -Organization: O.S. Systems Software LTDA. > - > -On a system running glibc trunk perf doesn't build: > - > - CC builtin-sched.o > -builtin-sched.c: In function ‘get_cpu_usage_nsec_parent’: builtin-sched.c:399:16: error: storage size of ‘ru’ isn’t known builtin-sched.c:403:2: error: implicit declaration of function ‘getrusage’ [-Werror=implicit-function-declaration] > - [...] > - > -Fix it by including sys/resource.h. > - > -Upstream-Status: Pending > - > -Signed-off-by: Markus Trippelsdorf <markus@trippelsdorf.de> > -Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> > -Link: http://lkml.kernel.org/r/20120404084527.GA294@x4 > -Signed-off-by: Ingo Molnar <mingo@kernel.org> > ---- > - tools/perf/builtin-sched.c | 1 + > - 1 file changed, 1 insertion(+) > - > -diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c > -index dcfe887..3632c2f 100644 > ---- a/tools/perf/builtin-sched.c > -+++ b/tools/perf/builtin-sched.c > -@@ -14,6 +14,7 @@ > - #include "util/debug.h" > - > - #include <sys/prctl.h> > -+#include <sys/resource.h> > - > - #include <semaphore.h> > - #include <pthread.h> > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch b/recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch > deleted file mode 100644 > index 4c31e74..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch > +++ /dev/null > @@ -1,259 +0,0 @@ > -From 2235b85f1c76d98b5f1e160cbd0a61a84c15e125 Mon Sep 17 00:00:00 2001 > -From: Ivan Djelic <ivan.djelic@parrot.com> > -Date: Wed, 6 Mar 2013 20:09:27 +0100 > -Subject: [PATCH] ARM: 7668/1: fix memset-related crashes caused by recent GCC > - (4.7.2) optimizations > -Organization: O.S. Systems Software LTDA. > - > -Recent GCC versions (e.g. GCC-4.7.2) perform optimizations based on > -assumptions about the implementation of memset and similar functions. > -The current ARM optimized memset code does not return the value of > -its first argument, as is usually expected from standard implementations. > - > -For instance in the following function: > - > -void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) > -{ > - memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter)); > - waiter->magic = waiter; > - INIT_LIST_HEAD(&waiter->list); > -} > - > -compiled as: > - > -800554d0 <debug_mutex_lock_common>: > -800554d0: e92d4008 push {r3, lr} > -800554d4: e1a00001 mov r0, r1 > -800554d8: e3a02010 mov r2, #16 ; 0x10 > -800554dc: e3a01011 mov r1, #17 ; 0x11 > -800554e0: eb04426e bl 80165ea0 <memset> > -800554e4: e1a03000 mov r3, r0 > -800554e8: e583000c str r0, [r3, #12] > -800554ec: e5830000 str r0, [r3] > -800554f0: e5830004 str r0, [r3, #4] > -800554f4: e8bd8008 pop {r3, pc} > - > -GCC assumes memset returns the value of pointer 'waiter' in register r0; causing > -register/memory corruptions. > - > -This patch fixes the return value of the assembly version of memset. > -It adds a 'mov' instruction and merges an additional load+store into > -existing load/store instructions. > -For ease of review, here is a breakdown of the patch into 4 simple steps: > - > -Step 1 > -====== > -Perform the following substitutions: > -ip -> r8, then > -r0 -> ip, > -and insert 'mov ip, r0' as the first statement of the function. > -At this point, we have a memset() implementation returning the proper result, > -but corrupting r8 on some paths (the ones that were using ip). > - > -Step 2 > -====== > -Make sure r8 is saved and restored when (! CALGN(1)+0) == 1: > - > -save r8: > -- str lr, [sp, #-4]! > -+ stmfd sp!, {r8, lr} > - > -and restore r8 on both exit paths: > -- ldmeqfd sp!, {pc} @ Now <64 bytes to go. > -+ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. > -(...) > - tst r2, #16 > - stmneia ip!, {r1, r3, r8, lr} > -- ldr lr, [sp], #4 > -+ ldmfd sp!, {r8, lr} > - > -Step 3 > -====== > -Make sure r8 is saved and restored when (! CALGN(1)+0) == 0: > - > -save r8: > -- stmfd sp!, {r4-r7, lr} > -+ stmfd sp!, {r4-r8, lr} > - > -and restore r8 on both exit paths: > - bgt 3b > -- ldmeqfd sp!, {r4-r7, pc} > -+ ldmeqfd sp!, {r4-r8, pc} > -(...) > - tst r2, #16 > - stmneia ip!, {r4-r7} > -- ldmfd sp!, {r4-r7, lr} > -+ ldmfd sp!, {r4-r8, lr} > - > -Step 4 > -====== > -Rewrite register list "r4-r7, r8" as "r4-r8". > - > -Upstream-Status: Pending > - > -Signed-off-by: Ivan Djelic <ivan.djelic@parrot.com> > -Reviewed-by: Nicolas Pitre <nico@linaro.org> > -Signed-off-by: Dirk Behme <dirk.behme@gmail.com> > -Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> > -(cherry picked from commit 455bd4c430b0c0a361f38e8658a0d6cb469942b5) > ---- > - arch/arm/lib/memset.S | 85 ++++++++++++++++++++++++++------------------------- > - 1 file changed, 44 insertions(+), 41 deletions(-) > - > -diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S > -index 650d592..d912e73 100644 > ---- a/arch/arm/lib/memset.S > -+++ b/arch/arm/lib/memset.S > -@@ -19,9 +19,9 @@ > - 1: subs r2, r2, #4 @ 1 do we have enough > - blt 5f @ 1 bytes to align with? > - cmp r3, #2 @ 1 > -- strltb r1, [r0], #1 @ 1 > -- strleb r1, [r0], #1 @ 1 > -- strb r1, [r0], #1 @ 1 > -+ strltb r1, [ip], #1 @ 1 > -+ strleb r1, [ip], #1 @ 1 > -+ strb r1, [ip], #1 @ 1 > - add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) > - /* > - * The pointer is now aligned and the length is adjusted. Try doing the > -@@ -29,10 +29,14 @@ > - */ > - > - ENTRY(memset) > -- ands r3, r0, #3 @ 1 unaligned? > -+/* > -+ * Preserve the contents of r0 for the return value. > -+ */ > -+ mov ip, r0 > -+ ands r3, ip, #3 @ 1 unaligned? > - bne 1b @ 1 > - /* > -- * we know that the pointer in r0 is aligned to a word boundary. > -+ * we know that the pointer in ip is aligned to a word boundary. > - */ > - orr r1, r1, r1, lsl #8 > - orr r1, r1, r1, lsl #16 > -@@ -43,29 +47,28 @@ ENTRY(memset) > - #if ! CALGN(1)+0 > - > - /* > -- * We need an extra register for this loop - save the return address and > -- * use the LR > -+ * We need 2 extra registers for this loop - use r8 and the LR > - */ > -- str lr, [sp, #-4]! > -- mov ip, r1 > -+ stmfd sp!, {r8, lr} > -+ mov r8, r1 > - mov lr, r1 > - > - 2: subs r2, r2, #64 > -- stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time. > -- stmgeia r0!, {r1, r3, ip, lr} > -- stmgeia r0!, {r1, r3, ip, lr} > -- stmgeia r0!, {r1, r3, ip, lr} > -+ stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time. > -+ stmgeia ip!, {r1, r3, r8, lr} > -+ stmgeia ip!, {r1, r3, r8, lr} > -+ stmgeia ip!, {r1, r3, r8, lr} > - bgt 2b > -- ldmeqfd sp!, {pc} @ Now <64 bytes to go. > -+ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. > - /* > - * No need to correct the count; we're only testing bits from now on > - */ > - tst r2, #32 > -- stmneia r0!, {r1, r3, ip, lr} > -- stmneia r0!, {r1, r3, ip, lr} > -+ stmneia ip!, {r1, r3, r8, lr} > -+ stmneia ip!, {r1, r3, r8, lr} > - tst r2, #16 > -- stmneia r0!, {r1, r3, ip, lr} > -- ldr lr, [sp], #4 > -+ stmneia ip!, {r1, r3, r8, lr} > -+ ldmfd sp!, {r8, lr} > - > - #else > - > -@@ -74,54 +77,54 @@ ENTRY(memset) > - * whole cache lines at once. > - */ > - > -- stmfd sp!, {r4-r7, lr} > -+ stmfd sp!, {r4-r8, lr} > - mov r4, r1 > - mov r5, r1 > - mov r6, r1 > - mov r7, r1 > -- mov ip, r1 > -+ mov r8, r1 > - mov lr, r1 > - > - cmp r2, #96 > -- tstgt r0, #31 > -+ tstgt ip, #31 > - ble 3f > - > -- and ip, r0, #31 > -- rsb ip, ip, #32 > -- sub r2, r2, ip > -- movs ip, ip, lsl #(32 - 4) > -- stmcsia r0!, {r4, r5, r6, r7} > -- stmmiia r0!, {r4, r5} > -- tst ip, #(1 << 30) > -- mov ip, r1 > -- strne r1, [r0], #4 > -+ and r8, ip, #31 > -+ rsb r8, r8, #32 > -+ sub r2, r2, r8 > -+ movs r8, r8, lsl #(32 - 4) > -+ stmcsia ip!, {r4, r5, r6, r7} > -+ stmmiia ip!, {r4, r5} > -+ tst r8, #(1 << 30) > -+ mov r8, r1 > -+ strne r1, [ip], #4 > - > - 3: subs r2, r2, #64 > -- stmgeia r0!, {r1, r3-r7, ip, lr} > -- stmgeia r0!, {r1, r3-r7, ip, lr} > -+ stmgeia ip!, {r1, r3-r8, lr} > -+ stmgeia ip!, {r1, r3-r8, lr} > - bgt 3b > -- ldmeqfd sp!, {r4-r7, pc} > -+ ldmeqfd sp!, {r4-r8, pc} > - > - tst r2, #32 > -- stmneia r0!, {r1, r3-r7, ip, lr} > -+ stmneia ip!, {r1, r3-r8, lr} > - tst r2, #16 > -- stmneia r0!, {r4-r7} > -- ldmfd sp!, {r4-r7, lr} > -+ stmneia ip!, {r4-r7} > -+ ldmfd sp!, {r4-r8, lr} > - > - #endif > - > - 4: tst r2, #8 > -- stmneia r0!, {r1, r3} > -+ stmneia ip!, {r1, r3} > - tst r2, #4 > -- strne r1, [r0], #4 > -+ strne r1, [ip], #4 > - /* > - * When we get here, we've got less than 4 bytes to zero. We > - * may have an unaligned pointer as well. > - */ > - 5: tst r2, #2 > -- strneb r1, [r0], #1 > -- strneb r1, [r0], #1 > -+ strneb r1, [ip], #1 > -+ strneb r1, [ip], #1 > - tst r2, #1 > -- strneb r1, [r0], #1 > -+ strneb r1, [ip], #1 > - mov pc, lr > - ENDPROC(memset) > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch b/recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch > deleted file mode 100644 > index b8d6f53..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch > +++ /dev/null > @@ -1,87 +0,0 @@ > -From 2ba23fa6c4128febaaf57fe184420a7111caa237 Mon Sep 17 00:00:00 2001 > -From: Nicolas Pitre <nicolas.pitre@linaro.org> > -Date: Tue, 12 Mar 2013 13:00:42 +0100 > -Subject: [PATCH] ARM: 7670/1: fix the memset fix > -Organization: O.S. Systems Software LTDA. > - > -Commit 455bd4c430b0 ("ARM: 7668/1: fix memset-related crashes caused by > -recent GCC (4.7.2) optimizations") attempted to fix a compliance issue > -with the memset return value. However the memset itself became broken > -by that patch for misaligned pointers. > - > -This fixes the above by branching over the entry code from the > -misaligned fixup code to avoid reloading the original pointer. > - > -Also, because the function entry alignment is wrong in the Thumb mode > -compilation, that fixup code is moved to the end. > - > -While at it, the entry instructions are slightly reworked to help dual > -issue pipelines. > - > -Upstream-Status: Pending > - > -Signed-off-by: Nicolas Pitre <nico@linaro.org> > -Tested-by: Alexander Holler <holler@ahsoftware.de> > -Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> > -(cherry picked from commit 418df63adac56841ef6b0f1fcf435bc64d4ed177) > ---- > - arch/arm/lib/memset.S | 33 +++++++++++++-------------------- > - 1 file changed, 13 insertions(+), 20 deletions(-) > - > -diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S > -index d912e73..94b0650 100644 > ---- a/arch/arm/lib/memset.S > -+++ b/arch/arm/lib/memset.S > -@@ -14,31 +14,15 @@ > - > - .text > - .align 5 > -- .word 0 > -- > --1: subs r2, r2, #4 @ 1 do we have enough > -- blt 5f @ 1 bytes to align with? > -- cmp r3, #2 @ 1 > -- strltb r1, [ip], #1 @ 1 > -- strleb r1, [ip], #1 @ 1 > -- strb r1, [ip], #1 @ 1 > -- add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) > --/* > -- * The pointer is now aligned and the length is adjusted. Try doing the > -- * memset again. > -- */ > - > - ENTRY(memset) > --/* > -- * Preserve the contents of r0 for the return value. > -- */ > -- mov ip, r0 > -- ands r3, ip, #3 @ 1 unaligned? > -- bne 1b @ 1 > -+ ands r3, r0, #3 @ 1 unaligned? > -+ mov ip, r0 @ preserve r0 as return value > -+ bne 6f @ 1 > - /* > - * we know that the pointer in ip is aligned to a word boundary. > - */ > -- orr r1, r1, r1, lsl #8 > -+1: orr r1, r1, r1, lsl #8 > - orr r1, r1, r1, lsl #16 > - mov r3, r1 > - cmp r2, #16 > -@@ -127,4 +111,13 @@ ENTRY(memset) > - tst r2, #1 > - strneb r1, [ip], #1 > - mov pc, lr > -+ > -+6: subs r2, r2, #4 @ 1 do we have enough > -+ blt 5b @ 1 bytes to align with? > -+ cmp r3, #2 @ 1 > -+ strltb r1, [ip], #1 @ 1 > -+ strleb r1, [ip], #1 @ 1 > -+ strb r1, [ip], #1 @ 1 > -+ add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) > -+ b 1b > - ENDPROC(memset) > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch b/recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch > deleted file mode 100644 > index 7316351..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch > +++ /dev/null > @@ -1,43 +0,0 @@ > -From d8601292ae25e0af47aa4486055221ab44113f0e Mon Sep 17 00:00:00 2001 > -From: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> > -Date: Mon, 15 Jul 2013 15:34:54 -0500 > -Subject: [PATCH] ENGR00271136 Fix build break when CONFIG_CLK_DEBUG is > - disabled > -Organization: O.S. Systems Software LTDA. > - > -clk structure member name is defined only when CONFIG_CLK_DEBUG is enabled. > -Hence need to encapsulate the code with this config. > - > -Patch received from imx community: > -https://community.freescale.com/thread/308482 > - > -Upstream-Status: Pending > - > -Signed-off-by: xiongweihuang > -Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> > ---- > - arch/arm/plat-mxc/clock.c | 4 ++-- > - 1 file changed, 2 insertions(+), 2 deletions(-) > - > -diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c > -index 93347eb..1aa2664 100755 > ---- a/arch/arm/plat-mxc/clock.c > -+++ b/arch/arm/plat-mxc/clock.c > -@@ -58,12 +58,12 @@ static void __clk_disable(struct clk *clk) > - { > - if (clk == NULL || IS_ERR(clk)) > - return; > -- > -+#ifdef CONFIG_CLK_DEBUG > - if (!clk->usecount) { > - WARN(1, "clock enable/disable mismatch! clk %s\n", clk->name); > - return; > - } > -- > -+#endif > - if (!(--clk->usecount)) { > - if (clk->disable) > - clk->disable(clk); > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch b/recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch > deleted file mode 100644 > index cb20198..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch > +++ /dev/null > @@ -1,98 +0,0 @@ > -From 538f4bb2f7a51f267395550a5be9f0ab2e426712 Mon Sep 17 00:00:00 2001 > -From: Erik Boto <erik.boto@pelagicore.com> > -Date: Tue, 16 Jul 2013 12:06:05 -0500 > -Subject: [PATCH] ENGR00271359 Add Multi-touch support > -Organization: O.S. Systems Software LTDA. > - > -The previous behavior of the driver did not work properly with Qt5 > -QtQuick multi touch-point gestures, due to how touch-points are > -reported when removing a touch-point. My interpretation of the > -available documentation [1] was that the driver should report all > -touch-points between SYN_REPORTs, but it is not explicitly stated so. > -I've found another mail-thread [2] where the creator of the protocol > -states: > - > -"The protocol defines a generic way of sending a variable amount of > -contacts. The contact count is obtained by counting the number of > -non-empty finger packets between SYN_REPORT events."-Henrik Rydberg > - > -I think this verifies my assumption that all touch-points should be > -reported between SYN_REPORTs, otherwise it can not be used to obtain > -the count. > - > -[1] https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt > -[2] http://lists.x.org/archives/xorg-devel/2010-March/006466.html > - > -Upstream-Status: Pending > - > -Signed-off-by: Erik Boto <erik.boto@pelagicore.com> > -Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> > -(cherry picked from commit 7cba001c5a502680f6dbf902821726779a9c9287) > ---- > - drivers/input/touchscreen/egalax_ts.c | 36 +++++++++++++++++------------------ > - 1 file changed, 18 insertions(+), 18 deletions(-) > - > -diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c > -index 0b6cde7..271f820 100644 > ---- a/drivers/input/touchscreen/egalax_ts.c > -+++ b/drivers/input/touchscreen/egalax_ts.c > -@@ -133,7 +133,6 @@ retry: > - } > - > - if (down) { > -- /* should also report old pointers */ > - events[id].valid = valid; > - events[id].status = down; > - events[id].x = x; > -@@ -144,23 +143,6 @@ retry: > - input_report_abs(input_dev, ABS_Y, y); > - input_event(data->input_dev, EV_KEY, BTN_TOUCH, 1); > - input_report_abs(input_dev, ABS_PRESSURE, 1); > --#else > -- for (i = 0; i < MAX_SUPPORT_POINTS; i++) { > -- if (!events[i].valid) > -- continue; > -- dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d", > -- i, valid, x, y); > -- > -- input_report_abs(input_dev, > -- ABS_MT_TRACKING_ID, i); > -- input_report_abs(input_dev, > -- ABS_MT_TOUCH_MAJOR, 1); > -- input_report_abs(input_dev, > -- ABS_MT_POSITION_X, events[i].x); > -- input_report_abs(input_dev, > -- ABS_MT_POSITION_Y, events[i].y); > -- input_mt_sync(input_dev); > -- } > - #endif > - } else { > - dev_dbg(&client->dev, "release id:%d\n", id); > -@@ -176,6 +158,24 @@ retry: > - #endif > - } > - > -+#ifndef CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH > -+ /* report all pointers */ > -+ for (i = 0; i < MAX_SUPPORT_POINTS; i++) { > -+ if (!events[i].valid) > -+ continue; > -+ dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d", > -+ i, valid, x, y); > -+ input_report_abs(input_dev, > -+ ABS_MT_TRACKING_ID, i); > -+ input_report_abs(input_dev, > -+ ABS_MT_TOUCH_MAJOR, 1); > -+ input_report_abs(input_dev, > -+ ABS_MT_POSITION_X, events[i].x); > -+ input_report_abs(input_dev, > -+ ABS_MT_POSITION_Y, events[i].y); > -+ input_mt_sync(input_dev); > -+ } > -+#endif > - input_sync(input_dev); > - return IRQ_HANDLED; > - } > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch b/recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch > deleted file mode 100644 > index 00a6b5c..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch > +++ /dev/null > @@ -1,227 +0,0 @@ > -From 3e6441d113f72b412081a2c87f39011e4c253a35 Mon Sep 17 00:00:00 2001 > -From: Robert Winkler <robert.winkler@boundarydevices.com> > -Date: Fri, 19 Jul 2013 19:00:41 -0700 > -Subject: [PATCH] Add support for DVI monitors > -Organization: O.S. Systems Software LTDA. > - > -Upstream-Status: Pending > - > -Signed-off-by: Robert Winkler <robert.winkler@boundarydevices.com> > ---- > - arch/arm/plat-mxc/include/mach/mxc_hdmi.h | 7 +++ > - drivers/video/mxc_hdmi.c | 98 +++++++++++++------------------ > - 2 files changed, 49 insertions(+), 56 deletions(-) > - > -diff --git a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h > -index 94f7638..af59c62 100644 > ---- a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h > -+++ b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h > -@@ -605,6 +605,10 @@ enum { > - HDMI_IH_MUTE_PHY_STAT0_TX_PHY_LOCK = 0x2, > - HDMI_IH_MUTE_PHY_STAT0_HPD = 0x1, > - > -+/* IH and IH_MUTE convenience macro RX_SENSE | HPD*/ > -+ HDMI_DVI_IH_STAT = 0x3D, > -+ > -+ > - /* IH_AHBDMAAUD_STAT0 field values */ > - HDMI_IH_AHBDMAAUD_STAT0_ERROR = 0x20, > - HDMI_IH_AHBDMAAUD_STAT0_LOST = 0x10, > -@@ -903,6 +907,9 @@ enum { > - HDMI_PHY_HPD = 0x02, > - HDMI_PHY_TX_PHY_LOCK = 0x01, > - > -+/* HDMI STAT convenience RX_SENSE | HPD */ > -+ HDMI_DVI_STAT = 0xF2, > -+ > - /* PHY_I2CM_SLAVE_ADDR field values */ > - HDMI_PHY_I2CM_SLAVE_ADDR_PHY_GEN2 = 0x69, > - HDMI_PHY_I2CM_SLAVE_ADDR_HEAC_PHY = 0x49, > -diff --git a/drivers/video/mxc_hdmi.c b/drivers/video/mxc_hdmi.c > -index c5069aa..544f352 100644 > ---- a/drivers/video/mxc_hdmi.c > -+++ b/drivers/video/mxc_hdmi.c > -@@ -180,7 +180,6 @@ struct mxc_hdmi { > - bool dft_mode_set; > - char *dft_mode_str; > - int default_bpp; > -- u8 latest_intr_stat; > - bool irq_enabled; > - spinlock_t irq_lock; > - bool phy_enabled; > -@@ -1996,58 +1995,48 @@ static void hotplug_worker(struct work_struct *work) > - struct delayed_work *delay_work = to_delayed_work(work); > - struct mxc_hdmi *hdmi = > - container_of(delay_work, struct mxc_hdmi, hotplug_work); > -- u32 phy_int_stat, phy_int_pol, phy_int_mask; > -- u8 val; > -+ u32 hdmi_phy_stat0, hdmi_phy_pol0, hdmi_phy_mask0; > - unsigned long flags; > - char event_string[32]; > - char *envp[] = { event_string, NULL }; > - > -- phy_int_stat = hdmi->latest_intr_stat; > -- phy_int_pol = hdmi_readb(HDMI_PHY_POL0); > - > -- dev_dbg(&hdmi->pdev->dev, "phy_int_stat=0x%x, phy_int_pol=0x%x\n", > -- phy_int_stat, phy_int_pol); > -+ hdmi_phy_stat0 = hdmi_readb(HDMI_PHY_STAT0); > -+ hdmi_phy_pol0 = hdmi_readb(HDMI_PHY_POL0); > -+ > -+ dev_dbg(&hdmi->pdev->dev, "hdmi_phy_stat0=0x%x, hdmi_phy_pol0=0x%x\n", > -+ hdmi_phy_stat0, hdmi_phy_pol0); > -+ > -+ /* Make HPD intr active low to capture unplug event or > -+ * active high to capture plugin event */ > -+ hdmi_writeb((HDMI_DVI_STAT & ~hdmi_phy_stat0), HDMI_PHY_POL0); > - > - /* check cable status */ > -- if (phy_int_stat & HDMI_IH_PHY_STAT0_HPD) { > -- /* cable connection changes */ > -- if (phy_int_pol & HDMI_PHY_HPD) { > -- /* Plugin event */ > -- dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n"); > -- mxc_hdmi_cable_connected(hdmi); > -- > -- /* Make HPD intr active low to capture unplug event */ > -- val = hdmi_readb(HDMI_PHY_POL0); > -- val &= ~HDMI_PHY_HPD; > -- hdmi_writeb(val, HDMI_PHY_POL0); > -- > -- sprintf(event_string, "EVENT=plugin"); > -- kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); > -+ if (hdmi_phy_stat0 & HDMI_DVI_STAT) { > -+ /* Plugin event */ > -+ dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n"); > -+ mxc_hdmi_cable_connected(hdmi); > -+ > -+ sprintf(event_string, "EVENT=plugin"); > -+ kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); > - #ifdef CONFIG_MXC_HDMI_CEC > -- mxc_hdmi_cec_handle(0x80); > -+ mxc_hdmi_cec_handle(0x80); > - #endif > -- hdmi_set_cable_state(1); > -- > -- } else if (!(phy_int_pol & HDMI_PHY_HPD)) { > -- /* Plugout event */ > -- dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n"); > -- hdmi_set_cable_state(0); > -- mxc_hdmi_abort_stream(); > -- mxc_hdmi_cable_disconnected(hdmi); > -+ hdmi_set_cable_state(1); > - > -- /* Make HPD intr active high to capture plugin event */ > -- val = hdmi_readb(HDMI_PHY_POL0); > -- val |= HDMI_PHY_HPD; > -- hdmi_writeb(val, HDMI_PHY_POL0); > -+ } else { > -+ /* Plugout event */ > -+ dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n"); > -+ hdmi_set_cable_state(0); > -+ mxc_hdmi_abort_stream(); > -+ mxc_hdmi_cable_disconnected(hdmi); > - > -- sprintf(event_string, "EVENT=plugout"); > -- kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); > -+ sprintf(event_string, "EVENT=plugout"); > -+ kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); > - #ifdef CONFIG_MXC_HDMI_CEC > -- mxc_hdmi_cec_handle(0x100); > -+ mxc_hdmi_cec_handle(0x100); > - #endif > - > -- } else > -- dev_dbg(&hdmi->pdev->dev, "EVENT=none?\n"); > - } > - > - /* Lock here to ensure full powerdown sequence > -@@ -2055,12 +2044,12 @@ static void hotplug_worker(struct work_struct *work) > - spin_lock_irqsave(&hdmi->irq_lock, flags); > - > - /* Re-enable HPD interrupts */ > -- phy_int_mask = hdmi_readb(HDMI_PHY_MASK0); > -- phy_int_mask &= ~HDMI_PHY_HPD; > -- hdmi_writeb(phy_int_mask, HDMI_PHY_MASK0); > -+ hdmi_phy_mask0 = hdmi_readb(HDMI_PHY_MASK0); > -+ hdmi_phy_mask0 &= ~HDMI_DVI_STAT; > -+ hdmi_writeb(hdmi_phy_mask0, HDMI_PHY_MASK0); > - > - /* Unmute interrupts */ > -- hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0); > -+ hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0); > - > - if (hdmi_readb(HDMI_IH_FC_STAT2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK) > - mxc_hdmi_clear_overflow(); > -@@ -2086,7 +2075,7 @@ static void hdcp_hdp_worker(struct work_struct *work) > - static irqreturn_t mxc_hdmi_hotplug(int irq, void *data) > - { > - struct mxc_hdmi *hdmi = data; > -- u8 val, intr_stat; > -+ u8 val; > - unsigned long flags; > - > - spin_lock_irqsave(&hdmi->irq_lock, flags); > -@@ -2108,25 +2097,22 @@ static irqreturn_t mxc_hdmi_hotplug(int irq, void *data) > - * HDMI registers. > - */ > - /* Capture status - used in hotplug_worker ISR */ > -- intr_stat = hdmi_readb(HDMI_IH_PHY_STAT0); > -- > -- if (intr_stat & HDMI_IH_PHY_STAT0_HPD) { > -+ if (hdmi_readb(HDMI_IH_PHY_STAT0) & HDMI_DVI_IH_STAT) { > - > - dev_dbg(&hdmi->pdev->dev, "Hotplug interrupt received\n"); > -- hdmi->latest_intr_stat = intr_stat; > - > - /* Mute interrupts until handled */ > - > - val = hdmi_readb(HDMI_IH_MUTE_PHY_STAT0); > -- val |= HDMI_IH_MUTE_PHY_STAT0_HPD; > -+ val |= HDMI_DVI_IH_STAT; > - hdmi_writeb(val, HDMI_IH_MUTE_PHY_STAT0); > - > - val = hdmi_readb(HDMI_PHY_MASK0); > -- val |= HDMI_PHY_HPD; > -+ val |= HDMI_DVI_STAT; > - hdmi_writeb(val, HDMI_PHY_MASK0); > - > - /* Clear Hotplug interrupts */ > -- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); > -+ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); > - > - schedule_delayed_work(&(hdmi->hotplug_work), msecs_to_jiffies(20)); > - } > -@@ -2282,13 +2268,13 @@ static void mxc_hdmi_fb_registered(struct mxc_hdmi *hdmi) > - HDMI_PHY_I2CM_CTLINT_ADDR); > - > - /* enable cable hot plug irq */ > -- hdmi_writeb((u8)~HDMI_PHY_HPD, HDMI_PHY_MASK0); > -+ hdmi_writeb((u8)~HDMI_DVI_STAT, HDMI_PHY_MASK0); > - > - /* Clear Hotplug interrupts */ > -- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); > -+ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); > - > - /* Unmute interrupts */ > -- hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0); > -+ hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0); > - > - hdmi->fb_reg = true; > - > -@@ -2522,10 +2508,10 @@ static int mxc_hdmi_disp_init(struct mxc_dispdrv_handle *disp, > - > - /* Configure registers related to HDMI interrupt > - * generation before registering IRQ. */ > -- hdmi_writeb(HDMI_PHY_HPD, HDMI_PHY_POL0); > -+ hdmi_writeb(HDMI_DVI_STAT, HDMI_PHY_POL0); > - > - /* Clear Hotplug interrupts */ > -- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); > -+ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); > - > - hdmi->nb.notifier_call = mxc_hdmi_fb_event; > - ret = fb_register_client(&hdmi->nb); > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch b/recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch > deleted file mode 100644 > index d02aa40..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch > +++ /dev/null > @@ -1,38 +0,0 @@ > -From cd31abbe08372fa870fac78ae845edd4859f8835 Mon Sep 17 00:00:00 2001 > -From: Fabio Estevam <fabio.estevam@freescale.com> > -Date: Sat, 28 Sep 2013 18:46:18 -0300 > -Subject: [PATCH] ARM: mach-mx6: board-mx6q_sabresd: Register SDHC3 first > -Organization: O.S. Systems Software LTDA. > - > -On sabresd boards we boot from SDHC3, so let's register it as mmc0. > - > -Currently eMMC is mmc0 and mmc1 can be SDHC3 or SDHC2 (if present). > - > -Registering SDHC3 is safer as we can always find the rootfs. > - > -Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> > ---- > - arch/arm/mach-mx6/board-mx6q_sabresd.c | 5 +---- > - 1 file changed, 1 insertion(+), 4 deletions(-) > - > -diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c > -index 3f9a845..4e6b323 100644 > ---- a/arch/arm/mach-mx6/board-mx6q_sabresd.c > -+++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c > -@@ -1847,12 +1847,9 @@ static void __init mx6_sabresd_board_init(void) > - > - imx6q_add_pm_imx(0, &mx6q_sabresd_pm_data); > - > -- /* Move sd4 to first because sd4 connect to emmc. > -- Mfgtools want emmc is mmcblk0 and other sd card is mmcblk1. > -- */ > -+ imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data); > - imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabresd_sd4_data); > - imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data); > -- imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data); > - imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata); > - imx6q_sabresd_init_usb(); > - /* SATA is not supported by MX6DL/Solo */ > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch b/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch > deleted file mode 100644 > index 1e039fd..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch > +++ /dev/null > @@ -1,6261 +0,0 @@ > -From 2e575255b8c53d3cfe2af068411696fe3c40debb Mon Sep 17 00:00:00 2001 > -From: Loren Huang <b02279@freescale.com> > -Date: Mon, 2 Sep 2013 12:16:48 +0800 > -Subject: [PATCH 01/16] ENGR00278350 gpu:viante 4.6.9p13 kernel part > - integration > - > -Integrated 4.6.9p13 kernel part change. > -This integration is mainly for android test. > -Linux test will be focused on 3.10 kernel. > - > -Signed-off-by: Loren HUANG <b02279@freescale.com> > -Acked-by: Shawn Guo > ---- > - drivers/mxc/gpu-viv/Kbuild | 33 +- > - .../GC350/hal/kernel/gc_hal_kernel_hardware_vg.c | 177 ++-- > - .../GC350/hal/kernel/gc_hal_kernel_hardware_vg.h | 9 +- > - .../arch/XAQ2/hal/kernel/gc_hal_kernel_context.c | 8 +- > - .../arch/XAQ2/hal/kernel/gc_hal_kernel_context.h | 13 + > - .../arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c | 736 ++++++++++++- > - .../arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h | 1 + > - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c | 125 ++- > - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h | 24 +- > - .../mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c | 57 ++ > - .../gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c | 45 +- > - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c | 12 + > - .../mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c | 29 + > - .../hal/kernel/gc_hal_kernel_interrupt_vg.c | 3 + > - drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c | 8 +- > - .../hal/kernel/gc_hal_kernel_video_memory.c | 20 +- > - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h | 84 +- > - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h | 172 +++- > - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h | 142 ++- > - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h | 37 + > - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h | 46 +- > - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h | 125 ++- > - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h | 86 +- > - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h | 1078 +++----------------- > - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h | 48 + > - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h | 79 +- > - .../mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h | 2 +- > - .../hal/os/linux/kernel/gc_hal_kernel_device.c | 17 +- > - .../hal/os/linux/kernel/gc_hal_kernel_device.h | 16 +- > - .../hal/os/linux/kernel/gc_hal_kernel_driver.c | 99 +- > - .../gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c | 655 ++++++++++-- > - .../hal/os/linux/kernel/gc_hal_kernel_sync.c | 174 ++++ > - .../hal/os/linux/kernel/gc_hal_kernel_sync.h | 71 ++ > - 33 files changed, 2974 insertions(+), 1257 deletions(-) > - create mode 100644 drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c > - create mode 100644 drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h > - > -diff --git a/drivers/mxc/gpu-viv/Kbuild b/drivers/mxc/gpu-viv/Kbuild > -index 93b1259..2b277d6 100644 > ---- a/drivers/mxc/gpu-viv/Kbuild > -+++ b/drivers/mxc/gpu-viv/Kbuild > -@@ -45,8 +45,6 @@ OBJS := $(OS_KERNEL_DIR)/gc_hal_kernel_device.o \ > - $(OS_KERNEL_DIR)/gc_hal_kernel_os.o \ > - $(OS_KERNEL_DIR)/gc_hal_kernel_debugfs.o > - > --ifeq ($(USE_3D_VG), 1) > -- > - OBJS += $(HAL_KERNEL_DIR)/gc_hal_kernel.o \ > - $(HAL_KERNEL_DIR)/gc_hal_kernel_command.o \ > - $(HAL_KERNEL_DIR)/gc_hal_kernel_db.o \ > -@@ -69,19 +67,9 @@ OBJS +=\ > - $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_command_vg.o\ > - $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_vg.o > - endif > --else > -- > --OBJS += $(HAL_KERNEL_DIR)/gc_hal_kernel.o \ > -- $(HAL_KERNEL_DIR)/gc_hal_kernel_command.o \ > -- $(HAL_KERNEL_DIR)/gc_hal_kernel_heap.o \ > -- $(HAL_KERNEL_DIR)/gc_hal_kernel_interrupt.o \ > -- $(HAL_KERNEL_DIR)/gc_hal_kernel_mmu.o \ > -- $(HAL_KERNEL_DIR)/gc_hal_kernel_video_memory.o \ > -- $(OS_KERNEL_DIR)/gc_hal_kernel_debug.o > -- > --OBJS += $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware.o \ > -- $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_command.o > - > -+ifneq ($(CONFIG_SYNC),) > -+OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_sync.o > - endif > - > - ifeq ($(KERNELRELEASE), ) > -@@ -129,23 +117,16 @@ ifeq ($(CONFIG_DOVE_GPU), 1) > - EXTRA_CFLAGS += -DCONFIG_DOVE_GPU=1 > - endif > - > --ifeq ($(USE_POWER_MANAGEMENT), 1) > --EXTRA_CFLAGS += -DgcdPOWER_MANAGEMENT=1 > --else > --EXTRA_CFLAGS += -DgcdPOWER_MANAGEMENT=0 > --endif > -- > - ifneq ($(USE_PLATFORM_DRIVER), 0) > - EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=1 > - else > - EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=0 > - endif > - > --ifeq ($(USE_PROFILER), 1) > -+ > - EXTRA_CFLAGS += -DVIVANTE_PROFILER=1 > --else > --EXTRA_CFLAGS += -DVIVANTE_PROFILER=0 > --endif > -+EXTRA_CFLAGS += -DVIVANTE_PROFILER_CONTEXT=1 > -+ > - > - ifeq ($(ANDROID), 1) > - EXTRA_CFLAGS += -DANDROID=1 > -@@ -235,6 +216,10 @@ ifeq ($(USE_BANK_ALIGNMENT), 1) > - endif > - endif > - > -+ifneq ($(CONFIG_SYNC),) > -+EXTRA_CFLAGS += -DgcdANDROID_NATIVE_FENCE_SYNC=1 > -+endif > -+ > - EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel/inc > - EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel > - EXTRA_CFLAGS += -I$(AQARCH)/hal/kernel > -diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c > -index 70c2cd6..a17d2fd 100644 > ---- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c > -+++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c > -@@ -217,50 +217,17 @@ _IdentifyHardware( > - return status; > - } > - > --static gctTHREADFUNCRESULT gctTHREADFUNCTYPE > --_TimeIdleThread( > -- gctTHREADFUNCPARAMETER ThreadParameter > -+#if gcdPOWEROFF_TIMEOUT > -+void > -+_VGPowerTimerFunction( > -+ gctPOINTER Data > - ) > - { > -- gctUINT32 currentTime = 0; > -- gctBOOL isAfter = gcvFALSE; > -- gceCHIPPOWERSTATE state; > -- > -- /* Cast the object. */ > -- gckVGHARDWARE hardware = (gckVGHARDWARE) ThreadParameter; > -- > -- while(gcvTRUE) > -- { > -- gcmkVERIFY_OK(gckOS_WaitSignal(hardware->os, > -- hardware->idleSignal, gcvINFINITE)); > -- > -- if (hardware->killThread) > -- { > -- break; > -- } > -- > -- do > -- { > -- gcmkVERIFY_OK(gckOS_GetTicks(¤tTime)); > -- > -- gcmkVERIFY_OK( > -- gckOS_TicksAfter(currentTime, hardware->powerOffTime, &isAfter)); > -- > -- if (isAfter) > -- { > -- gcmkVERIFY_OK(gckVGHARDWARE_SetPowerManagementState( > -- hardware, gcvPOWER_OFF_BROADCAST)); > -- } > -- > -- gcmkVERIFY_OK(gckOS_Delay(hardware->os, 200)); > -- > -- gcmkVERIFY_OK(gckVGHARDWARE_QueryPowerManagementState( > -- hardware, &state)); > -- > -- } while (state == gcvPOWER_IDLE); > -- } > -- return 0; > -+ gckVGHARDWARE hardware = (gckVGHARDWARE)Data; > -+ gcmkVERIFY_OK( > -+ gckVGHARDWARE_SetPowerManagementState(hardware, gcvPOWER_OFF_TIMEOUT)); > - } > -+#endif > - > - /******************************************************************************\ > - ****************************** gckVGHARDWARE API code ***************************** > -@@ -338,15 +305,21 @@ gckVGHARDWARE_Construct( > - hardware->chipMinorFeatures2 = chipMinorFeatures2; > - > - hardware->powerMutex = gcvNULL; > -- hardware->idleSignal = gcvNULL; > - hardware->chipPowerState = gcvPOWER_ON; > - hardware->chipPowerStateGlobal = gcvPOWER_ON; > - hardware->clockState = gcvTRUE; > - hardware->powerState = gcvTRUE; > -- hardware->powerOffTimeout = gcdPOWEROFF_TIMEOUT; > -+ > - hardware->powerOffTime = 0; > -- hardware->timeIdleThread = gcvNULL; > -- hardware->killThread = gcvFALSE; > -+#if gcdPOWEROFF_TIMEOUT > -+ hardware->powerOffTimeout = gcdPOWEROFF_TIMEOUT; > -+ > -+ gcmkVERIFY_OK(gckOS_CreateTimer(Os, > -+ _VGPowerTimerFunction, > -+ (gctPOINTER)hardware, > -+ &hardware->powerOffTimer)); > -+#endif > -+ > - /* Determine whether FE 2.0 is present. */ > - hardware->fe20 = ((((gctUINT32) (hardware->chipFeatures)) >> (0 ? 28:28) & ((gctUINT32) ((((1 ? 28:28) - (0 ? 28:28) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 28:28) - (0 ? 28:28) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 28:28) - (0 ? 28:28) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 28:28) - (0 ? 28:28) + 1))))))); > - > -@@ -365,18 +338,10 @@ gckVGHARDWARE_Construct( > - gcmkVERIFY_OK(gckVGHARDWARE_SetFastClear(hardware, -1)); > - > - gcmkERR_BREAK(gckOS_CreateMutex(Os, &hardware->powerMutex)); > -- gcmkERR_BREAK(gckOS_CreateSignal(Os, gcvFALSE, &hardware->idleSignal)); > - > - /* Enable power management by default. */ > - hardware->powerManagement = gcvTRUE; > - > -- gcmkERR_BREAK(gckOS_StartThread( > -- hardware->os, > -- _TimeIdleThread, > -- hardware, > -- &hardware->timeIdleThread > -- )); > -- > - /* Return pointer to the gckVGHARDWARE object. */ > - *Hardware = hardware; > - > -@@ -386,6 +351,14 @@ gckVGHARDWARE_Construct( > - } > - while (gcvFALSE); > - > -+#if gcdPOWEROFF_TIMEOUT > -+ if (hardware->powerOffTimer != gcvNULL) > -+ { > -+ gcmkVERIFY_OK(gckOS_StopTimer(Os, hardware->powerOffTimer)); > -+ gcmkVERIFY_OK(gckOS_DestroyTimer(Os, hardware->powerOffTimer)); > -+ } > -+#endif > -+ > - if (hardware->pageTableDirty != gcvNULL) > - { > - gcmkVERIFY_OK(gckOS_AtomDestroy(Os, hardware->pageTableDirty)); > -@@ -428,10 +401,6 @@ gckVGHARDWARE_Destroy( > - /* Verify the arguments. */ > - gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); > - > -- Hardware->killThread = gcvTRUE; > -- gcmkVERIFY_OK(gckOS_Signal(Hardware->os, Hardware->idleSignal, gcvTRUE)); > -- gcmkVERIFY_OK(gckOS_StopThread(Hardware->os, Hardware->timeIdleThread)); > -- > - /* Mark the object as unknown. */ > - Hardware->object.type = gcvOBJ_UNKNOWN; > - > -@@ -441,11 +410,10 @@ gckVGHARDWARE_Destroy( > - Hardware->os, Hardware->powerMutex)); > - } > - > -- if (Hardware->idleSignal != gcvNULL) > -- { > -- gcmkVERIFY_OK(gckOS_DestroySignal( > -- Hardware->os, Hardware->idleSignal)); > -- } > -+#if gcdPOWEROFF_TIMEOUT > -+ gcmkVERIFY_OK(gckOS_StopTimer(Hardware->os, Hardware->powerOffTimer)); > -+ gcmkVERIFY_OK(gckOS_DestroyTimer(Hardware->os, Hardware->powerOffTimer)); > -+#endif > - > - if (Hardware->pageTableDirty != gcvNULL) > - { > -@@ -1510,11 +1478,15 @@ gckVGHARDWARE_SetPowerManagementState( > - gctBOOL commitMutex = gcvFALSE; > - gctBOOL mutexAcquired = gcvFALSE; > - > -+#if gcdPOWEROFF_TIMEOUT > -+ gctBOOL timeout = gcvFALSE; > -+ gctBOOL isAfter = gcvFALSE; > -+ gctUINT32 currentTime; > -+#endif > -+ > - gctBOOL broadcast = gcvFALSE; > - gctUINT32 process, thread; > - gctBOOL global = gcvFALSE; > -- gctUINT32 currentTime; > -- > - > - #if gcdENABLE_PROFILING > - gctUINT64 time, freq, mutexTime, onTime, stallTime, stopTime, delayTime, > -@@ -1661,6 +1633,16 @@ gckVGHARDWARE_SetPowerManagementState( > - global = gcvTRUE; > - break; > - > -+#if gcdPOWEROFF_TIMEOUT > -+ case gcvPOWER_OFF_TIMEOUT: > -+ /* Convert to OFF and note we are inside broadcast. */ > -+ State = gcvPOWER_OFF; > -+ broadcast = gcvTRUE; > -+ /* Check time out */ > -+ timeout = gcvTRUE; > -+ break; > -+#endif > -+ > - default: > - break; > - } > -@@ -1719,6 +1701,31 @@ gckVGHARDWARE_SetPowerManagementState( > - flag = flags[Hardware->chipPowerState][State]; > - /*clock = clocks[State];*/ > - > -+#if gcdPOWEROFF_TIMEOUT > -+ if (timeout) > -+ { > -+ gcmkONERROR(gckOS_GetTicks(¤tTime)); > -+ > -+ gcmkONERROR( > -+ gckOS_TicksAfter(Hardware->powerOffTime, currentTime, &isAfter)); > -+ > -+ /* powerOffTime is pushed forward, give up.*/ > -+ if (isAfter > -+ /* Expect a transition start from IDLE. */ > -+ || (Hardware->chipPowerState == gcvPOWER_ON) > -+ || (Hardware->chipPowerState == gcvPOWER_OFF) > -+ ) > -+ { > -+ /* Release the power mutex. */ > -+ gcmkONERROR(gckOS_ReleaseMutex(os, Hardware->powerMutex)); > -+ > -+ /* No need to do anything. */ > -+ gcmkFOOTER_NO(); > -+ return gcvSTATUS_OK; > -+ } > -+ } > -+#endif > -+ > - if (flag == 0) > - { > - /* Release the power mutex. */ > -@@ -1742,6 +1749,18 @@ gckVGHARDWARE_SetPowerManagementState( > - return gcvSTATUS_OK; > - } > - } > -+ else > -+ { > -+ if (flag & gcvPOWER_FLAG_ACQUIRE) > -+ { > -+ /* Acquire the power management semaphore. */ > -+ gcmkONERROR(gckOS_AcquireSemaphore(os, command->powerSemaphore)); > -+ acquired = gcvTRUE; > -+ > -+ /* avoid acquiring again. */ > -+ flag &= ~gcvPOWER_FLAG_ACQUIRE; > -+ } > -+ } > - > - if (flag & (gcvPOWER_FLAG_INITIALIZE | gcvPOWER_FLAG_CLOCK_ON)) > - { > -@@ -1858,14 +1877,6 @@ gckVGHARDWARE_SetPowerManagementState( > - Hardware->chipPowerStateGlobal = State; > - } > - > -- if (State == gcvPOWER_IDLE) > -- { > -- gcmkVERIFY_OK(gckOS_Signal(os, Hardware->idleSignal, gcvTRUE)); > -- } > -- /* Reset power off time */ > -- gcmkVERIFY_OK(gckOS_GetTicks(¤tTime)); > -- Hardware->powerOffTime = currentTime + Hardware->powerOffTimeout; > -- > - if (commitMutex) > - { > - /* Acquire the mutex. */ > -@@ -1875,6 +1886,28 @@ gckVGHARDWARE_SetPowerManagementState( > - )); > - } > - > -+#if gcdPOWEROFF_TIMEOUT > -+ /* Reset power off time */ > -+ gcmkONERROR(gckOS_GetTicks(¤tTime)); > -+ > -+ Hardware->powerOffTime = currentTime + Hardware->powerOffTimeout; > -+ > -+ if (State == gcvPOWER_IDLE) > -+ { > -+ /* Start a timer to power off GPU when GPU enters IDLE or SUSPEND. */ > -+ gcmkVERIFY_OK(gckOS_StartTimer(os, > -+ Hardware->powerOffTimer, > -+ Hardware->powerOffTimeout)); > -+ } > -+ else > -+ { > -+ gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, "Cancel powerOfftimer"); > -+ > -+ /* Cancel running timer when GPU enters ON or OFF. */ > -+ gcmkVERIFY_OK(gckOS_StopTimer(os, Hardware->powerOffTimer)); > -+ } > -+#endif > -+ > - /* Release the power mutex. */ > - gcmkONERROR(gckOS_ReleaseMutex(os, Hardware->powerMutex)); > - > -diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h > -index 16b81ae..73d4594 100644 > ---- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h > -+++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h > -@@ -53,7 +53,6 @@ struct _gckVGHARDWARE > - gctBOOL clockState; > - gctBOOL powerState; > - gctPOINTER powerMutex; > -- gctSIGNAL idleSignal; > - gctUINT32 powerProcess; > - gctUINT32 powerThread; > - gceCHIPPOWERSTATE chipPowerState; > -@@ -61,11 +60,13 @@ struct _gckVGHARDWARE > - gctISRMANAGERFUNC startIsr; > - gctISRMANAGERFUNC stopIsr; > - gctPOINTER isrContext; > -+ gctPOINTER pageTableDirty; > -+ > -+#if gcdPOWEROFF_TIMEOUT > - gctUINT32 powerOffTime; > - gctUINT32 powerOffTimeout; > -- gctTHREAD timeIdleThread; > -- gctBOOL killThread; > -- gctPOINTER pageTableDirty; > -+ gctPOINTER powerOffTimer; > -+#endif > - > - gctBOOL powerManagement; > - }; > -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c > -index 24003e7..42e6915 100644 > ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c > -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c > -@@ -181,7 +181,8 @@ _FlushPipe( > - ? ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 3:3) - (0 ? 3:3) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 3:3) - (0 ? 3:3) + 1))))))) << (0 ? 3:3))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 3:3) - (0 ? 3:3) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 3:3) - (0 ? 3:3) + 1))))))) << (0 ? 3:3))) > - : ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) > - | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 1:1) - (0 ? 1:1) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 1:1) - (0 ? 1:1) + 1))))))) << (0 ? 1:1))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 1:1) - (0 ? 1:1) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 1:1) - (0 ? 1:1) + 1))))))) << (0 ? 1:1))) > -- | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))); > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))); > - > - /* Semaphore from FE to PE. */ > - *buffer++ > -@@ -620,7 +621,10 @@ _InitializeContextBuffer( > - index += _State(Context, index, 0x10180 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); > - index += _State(Context, index, 0x10200 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); > - index += _State(Context, index, 0x10280 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); > -- index += _State(Context, index, 0x02C00 >> 2, 0x00000000, 256, gcvFALSE, gcvFALSE); > -+ for (i = 0; i < 256 / 16; i += 1) > -+ { > -+ index += _State(Context, index, (0x02C00 >> 2) + i * 16, 0x00000000, 14, gcvFALSE, gcvFALSE); > -+ } > - index += _State(Context, index, 0x10300 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); > - index += _State(Context, index, 0x10380 >> 2, 0x00321000, 32, gcvFALSE, gcvFALSE); > - index += _State(Context, index, 0x10400 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE); > -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h > -index 7554045..5d2c7c7 100644 > ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h > -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h > -@@ -134,6 +134,19 @@ struct _gckCONTEXT > - #if gcdSECURE_USER > - gctBOOL_PTR hint; > - #endif > -+ > -+#if VIVANTE_PROFILER_CONTEXT > -+ gcsPROFILER_COUNTERS latestProfiler; > -+ gcsPROFILER_COUNTERS histroyProfiler; > -+ gctUINT32 prevVSInstCount; > -+ gctUINT32 prevVSBranchInstCount; > -+ gctUINT32 prevVSTexInstCount; > -+ gctUINT32 prevVSVertexCount; > -+ gctUINT32 prevPSInstCount; > -+ gctUINT32 prevPSBranchInstCount; > -+ gctUINT32 prevPSTexInstCount; > -+ gctUINT32 prevPSPixelCount; > -+#endif > - }; > - > - #ifdef __cplusplus > -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c > -index 00f3839..e02dc23 100644 > ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c > -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c > -@@ -21,6 +21,9 @@ > - > - #include "gc_hal.h" > - #include "gc_hal_kernel.h" > -+#if VIVANTE_PROFILER_CONTEXT > -+#include "gc_hal_kernel_context.h" > -+#endif > - > - #define _GC_OBJ_ZONE gcvZONE_HARDWARE > - > -@@ -69,6 +72,7 @@ _IdentifyHardware( > - gctUINT32 numConstants = 0; > - gctUINT32 bufferSize = 0; > - gctUINT32 varyingsCount = 0; > -+ gctBOOL useHZ; > - > - gcmkHEADER_ARG("Os=0x%x", Os); > - > -@@ -209,6 +213,15 @@ _IdentifyHardware( > - 0x00088, > - &Identity->chipMinorFeatures3)); > - > -+ /*The BG2 chip has no compression supertiled, and the bit of GCMinorFeature3BugFixes15 is n/a*/ > -+ if(Identity->chipModel == gcv1000 && Identity->chipRevision == 0x5036) > -+ { > -+ Identity->chipMinorFeatures3 > -+ = ((((gctUINT32) (Identity->chipMinorFeatures3)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 5:5) - (0 ? 5:5) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 5:5) - (0 ? 5:5) + 1))))))) << (0 ? 5:5))) | (((gctUINT32) (0x0 & ((gctUINT32) ((((1 ? 5:5) - (0 ? 5:5) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 5:5) - (0 ? 5:5) + 1))))))) << (0 ? 5:5))); > -+ Identity->chipMinorFeatures3 > -+ = ((((gctUINT32) (Identity->chipMinorFeatures3)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 27:27) - (0 ? 27:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 27:27) - (0 ? 27:27) + 1))))))) << (0 ? 27:27))) | (((gctUINT32) (0x0 & ((gctUINT32) ((((1 ? 27:27) - (0 ? 27:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 27:27) - (0 ? 27:27) + 1))))))) << (0 ? 27:27))); > -+ } > -+ > - /* Read chip minor featuress register #4. */ > - gcmkONERROR( > - gckOS_ReadRegisterEx(Os, Core, > -@@ -244,14 +257,31 @@ _IdentifyHardware( > - if (((Identity->chipModel == gcv1000) && ((Identity->chipRevision == 0x5035) > - || (Identity->chipRevision == 0x5036) > - || (Identity->chipRevision == 0x5037))) > -- || ((Identity->chipModel == gcv800) && (Identity->chipRevision == 0x4612))) > -+ || ((Identity->chipModel == gcv800) && (Identity->chipRevision == 0x4612)) > -+ || ((Identity->chipModel == gcv860) && (Identity->chipRevision == 0x4647))) > - { > - Identity->superTileMode = 1; > - } > - > -+ if (Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5245) > -+ { > -+ useHZ = ((((gctUINT32) (Identity->chipMinorFeatures3)) >> (0 ? 26:26) & ((gctUINT32) ((((1 ? 26:26) - (0 ? 26:26) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 26:26) - (0 ? 26:26) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 26:26) - (0 ? 26:26) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 26:26) - (0 ? 26:26) + 1))))))) > -+ || ((((gctUINT32) (Identity->chipMinorFeatures3)) >> (0 ? 8:8) & ((gctUINT32) ((((1 ? 8:8) - (0 ? 8:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 8:8) - (0 ? 8:8) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 8:8) - (0 ? 8:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 8:8) - (0 ? 8:8) + 1))))))); > -+ } > -+ else > -+ { > -+ useHZ = gcvFALSE; > -+ } > - > -- /* Disable HZ when EZ is present for older chips. */ > -- if (!((((gctUINT32) (Identity->chipFeatures)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))))) > -+ if (useHZ) > -+ { > -+ /* Disable EZ. */ > -+ Identity->chipFeatures > -+ = ((((gctUINT32) (Identity->chipFeatures)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))) << (0 ? 16:16))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))) << (0 ? 16:16))); > -+ } > -+ > -+ /* Disable HZ when EZ is present for older chips. */ > -+ else if (!((((gctUINT32) (Identity->chipFeatures)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))))) > - { > - /* Disable HIERARCHICAL_Z. */ > - Identity->chipMinorFeatures > -@@ -470,6 +500,15 @@ _IdentifyHardware( > - Identity->varyingsCount = 8; > - } > - > -+ /* For some cores, it consumes two varying for position, so the max varying vectors should minus one. */ > -+ if ((Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5222) || > -+ (Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5208) || > -+ ((Identity->chipModel == gcv2100 || Identity->chipModel == gcv2000) && Identity->chipRevision == 0x5108) || > -+ (Identity->chipModel == gcv880 && (Identity->chipRevision == 0x5107 || Identity->chipRevision == 0x5106))) > -+ { > -+ Identity->varyingsCount -= 1; > -+ } > -+ > - /* Success. */ > - gcmkFOOTER(); > - return gcvSTATUS_OK; > -@@ -535,9 +574,9 @@ _DumpDebugRegisters( > - IN gcsiDEBUG_REGISTERS_PTR Descriptor > - ) > - { > -- gceSTATUS status; > -+ gceSTATUS status = gcvSTATUS_OK; > - gctUINT32 select; > -- gctUINT32 data; > -+ gctUINT32 data = 0; > - gctUINT i; > - > - gcmkHEADER_ARG("Os=0x%X Descriptor=0x%X", Os, Descriptor); > -@@ -643,6 +682,42 @@ OnError: > - return status; > - } > - > -+gceSTATUS > -+_FlushCache( > -+ gckHARDWARE Hardware, > -+ gckCOMMAND Command > -+ ) > -+{ > -+ gceSTATUS status; > -+ gctSIZE_T bytes, requested; > -+ gctPOINTER buffer; > -+ > -+ /* Get the size of the flush command. */ > -+ gcmkONERROR(gckHARDWARE_Flush(Hardware, > -+ gcvFLUSH_ALL, > -+ gcvNULL, > -+ &requested)); > -+ > -+ /* Reserve space in the command queue. */ > -+ gcmkONERROR(gckCOMMAND_Reserve(Command, > -+ requested, > -+ &buffer, > -+ &bytes)); > -+ > -+ /* Append a flush. */ > -+ gcmkONERROR(gckHARDWARE_Flush( > -+ Hardware, gcvFLUSH_ALL, buffer, &bytes > -+ )); > -+ > -+ /* Execute the command queue. */ > -+ gcmkONERROR(gckCOMMAND_Execute(Command, requested)); > -+ > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ return status; > -+} > -+ > - /******************************************************************************\ > - ****************************** gckHARDWARE API code ***************************** > - \******************************************************************************/ > -@@ -809,6 +884,9 @@ gckHARDWARE_Construct( > - /* Enable power management by default. */ > - hardware->powerManagement = gcvTRUE; > - > -+ /* Disable profiler by default */ > -+ hardware->gpuProfiler = gcvFALSE; > -+ > - /* Return pointer to the gckHARDWARE object. */ > - *Hardware = hardware; > - > -@@ -1113,6 +1191,31 @@ gckHARDWARE_InitializeHardware( > - ((((gctUINT32) (0x01590880)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:23) - (0 ? 23:23) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:23) - (0 ? 23:23) + 1))))))) << (0 ? 23:23))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:23) - (0 ? 23:23) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:23) - (0 ? 23:23) + 1))))))) << (0 ? 23:23))))); > - } > - > -+ if ((gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_HALTI2) == gcvFALSE) > -+ || (gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_HALTI2) && (Hardware->identity.chipRevision < 0x5422)) > -+ ) > -+ { > -+ gctUINT32 data; > -+ > -+ gcmkONERROR( > -+ gckOS_ReadRegisterEx(Hardware->os, > -+ Hardware->core, > -+ Hardware->powerBaseAddress > -+ + 0x00104, > -+ &data)); > -+ > -+ > -+ data = ((((gctUINT32) (data)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) << (0 ? 15:15))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) << (0 ? 15:15))); > -+ > -+ > -+ gcmkONERROR( > -+ gckOS_WriteRegisterEx(Hardware->os, > -+ Hardware->core, > -+ Hardware->powerBaseAddress > -+ + 0x00104, > -+ data)); > -+ } > -+ > - /* Special workaround for this core > - ** Make sure FE and TX are on different buses */ > - if ((Hardware->identity.chipModel == gcv2000) > -@@ -1152,7 +1255,9 @@ gckHARDWARE_InitializeHardware( > - } > - > - if (Hardware->identity.chipModel >= gcv400 > -- && Hardware->identity.chipModel != gcv420) > -+ && Hardware->identity.chipModel != gcv420 > -+ && (((((gctUINT32) (Hardware->identity.chipMinorFeatures3)) >> (0 ? 15:15) & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) != gcvTRUE) > -+ ) > - { > - gctUINT32 data; > - > -@@ -2883,35 +2988,44 @@ gckHARDWARE_QueryShaderCaps( > - OUT gctUINT * Varyings > - ) > - { > -+ gctUINT32 vsConstMax; > -+ gctUINT32 psConstMax; > -+ > - gcmkHEADER_ARG("Hardware=0x%x VertexUniforms=0x%x " > - "FragmentUniforms=0x%x Varyings=0x%x", > - Hardware, VertexUniforms, > - FragmentUniforms, Varyings); > - > -+ if ((Hardware->identity.chipModel == gcv2000) > -+ && (Hardware->identity.chipRevision == 0x5118)) > -+ { > -+ vsConstMax = 256; > -+ psConstMax = 64; > -+ } > -+ else if (Hardware->identity.numConstants > 256) > -+ { > -+ vsConstMax = 256; > -+ psConstMax = 256; > -+ } > -+ else if (Hardware->identity.numConstants == 256) > -+ { > -+ vsConstMax = 256; > -+ psConstMax = 256; > -+ } > -+ else > -+ { > -+ vsConstMax = 168; > -+ psConstMax = 64; > -+ } > -+ > - if (VertexUniforms != gcvNULL) > - { > -- /* Return the vs shader const count. */ > -- if (Hardware->identity.chipModel < gcv4000) > -- { > -- *VertexUniforms = 168; > -- } > -- else > -- { > -- *VertexUniforms = 256; > -- } > -+ *VertexUniforms = vsConstMax; > - } > - > - if (FragmentUniforms != gcvNULL) > - { > -- /* Return the ps shader const count. */ > -- if (Hardware->identity.chipModel < gcv4000) > -- { > -- *FragmentUniforms = 64; > -- } > -- else > -- { > -- *FragmentUniforms = 256; > -- } > -+ *FragmentUniforms = psConstMax; > - } > - > - if (Varyings != gcvNULL) > -@@ -3229,12 +3343,28 @@ gckHARDWARE_SetMMUv2( > - gctBOOL commitEntered = gcvFALSE; > - gctPOINTER pointer = gcvNULL; > - gctBOOL acquired = gcvFALSE; > -+ gctBOOL config2D; > -+ gctSIZE_T configSize; > - > - gcmkHEADER_ARG("Hardware=0x%x Enable=%d", Hardware, Enable); > - > - /* Verify the arguments. */ > - gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); > - > -+ config2D = gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_PIPE_3D) > -+ && gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_PIPE_2D); > -+ > -+ configSize = 4 * 4; > -+ > -+ if (config2D) > -+ { > -+ configSize += > -+ /* Pipe Select. */ > -+ 4 * 4 > -+ /* Configure MMU States. */ > -+ + 4 * 4; > -+ } > -+ > - /* Convert logical address into physical address. */ > - gcmkONERROR( > - gckOS_GetPhysicalAddress(Hardware->os, MtlbAddress, &config)); > -@@ -3281,7 +3411,7 @@ gckHARDWARE_SetMMUv2( > - commitEntered = gcvTRUE; > - > - gcmkONERROR(gckCOMMAND_Reserve( > -- command, 16, &pointer, &bufferSize > -+ command, configSize, &pointer, &bufferSize > - )); > - > - buffer = pointer; > -@@ -3300,10 +3430,43 @@ gckHARDWARE_SetMMUv2( > - > - buffer[3] = address; > - > -+ if (config2D) > -+ { > -+ /* LoadState(AQPipeSelect, 1), pipe. */ > -+ buffer[4] > -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0E00) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); > -+ > -+ buffer[5] = 0x1; > -+ > -+ buffer[6] > -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0061) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); > -+ > -+ buffer[7] = config; > -+ > -+ buffer[8] > -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0060) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); > -+ > -+ buffer[9] = address; > -+ > -+ /* LoadState(AQPipeSelect, 1), pipe. */ > -+ buffer[10] > -+ = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0E00) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); > -+ > -+ buffer[11] = 0x0; > -+ } > -+ > - gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, > - "Setup MMU: config=%08x, Safe Address=%08x\n.", config, address); > - > -- gcmkONERROR(gckCOMMAND_Execute(command, 16)); > -+ gcmkONERROR(gckCOMMAND_Execute(command, configSize)); > - > - if (FromPower == gcvFALSE) > - { > -@@ -3501,6 +3664,8 @@ gckHARDWARE_Flush( > - gctUINT32 flush = 0; > - gctUINT32_PTR logical = (gctUINT32_PTR) Logical; > - gceSTATUS status; > -+ gctBOOL fcFlushStall; > -+ gctUINT32 reserveBytes = 8; > - > - gcmkHEADER_ARG("Hardware=0x%x Flush=0x%x Logical=0x%x *Bytes=%lu", > - Hardware, Flush, Logical, gcmOPT_VALUE(Bytes)); > -@@ -3511,6 +3676,16 @@ gckHARDWARE_Flush( > - /* Get current pipe. */ > - pipe = Hardware->kernel->command->pipeSelect; > - > -+ fcFlushStall > -+ = ((((gctUINT32) (Hardware->identity.chipMinorFeatures1)) >> (0 ? 31:31) & ((gctUINT32) ((((1 ? 31:31) - (0 ? 31:31) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:31) - (0 ? 31:31) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 31:31) - (0 ? 31:31) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:31) - (0 ? 31:31) + 1))))))) > -+ && (Flush == gcvFLUSH_ALL) > -+ ; > -+ > -+ if (fcFlushStall) > -+ { > -+ reserveBytes += 8; > -+ } > -+ > - /* Flush 3D color cache. */ > - if ((Flush & gcvFLUSH_COLOR) && (pipe == 0x0)) > - { > -@@ -3527,6 +3702,7 @@ gckHARDWARE_Flush( > - if ((Flush & gcvFLUSH_TEXTURE) && (pipe == 0x0)) > - { > - flush |= ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))); > -+ flush |= ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))); > - } > - > - /* Flush 2D cache. */ > -@@ -3550,7 +3726,7 @@ gckHARDWARE_Flush( > - /* Copy to command queue. */ > - if (Logical != gcvNULL) > - { > -- if (*Bytes < 8) > -+ if (*Bytes < reserveBytes) > - { > - /* Command queue too small. */ > - gcmkONERROR(gcvSTATUS_BUFFER_TOO_SMALL); > -@@ -3565,12 +3741,26 @@ gckHARDWARE_Flush( > - > - gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, > - "0x%x: FLUSH 0x%x", logical, flush); > -+ > -+ if (fcFlushStall) > -+ { > -+ logical[2] = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0594) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) > -+ | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))); > -+ > -+ logical[3] = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))); > -+ > -+ > -+ gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, > -+ "0x%x: FLUSH 0x%x", logical + 3, logical[3]); > -+ } > -+ > - } > - > - if (Bytes != gcvNULL) > - { > -- /* 8 bytes required. */ > -- *Bytes = 8; > -+ /* bytes required. */ > -+ *Bytes = reserveBytes; > - } > - } > - > -@@ -4285,6 +4475,48 @@ gckHARDWARE_SetPowerManagementState( > - } > - } > - > -+ /* Flush Cache before Power Off. */ > -+ if (flag & gcvPOWER_FLAG_POWER_OFF) > -+ { > -+ if (Hardware->clockState == gcvFALSE) > -+ { > -+ /* Turn off the GPU power. */ > -+ gcmkONERROR( > -+ gckOS_SetGPUPower(os, > -+ Hardware->core, > -+ gcvTRUE, > -+ gcvTRUE)); > -+ > -+ Hardware->clockState = gcvTRUE; > -+ > -+ if (gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_DYNAMIC_FREQUENCY_SCALING) != gcvTRUE) > -+ { > -+ /* Write the clock control register. */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(os, > -+ Hardware->core, > -+ 0x00000, > -+ clocks[0])); > -+ > -+ /* Done loading the frequency scaler. */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(os, > -+ Hardware->core, > -+ 0x00000, > -+ ((((gctUINT32) (clocks[0])) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))) << (0 ? 9:9))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))) << (0 ? 9:9))))); > -+ } > -+ } > -+ > -+ gcmkONERROR(gckCOMMAND_Start(command)); > -+ > -+ gcmkONERROR(_FlushCache(Hardware, command)); > -+ > -+ gckOS_Delay(gcvNULL, 1); > -+ > -+ /* Stop the command parser. */ > -+ gcmkONERROR(gckCOMMAND_Stop(command, gcvFALSE)); > -+ > -+ flag |= gcvPOWER_FLAG_CLOCK_OFF; > -+ } > -+ > - /* Get time until stopped. */ > - gcmkPROFILE_QUERY(time, stopTime); > - > -@@ -4582,6 +4814,40 @@ gckHARDWARE_SetPowerManagement( > - return gcvSTATUS_OK; > - } > - > -+/******************************************************************************* > -+** > -+** gckHARDWARE_SetGpuProfiler > -+** > -+** Configure GPU profiler function. > -+** Only used in driver initialization stage. > -+** > -+** INPUT: > -+** > -+** gckHARDWARE Harwdare > -+** Pointer to an gckHARDWARE object. > -+** > -+** gctBOOL GpuProfiler > -+** GOU Profiler State. > -+** > -+*/ > -+gceSTATUS > -+gckHARDWARE_SetGpuProfiler( > -+ IN gckHARDWARE Hardware, > -+ IN gctBOOL GpuProfiler > -+ ) > -+{ > -+ gcmkHEADER_ARG("Hardware=0x%x", Hardware); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); > -+ > -+ Hardware->gpuProfiler = GpuProfiler; > -+ > -+ /* Success. */ > -+ gcmkFOOTER_NO(); > -+ return gcvSTATUS_OK; > -+} > -+ > - #if gcdENABLE_FSCALE_VAL_ADJUST > - gceSTATUS > - gckHARDWARE_SetFscaleValue( > -@@ -5141,6 +5407,402 @@ OnError: > - } > - #endif > - > -+#if VIVANTE_PROFILER_CONTEXT > -+#define gcmkUPDATE_PROFILE_DATA(data) \ > -+ profilerHistroy->data += profiler->data > -+ > -+gceSTATUS > -+gckHARDWARE_QueryContextProfile( > -+ IN gckHARDWARE Hardware, > -+ IN gctBOOL Reset, > -+ IN gckCONTEXT Context, > -+ OUT gcsPROFILER_COUNTERS * Counters > -+ ) > -+{ > -+ gceSTATUS status; > -+ gckCOMMAND command = Hardware->kernel->command; > -+ gcsPROFILER_COUNTERS * profiler = Counters; > -+ > -+ gcmkHEADER_ARG("Hardware=0x%x Counters=0x%x", Hardware, Counters); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); > -+ > -+ /* Acquire the context sequnence mutex. */ > -+ gcmkONERROR(gckOS_AcquireMutex( > -+ command->os, command->mutexContextSeq, gcvINFINITE > -+ )); > -+ > -+ /* Read the counters. */ > -+ gcmkVERIFY_OK(gckOS_MemCopy( > -+ profiler, &Context->histroyProfiler, gcmSIZEOF(gcsPROFILER_COUNTERS) > -+ )); > -+ > -+ if (Reset) > -+ { > -+ /* Reset counters. */ > -+ gcmkVERIFY_OK(gckOS_ZeroMemory( > -+ &Context->histroyProfiler, gcmSIZEOF(gcsPROFILER_COUNTERS) > -+ )); > -+ } > -+ > -+ gcmkVERIFY_OK(gckOS_ReleaseMutex( > -+ command->os, command->mutexContextSeq > -+ )); > -+ > -+ /* Success. */ > -+ gcmkFOOTER_NO(); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ /* Return the status. */ > -+ gcmkFOOTER(); > -+ return status; > -+} > -+ > -+ > -+gceSTATUS > -+gckHARDWARE_UpdateContextProfile( > -+ IN gckHARDWARE Hardware, > -+ IN gckCONTEXT Context > -+ ) > -+{ > -+ gceSTATUS status; > -+ gcsPROFILER_COUNTERS * profiler = &Context->latestProfiler; > -+ gcsPROFILER_COUNTERS * profilerHistroy = &Context->histroyProfiler; > -+ gctUINT i, clock; > -+ gctUINT32 colorKilled, colorDrawn, depthKilled, depthDrawn; > -+ gctUINT32 totalRead, totalWrite; > -+ gceCHIPMODEL chipModel; > -+ gctUINT32 chipRevision; > -+ gctUINT32 temp; > -+ gctBOOL needResetShader = gcvFALSE; > -+ > -+ gcmkHEADER_ARG("Hardware=0x%x Context=0x%x", Hardware, Context); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE); > -+ gcmkVERIFY_OBJECT(Context, gcvOBJ_CONTEXT); > -+ > -+ chipModel = Hardware->identity.chipModel; > -+ chipRevision = Hardware->identity.chipRevision; > -+ if (chipModel == gcv2000 || (chipModel == gcv2100 && chipRevision == 0x5118)) > -+ { > -+ needResetShader = gcvTRUE; > -+ } > -+ > -+ /* Read the counters. */ > -+ gcmkONERROR( > -+ gckOS_ReadRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x00438, > -+ &profiler->gpuCyclesCounter)); > -+ gcmkUPDATE_PROFILE_DATA(gpuCyclesCounter); > -+ > -+ gcmkONERROR( > -+ gckOS_ReadRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x00078, > -+ &profiler->gpuTotalCyclesCounter)); > -+ gcmkUPDATE_PROFILE_DATA(gpuTotalCyclesCounter); > -+ > -+ gcmkONERROR( > -+ gckOS_ReadRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x0007C, > -+ &profiler->gpuIdleCyclesCounter)); > -+ gcmkUPDATE_PROFILE_DATA(gpuIdleCyclesCounter); > -+ > -+ /* Read clock control register. */ > -+ gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x00000, > -+ &clock)); > -+ > -+ profiler->gpuTotalRead64BytesPerFrame = 0; > -+ profiler->gpuTotalWrite64BytesPerFrame = 0; > -+ profiler->pe_pixel_count_killed_by_color_pipe = 0; > -+ profiler->pe_pixel_count_killed_by_depth_pipe = 0; > -+ profiler->pe_pixel_count_drawn_by_color_pipe = 0; > -+ profiler->pe_pixel_count_drawn_by_depth_pipe = 0; > -+ > -+ /* Walk through all avaiable pixel pipes. */ > -+ for (i = 0; i < Hardware->identity.pixelPipes; ++i) > -+ { > -+ /* Select proper pipe. */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x00000, > -+ ((((gctUINT32) (clock)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:20) - (0 ? 23:20) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:20) - (0 ? 23:20) + 1))))))) << (0 ? 23:20))) | (((gctUINT32) ((gctUINT32) (i) & ((gctUINT32) ((((1 ? 23:20) - (0 ? 23:20) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:20) - (0 ? 23:20) + 1))))))) << (0 ? 23:20))))); > -+ > -+ /* BW */ > -+ gcmkONERROR( > -+ gckOS_ReadRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x00040, > -+ &totalRead)); > -+ gcmkONERROR( > -+ gckOS_ReadRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x00044, > -+ &totalWrite)); > -+ > -+ profiler->gpuTotalRead64BytesPerFrame += totalRead; > -+ profiler->gpuTotalWrite64BytesPerFrame += totalWrite; > -+ gcmkUPDATE_PROFILE_DATA(gpuTotalRead64BytesPerFrame); > -+ gcmkUPDATE_PROFILE_DATA(gpuTotalWrite64BytesPerFrame); > -+ > -+ /* PE */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &colorKilled)); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &depthKilled)); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &colorDrawn)); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &depthDrawn)); > -+ > -+ profiler->pe_pixel_count_killed_by_color_pipe += colorKilled; > -+ profiler->pe_pixel_count_killed_by_depth_pipe += depthKilled; > -+ profiler->pe_pixel_count_drawn_by_color_pipe += colorDrawn; > -+ profiler->pe_pixel_count_drawn_by_depth_pipe += depthDrawn; > -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_killed_by_color_pipe); > -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_killed_by_depth_pipe); > -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_drawn_by_color_pipe); > -+ gcmkUPDATE_PROFILE_DATA(pe_pixel_count_drawn_by_depth_pipe); > -+ } > -+ > -+ /* Reset clock control register. */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, > -+ Hardware->core, > -+ 0x00000, > -+ clock)); > -+ > -+ > -+ > -+ > -+ /* Reset counters. */ > -+ gcmkONERROR( > -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x0003C, 1)); > -+ gcmkONERROR( > -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x0003C, 0)); > -+ gcmkONERROR( > -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00438, 0)); > -+ gcmkONERROR( > -+ gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00078, 0)); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) > -+)); > -+ > -+ /* SH */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->ps_inst_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->ps_inst_counter; > -+ profiler->ps_inst_counter -= Context->prevPSInstCount; > -+ Context->prevPSInstCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(ps_inst_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->rendered_pixel_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->rendered_pixel_counter; > -+ profiler->rendered_pixel_counter -= Context->prevPSPixelCount; > -+ Context->prevPSPixelCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(rendered_pixel_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vs_inst_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->vs_inst_counter; > -+ profiler->vs_inst_counter -= Context->prevVSInstCount; > -+ Context->prevVSInstCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(vs_inst_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (10) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->rendered_vertice_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->rendered_vertice_counter; > -+ profiler->rendered_vertice_counter -= Context->prevVSVertexCount; > -+ Context->prevVSVertexCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(rendered_vertice_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (11) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vtx_branch_inst_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->vtx_branch_inst_counter; > -+ profiler->vtx_branch_inst_counter -= Context->prevVSBranchInstCount; > -+ Context->prevVSBranchInstCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(vtx_branch_inst_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (12) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vtx_texld_inst_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->vtx_texld_inst_counter; > -+ profiler->vtx_texld_inst_counter -= Context->prevVSTexInstCount; > -+ Context->prevVSTexInstCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(vtx_texld_inst_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (13) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->pxl_branch_inst_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->pxl_branch_inst_counter; > -+ profiler->pxl_branch_inst_counter -= Context->prevPSBranchInstCount; > -+ Context->prevPSBranchInstCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(pxl_branch_inst_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (14) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->pxl_texld_inst_counter)); > -+ if (needResetShader) > -+ { > -+ temp = profiler->pxl_texld_inst_counter; > -+ profiler->pxl_texld_inst_counter -= Context->prevPSTexInstCount; > -+ Context->prevPSTexInstCount = temp; > -+ } > -+ gcmkUPDATE_PROFILE_DATA(pxl_texld_inst_counter); > -+ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) > -+)); > -+ > -+ /* PA */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_input_vtx_counter)); > -+ gcmkUPDATE_PROFILE_DATA(pa_input_vtx_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (4) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_input_prim_counter)); > -+ gcmkUPDATE_PROFILE_DATA(pa_input_prim_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (5) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_output_prim_counter)); > -+ gcmkUPDATE_PROFILE_DATA(pa_output_prim_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (6) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_depth_clipped_counter)); > -+ gcmkUPDATE_PROFILE_DATA(pa_depth_clipped_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_trivial_rejected_counter)); > -+ gcmkUPDATE_PROFILE_DATA(pa_trivial_rejected_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_culled_counter)); > -+ gcmkUPDATE_PROFILE_DATA(pa_culled_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) > -+)); > -+ > -+ /* SE */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00464, &profiler->se_culled_triangle_count)); > -+ gcmkUPDATE_PROFILE_DATA(se_culled_triangle_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00464, &profiler->se_culled_lines_count)); > -+ gcmkUPDATE_PROFILE_DATA(se_culled_lines_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) > -+)); > -+ > -+ /* RA */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_valid_pixel_count)); > -+ gcmkUPDATE_PROFILE_DATA(ra_valid_pixel_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_total_quad_count)); > -+ gcmkUPDATE_PROFILE_DATA(ra_total_quad_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_valid_quad_count_after_early_z)); > -+ gcmkUPDATE_PROFILE_DATA(ra_valid_quad_count_after_early_z); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_total_primitive_count)); > -+ gcmkUPDATE_PROFILE_DATA(ra_total_primitive_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_pipe_cache_miss_counter)); > -+ gcmkUPDATE_PROFILE_DATA(ra_pipe_cache_miss_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (10) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_prefetch_cache_miss_counter)); > -+ gcmkUPDATE_PROFILE_DATA(ra_prefetch_cache_miss_counter); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) > -+)); > -+ > -+ /* TX */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_bilinear_requests)); > -+ gcmkUPDATE_PROFILE_DATA(tx_total_bilinear_requests); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_trilinear_requests)); > -+ gcmkUPDATE_PROFILE_DATA(tx_total_trilinear_requests); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_discarded_texture_requests)); > -+ gcmkUPDATE_PROFILE_DATA(tx_total_discarded_texture_requests); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_texture_requests)); > -+ gcmkUPDATE_PROFILE_DATA(tx_total_texture_requests); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (5) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_mem_read_count)); > -+ gcmkUPDATE_PROFILE_DATA(tx_mem_read_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (6) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_mem_read_in_8B_count)); > -+ gcmkUPDATE_PROFILE_DATA(tx_mem_read_in_8B_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_miss_count)); > -+ gcmkUPDATE_PROFILE_DATA(tx_cache_miss_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_hit_texel_count)); > -+ gcmkUPDATE_PROFILE_DATA(tx_cache_hit_texel_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_miss_texel_count)); > -+ gcmkUPDATE_PROFILE_DATA(tx_cache_miss_texel_count); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) > -+)); > -+ > -+ /* MC */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_read_req_8B_from_pipeline)); > -+ gcmkUPDATE_PROFILE_DATA(mc_total_read_req_8B_from_pipeline); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_read_req_8B_from_IP)); > -+ gcmkUPDATE_PROFILE_DATA(mc_total_read_req_8B_from_IP); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_write_req_8B_from_pipeline)); > -+ gcmkUPDATE_PROFILE_DATA(mc_total_write_req_8B_from_pipeline); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) > -+)); > -+ > -+ /* HI */ > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_read_request_stalled)); > -+ gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_read_request_stalled); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_write_request_stalled)); > -+ gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_write_request_stalled); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); > -+gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_write_data_stalled)); > -+ gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_write_data_stalled); > -+ gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) )); > -+gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) > -+)); > -+ > -+ /* Success. */ > -+ gcmkFOOTER_NO(); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ /* Return the status. */ > -+ gcmkFOOTER(); > -+ return status; > -+} > -+#endif > -+ > - static gceSTATUS > - _ResetGPU( > - IN gckHARDWARE Hardware, > -@@ -5602,6 +6264,22 @@ gckHARDWARE_IsFeatureAvailable( > - && ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 2:2) & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))); > - break; > - > -+ case gcvFEATURE_PIPE_2D: > -+ available = ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 9:9) & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))); > -+ break; > -+ > -+ case gcvFEATURE_PIPE_3D: > -+#ifndef VIVANTE_NO_3D > -+ available = ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 2:2) & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))); > -+#else > -+ available = gcvFALSE; > -+#endif > -+ break; > -+ > -+ case gcvFEATURE_HALTI2: > -+ available = ((((gctUINT32) (Hardware->identity.chipMinorFeatures4)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))); > -+ break; > -+ > - default: > - gcmkFATAL("Invalid feature has been requested."); > - available = gcvFALSE; > -diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h > -index 37226b7..287ea60 100644 > ---- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h > -+++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h > -@@ -92,6 +92,7 @@ struct _gckHARDWARE > - #endif > - > - gctBOOL powerManagement; > -+ gctBOOL gpuProfiler; > - }; > - > - gceSTATUS > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c > -index b7b0d28..12a5340 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c > -@@ -128,19 +128,6 @@ _ResetFinishFunction( > - ** Pointer to a variable that will hold the pointer to the gckKERNEL > - ** object. > - */ > --#ifdef ANDROID > --#if gcdNEW_PROFILER_FILE > --#define DEFAULT_PROFILE_FILE_NAME "/sdcard/vprofiler.vpd" > --#else > --#define DEFAULT_PROFILE_FILE_NAME "/sdcard/vprofiler.xml" > --#endif > --#else > --#if gcdNEW_PROFILER_FILE > --#define DEFAULT_PROFILE_FILE_NAME "vprofiler.vpd" > --#else > --#define DEFAULT_PROFILE_FILE_NAME "vprofiler.xml" > --#endif > --#endif > - > - gceSTATUS > - gckKERNEL_Construct( > -@@ -302,17 +289,12 @@ gckKERNEL_Construct( > - > - #if VIVANTE_PROFILER > - /* Initialize profile setting */ > --#if defined ANDROID > - kernel->profileEnable = gcvFALSE; > --#else > -- kernel->profileEnable = gcvTRUE; > --#endif > - kernel->profileCleanRegister = gcvTRUE; > -+#endif > - > -- gcmkVERIFY_OK( > -- gckOS_MemCopy(kernel->profileFileName, > -- DEFAULT_PROFILE_FILE_NAME, > -- gcmSIZEOF(DEFAULT_PROFILE_FILE_NAME) + 1)); > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ gcmkONERROR(gckOS_CreateSyncTimeline(Os, &kernel->timeline)); > - #endif > - > - /* Return pointer to the gckKERNEL object. */ > -@@ -395,6 +377,13 @@ OnError: > - } > - #endif > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ if (kernel->timeline) > -+ { > -+ gcmkVERIFY_OK(gckOS_DestroySyncTimeline(Os, kernel->timeline)); > -+ } > -+#endif > -+ > - gcmkVERIFY_OK(gcmkOS_SAFE_FREE(Os, kernel)); > - } > - > -@@ -525,6 +514,10 @@ gckKERNEL_Destroy( > - } > - #endif > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ gcmkVERIFY_OK(gckOS_DestroySyncTimeline(Kernel->os, Kernel->timeline)); > -+#endif > -+ > - /* Mark the gckKERNEL object as unknown. */ > - Kernel->object.type = gcvOBJ_UNKNOWN; > - > -@@ -1310,7 +1303,8 @@ gckKERNEL_Dispatch( > - /* Commit a command and context buffer. */ > - gcmkONERROR( > - gckCOMMAND_Commit(Kernel->command, > -- gcmNAME_TO_PTR(Interface->u.Commit.context), > -+ Interface->u.Commit.context ? > -+ gcmNAME_TO_PTR(Interface->u.Commit.context) : gcvNULL, > - gcmUINT64_TO_PTR(Interface->u.Commit.commandBuffer), > - gcmUINT64_TO_PTR(Interface->u.Commit.delta), > - gcmUINT64_TO_PTR(Interface->u.Commit.queue), > -@@ -1600,7 +1594,15 @@ gckKERNEL_Dispatch( > - break; > - > - case gcvHAL_READ_ALL_PROFILE_REGISTERS: > --#if VIVANTE_PROFILER > -+#if VIVANTE_PROFILER && VIVANTE_PROFILER_CONTEXT > -+ /* Read profile data according to the context. */ > -+ gcmkONERROR( > -+ gckHARDWARE_QueryContextProfile( > -+ Kernel->hardware, > -+ Kernel->profileCleanRegister, > -+ gcmNAME_TO_PTR(Interface->u.RegisterProfileData.context), > -+ &Interface->u.RegisterProfileData.counters)); > -+#elif VIVANTE_PROFILER > - /* Read all 3D profile registers. */ > - gcmkONERROR( > - gckHARDWARE_QueryProfileRegisters( > -@@ -1628,11 +1630,6 @@ gckKERNEL_Dispatch( > - #if VIVANTE_PROFILER > - /* Get profile setting */ > - Interface->u.GetProfileSetting.enable = Kernel->profileEnable; > -- > -- gcmkVERIFY_OK( > -- gckOS_MemCopy(Interface->u.GetProfileSetting.fileName, > -- Kernel->profileFileName, > -- gcdMAX_PROFILE_FILE_NAME)); > - #endif > - > - status = gcvSTATUS_OK; > -@@ -1640,12 +1637,13 @@ gckKERNEL_Dispatch( > - case gcvHAL_SET_PROFILE_SETTING: > - #if VIVANTE_PROFILER > - /* Set profile setting */ > -- Kernel->profileEnable = Interface->u.SetProfileSetting.enable; > -- > -- gcmkVERIFY_OK( > -- gckOS_MemCopy(Kernel->profileFileName, > -- Interface->u.SetProfileSetting.fileName, > -- gcdMAX_PROFILE_FILE_NAME)); > -+ if(Kernel->hardware->gpuProfiler) > -+ Kernel->profileEnable = Interface->u.SetProfileSetting.enable; > -+ else > -+ { > -+ status = gcvSTATUS_NOT_SUPPORTED; > -+ break; > -+ } > - #endif > - > - status = gcvSTATUS_OK; > -@@ -2093,6 +2091,61 @@ gckKERNEL_Dispatch( > - #endif > - break; > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ case gcvHAL_SYNC_POINT: > -+ { > -+ gctSYNC_POINT syncPoint; > -+ > -+ switch (Interface->u.SyncPoint.command) > -+ { > -+ case gcvSYNC_POINT_CREATE: > -+ gcmkONERROR(gckOS_CreateSyncPoint(Kernel->os, &syncPoint)); > -+ > -+ Interface->u.SyncPoint.syncPoint = gcmPTR_TO_UINT64(syncPoint); > -+ > -+ gcmkVERIFY_OK( > -+ gckKERNEL_AddProcessDB(Kernel, > -+ processID, gcvDB_SYNC_POINT, > -+ syncPoint, > -+ gcvNULL, > -+ 0)); > -+ break; > -+ > -+ case gcvSYNC_POINT_DESTROY: > -+ syncPoint = gcmUINT64_TO_PTR(Interface->u.SyncPoint.syncPoint); > -+ > -+ gcmkONERROR(gckOS_DestroySyncPoint(Kernel->os, syncPoint)); > -+ > -+ gcmkVERIFY_OK( > -+ gckKERNEL_RemoveProcessDB(Kernel, > -+ processID, gcvDB_SYNC_POINT, > -+ syncPoint)); > -+ break; > -+ > -+ default: > -+ gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT); > -+ break; > -+ } > -+ } > -+ break; > -+ > -+ case gcvHAL_CREATE_NATIVE_FENCE: > -+ { > -+ gctINT fenceFD; > -+ gctSYNC_POINT syncPoint = > -+ gcmUINT64_TO_PTR(Interface->u.CreateNativeFence.syncPoint); > -+ > -+ gcmkONERROR( > -+ gckOS_CreateNativeFence(Kernel->os, > -+ Kernel->timeline, > -+ syncPoint, > -+ &fenceFD)); > -+ > -+ Interface->u.CreateNativeFence.fenceFD = fenceFD; > -+ } > -+ break; > -+#endif > -+ > - default: > - /* Invalid command. */ > - gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT); > -@@ -2856,6 +2909,8 @@ gckKERNEL_Recovery( > - return gcvSTATUS_OK; > - } > - > -+ gcmkPRINT("[galcore]: GPU[%d] hang, automatic recovery.", Kernel->core); > -+ > - /* Start a timer to clear reset flag, before timer is expired, > - ** other recovery request is ignored. */ > - gcmkVERIFY_OK( > -@@ -3382,7 +3437,7 @@ gckLINKQUEUE_Dequeue( > - IN gckLINKQUEUE LinkQueue > - ) > - { > -- gcmASSERT(LinkQueue->count == gcdLINK_QUEUE_SIZE); > -+ gcmkASSERT(LinkQueue->count == gcdLINK_QUEUE_SIZE); > - > - LinkQueue->count--; > - LinkQueue->front = (LinkQueue->front + 1) % gcdLINK_QUEUE_SIZE; > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h > -index 5896e93..1c40df2 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h > -@@ -140,8 +140,9 @@ typedef enum _gceDATABASE_TYPE > - gcvDB_CONTEXT, /* Context */ > - gcvDB_IDLE, /* GPU idle. */ > - gcvDB_MAP_MEMORY, /* Map memory */ > -- gcvDB_SHARED_INFO, /* Private data */ > -- gcvDB_MAP_USER_MEMORY /* Map user memory */ > -+ gcvDB_SHARED_INFO, /* Private data */ > -+ gcvDB_MAP_USER_MEMORY, /* Map user memory */ > -+ gcvDB_SYNC_POINT, /* Sync point. */ > - } > - gceDATABASE_TYPE; > - > -@@ -406,9 +407,6 @@ struct _gckKERNEL > - /* Enable profiling */ > - gctBOOL profileEnable; > - > -- /* The profile file name */ > -- gctCHAR profileFileName[gcdMAX_PROFILE_FILE_NAME]; > -- > - /* Clear profile register or not*/ > - gctBOOL profileCleanRegister; > - > -@@ -445,6 +443,10 @@ struct _gckKERNEL > - #if gcdDVFS > - gckDVFS dvfs; > - #endif > -+ > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ gctHANDLE timeline; > -+#endif > - }; > - > - struct _FrequencyHistory > -@@ -496,6 +498,11 @@ struct _gckCOMMAND > - /* Context switching mutex. */ > - gctPOINTER mutexContext; > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ /* Context sequence mutex. */ > -+ gctPOINTER mutexContextSeq; > -+#endif > -+ > - /* Command queue power semaphore. */ > - gctPOINTER powerSemaphore; > - > -@@ -649,6 +656,8 @@ struct _gckEVENT > - gctPOINTER eventListMutex; > - > - gctPOINTER submitTimer; > -+ > -+ volatile gctBOOL inNotify; > - }; > - > - /* Free all events belonging to a process. */ > -@@ -668,6 +677,11 @@ gckEVENT_Stop( > - IN OUT gctSIZE_T * waitSize > - ); > - > -+gceSTATUS > -+gckEVENT_WaitEmpty( > -+ IN gckEVENT Event > -+ ); > -+ > - /* gcuVIDMEM_NODE structure. */ > - typedef union _gcuVIDMEM_NODE > - { > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c > -index 9ee9ea1..73dab81 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c > -@@ -494,6 +494,11 @@ gckCOMMAND_Construct( > - /* Create the context switching mutex. */ > - gcmkONERROR(gckOS_CreateMutex(os, &command->mutexContext)); > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ /* Create the context switching mutex. */ > -+ gcmkONERROR(gckOS_CreateMutex(os, &command->mutexContextSeq)); > -+#endif > -+ > - /* Create the power management semaphore. */ > - gcmkONERROR(gckOS_CreateSemaphore(os, &command->powerSemaphore)); > - > -@@ -572,6 +577,13 @@ OnError: > - gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexContext)); > - } > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ if (command->mutexContextSeq != gcvNULL) > -+ { > -+ gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexContextSeq)); > -+ } > -+#endif > -+ > - if (command->mutexQueue != gcvNULL) > - { > - gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexQueue)); > -@@ -662,6 +674,11 @@ gckCOMMAND_Destroy( > - /* Delete the context switching mutex. */ > - gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexContext)); > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ if (Command->mutexContextSeq != gcvNULL) > -+ gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexContextSeq)); > -+#endif > -+ > - /* Delete the command queue mutex. */ > - gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexQueue)); > - > -@@ -1127,6 +1144,10 @@ gckCOMMAND_Commit( > - # endif > - #endif > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ gctBOOL sequenceAcquired = gcvFALSE; > -+#endif > -+ > - gctPOINTER pointer = gcvNULL; > - > - gcmkHEADER_ARG( > -@@ -1145,6 +1166,17 @@ gckCOMMAND_Commit( > - > - gcmkONERROR(_FlushMMU(Command)); > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ if((Command->kernel->hardware->gpuProfiler) && (Command->kernel->profileEnable)) > -+ { > -+ /* Acquire the context sequnence mutex. */ > -+ gcmkONERROR(gckOS_AcquireMutex( > -+ Command->os, Command->mutexContextSeq, gcvINFINITE > -+ )); > -+ sequenceAcquired = gcvTRUE; > -+ } > -+#endif > -+ > - /* Acquire the command queue. */ > - gcmkONERROR(gckCOMMAND_EnterCommit(Command, gcvFALSE)); > - commitEntered = gcvTRUE; > -@@ -2002,6 +2034,23 @@ gckCOMMAND_Commit( > - gcmkONERROR(gckCOMMAND_ExitCommit(Command, gcvFALSE)); > - commitEntered = gcvFALSE; > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ if(sequenceAcquired) > -+ { > -+ gcmkONERROR(gckCOMMAND_Stall(Command, gcvTRUE)); > -+ if (Command->currContext) > -+ { > -+ gcmkONERROR(gckHARDWARE_UpdateContextProfile( > -+ hardware, > -+ Command->currContext)); > -+ } > -+ > -+ /* Release the context switching mutex. */ > -+ gcmkONERROR(gckOS_ReleaseMutex(Command->os, Command->mutexContextSeq)); > -+ sequenceAcquired = gcvFALSE; > -+ } > -+#endif > -+ > - /* Loop while there are records in the queue. */ > - while (EventQueue != gcvNULL) > - { > -@@ -2114,6 +2163,14 @@ OnError: > - gcmkVERIFY_OK(gckCOMMAND_ExitCommit(Command, gcvFALSE)); > - } > - > -+#if VIVANTE_PROFILER_CONTEXT > -+ if (sequenceAcquired) > -+ { > -+ /* Release the context sequence mutex. */ > -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Command->os, Command->mutexContextSeq)); > -+ } > -+#endif > -+ > - /* Unmap the command buffer pointer. */ > - if (commandBufferMapped) > - { > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c > -index 76c1c10..1a7c340 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c > -@@ -2819,6 +2819,7 @@ gckVGCOMMAND_Construct( > - ** Enable TS overflow interrupt. > - */ > - > -+ command->info.tsOverflowInt = 0; > - gcmkERR_BREAK(gckVGINTERRUPT_Enable( > - Kernel->interrupt, > - &command->info.tsOverflowInt, > -@@ -3406,38 +3407,26 @@ gckVGCOMMAND_Commit( > - gctBOOL previousExecuted; > - gctUINT controlIndex; > - > -+ gcmkERR_BREAK(gckVGHARDWARE_SetPowerManagementState( > -+ Command->hardware, gcvPOWER_ON_AUTO > -+ )); > -+ > -+ /* Acquire the power semaphore. */ > -+ gcmkERR_BREAK(gckOS_AcquireSemaphore( > -+ Command->os, Command->powerSemaphore > -+ )); > -+ > - /* Acquire the mutex. */ > -- gcmkERR_BREAK(gckOS_AcquireMutex( > -+ status = gckOS_AcquireMutex( > - Command->os, > - Command->commitMutex, > - gcvINFINITE > -- )); > -- > -- status = gckVGHARDWARE_SetPowerManagementState( > -- Command->hardware, gcvPOWER_ON_AUTO); > -- > -- if (gcmIS_ERROR(status)) > -- { > -- /* Acquire the mutex. */ > -- gcmkVERIFY_OK(gckOS_ReleaseMutex( > -- Command->os, > -- Command->commitMutex > -- )); > -- > -- break; > -- } > -- /* Acquire the power semaphore. */ > -- status = gckOS_AcquireSemaphore( > -- Command->os, Command->powerSemaphore); > -+ ); > - > - if (gcmIS_ERROR(status)) > - { > -- /* Acquire the mutex. */ > -- gcmkVERIFY_OK(gckOS_ReleaseMutex( > -- Command->os, > -- Command->commitMutex > -- )); > -- > -+ gcmkVERIFY_OK(gckOS_ReleaseSemaphore( > -+ Command->os, Command->powerSemaphore)); > - break; > - } > - > -@@ -3669,14 +3658,14 @@ gckVGCOMMAND_Commit( > - } > - while (gcvFALSE); > - > -- gcmkVERIFY_OK(gckOS_ReleaseSemaphore( > -- Command->os, Command->powerSemaphore)); > -- > - /* Release the mutex. */ > - gcmkCHECK_STATUS(gckOS_ReleaseMutex( > - Command->os, > - Command->commitMutex > - )); > -+ > -+ gcmkVERIFY_OK(gckOS_ReleaseSemaphore( > -+ Command->os, Command->powerSemaphore)); > - } > - while (gcvFALSE); > - > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c > -index 673d4f7..134351a 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c > -@@ -1307,6 +1307,18 @@ gckKERNEL_DestroyProcessDB( > - status = gckOS_FreeMemory(Kernel->os, record->physical); > - break; > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ case gcvDB_SYNC_POINT: > -+ /* Free the user signal. */ > -+ status = gckOS_DestroySyncPoint(Kernel->os, > -+ (gctSYNC_POINT) record->data); > -+ > -+ gcmkTRACE_ZONE(gcvLEVEL_WARNING, gcvZONE_DATABASE, > -+ "DB: SYNC POINT %d (status=%d)", > -+ (gctINT)(gctUINTPTR_T)record->data, status); > -+ break; > -+#endif > -+ > - default: > - gcmkTRACE_ZONE(gcvLEVEL_ERROR, gcvZONE_DATABASE, > - "DB: Correcupted record=0x%08x type=%d", > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c > -index 217f7f1..2d81a56 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c > -@@ -931,6 +931,7 @@ gckEVENT_AddList( > - || (Interface->command == gcvHAL_TIMESTAMP) > - || (Interface->command == gcvHAL_COMMIT_DONE) > - || (Interface->command == gcvHAL_FREE_VIRTUAL_COMMAND_BUFFER) > -+ || (Interface->command == gcvHAL_SYNC_POINT) > - ); > - > - /* Validate the source. */ > -@@ -2131,6 +2132,9 @@ gckEVENT_Notify( > - gcvINFINITE)); > - acquired = gcvTRUE; > - > -+ /* We are in the notify loop. */ > -+ Event->inNotify = gcvTRUE; > -+ > - /* Grab the event head. */ > - record = queue->head; > - > -@@ -2463,6 +2467,17 @@ gckEVENT_Notify( > - break; > - #endif > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ case gcvHAL_SYNC_POINT: > -+ { > -+ gctSYNC_POINT syncPoint; > -+ > -+ syncPoint = gcmUINT64_TO_PTR(record->info.u.SyncPoint.syncPoint); > -+ status = gckOS_SignalSyncPoint(Event->os, syncPoint); > -+ } > -+ break; > -+#endif > -+ > - case gcvHAL_COMMIT_DONE: > - break; > - > -@@ -2505,6 +2520,9 @@ gckEVENT_Notify( > - gcmkONERROR(_TryToIdleGPU(Event)); > - } > - > -+ /* We are out the notify loop. */ > -+ Event->inNotify = gcvFALSE; > -+ > - /* Success. */ > - gcmkFOOTER_NO(); > - return gcvSTATUS_OK; > -@@ -2524,6 +2542,9 @@ OnError: > - } > - #endif > - > -+ /* We are out the notify loop. */ > -+ Event->inNotify = gcvFALSE; > -+ > - /* Return the status. */ > - gcmkFOOTER(); > - return status; > -@@ -2871,3 +2892,11 @@ gckEVENT_Dump( > - return gcvSTATUS_OK; > - } > - > -+gceSTATUS gckEVENT_WaitEmpty(gckEVENT Event) > -+{ > -+ gctBOOL isEmpty; > -+ > -+ while (Event->inNotify || (gcmIS_SUCCESS(gckEVENT_IsEmpty(Event, &isEmpty)) && !isEmpty)) ; > -+ > -+ return gcvSTATUS_OK; > -+} > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c > -index 8ac187b..50bc63e 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c > -@@ -794,6 +794,9 @@ gckVGINTERRUPT_Enque( > - Interrupt->kernel->hardware, &triggered > - )); > - > -+ /* Mask out TS overflow interrupt */ > -+ triggered &= 0xfffffffe; > -+ > - /* No interrupts to process? */ > - if (triggered == 0) > - { > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c > -index c7f67c7..e4ca497 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c > -@@ -1436,7 +1436,7 @@ gckMMU_AllocatePages( > - acquired = gcvTRUE; > - > - /* Allocate page table for current MMU. */ > -- for (i = 0; i < mirrorPageTable->reference; i++) > -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) > - { > - if (Mmu == mirrorPageTable->mmus[i]) > - { > -@@ -1446,7 +1446,7 @@ gckMMU_AllocatePages( > - } > - > - /* Allocate page table for other MMUs. */ > -- for (i = 0; i < mirrorPageTable->reference; i++) > -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) > - { > - mmu = mirrorPageTable->mmus[i]; > - > -@@ -1500,7 +1500,7 @@ gckMMU_FreePages( > - > - offset = (gctUINT32)PageTable - (gctUINT32)Mmu->pageTableLogical; > - > -- for (i = 0; i < mirrorPageTable->reference; i++) > -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) > - { > - mmu = mirrorPageTable->mmus[i]; > - > -@@ -1639,7 +1639,7 @@ gckMMU_SetPage( > - _WritePageEntry(PageEntry, data); > - > - #if gcdMIRROR_PAGETABLE > -- for (i = 0; i < mirrorPageTable->reference; i++) > -+ for (i = 0; i < (gctINT)mirrorPageTable->reference; i++) > - { > - mmu = mirrorPageTable->mmus[i]; > - > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c > -index 8b8bbdc..3b5dd82 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c > -+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c > -@@ -1582,6 +1582,7 @@ _NeedVirtualMapping( > - gctUINT32 end; > - gcePOOL pool; > - gctUINT32 offset; > -+ gctUINT32 baseAddress; > - > - gcmkHEADER_ARG("Node=0x%X", Node); > - > -@@ -1601,10 +1602,16 @@ _NeedVirtualMapping( > - else > - #endif > - { > -- /* For cores which can't access all physical address. */ > -- gcmkONERROR(gckHARDWARE_ConvertLogical(Kernel->hardware, > -- Node->Virtual.logical, > -- &phys)); > -+ /* Convert logical address into a physical address. */ > -+ gcmkONERROR( > -+ gckOS_GetPhysicalAddress(Kernel->os, Node->Virtual.logical, &phys)); > -+ > -+ gcmkONERROR(gckOS_GetBaseAddress(Kernel->os, &baseAddress)); > -+ > -+ gcmkASSERT(phys >= baseAddress); > -+ > -+ /* Subtract baseAddress to get a GPU address used for programming. */ > -+ phys -= baseAddress; > - > - /* If part of region is belong to gcvPOOL_VIRTUAL, > - ** whole region has to be mapped. */ > -@@ -1734,6 +1741,11 @@ gckVIDMEM_Lock( > - gcmkONERROR(gckOS_AcquireMutex(os, Node->Virtual.mutex, gcvINFINITE)); > - acquired = gcvTRUE; > - > -+#if gcdPAGED_MEMORY_CACHEABLE > -+ /* Force video memory cacheable. */ > -+ Cacheable = gcvTRUE; > -+#endif > -+ > - gcmkONERROR( > - gckOS_LockPages(os, > - Node->Virtual.physical, > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h > -index 4406d7e..7312cc2 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h > -@@ -123,6 +123,12 @@ extern "C" { > - > - #define gcvINVALID_ADDRESS ~0U > - > -+#define gcmGET_PRE_ROTATION(rotate) \ > -+ ((rotate) & (~(gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y))) > -+ > -+#define gcmGET_POST_ROTATION(rotate) \ > -+ ((rotate) & (gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y)) > -+ > - /******************************************************************************\ > - ******************************** gcsOBJECT Object ******************************* > - \******************************************************************************/ > -@@ -1124,6 +1130,60 @@ gckOS_UnmapUserMemory( > - IN gctUINT32 Address > - ); > - > -+/******************************************************************************\ > -+************************** Android Native Fence Sync *************************** > -+\******************************************************************************/ > -+gceSTATUS > -+gckOS_CreateSyncTimeline( > -+ IN gckOS Os, > -+ OUT gctHANDLE * Timeline > -+ ); > -+ > -+gceSTATUS > -+gckOS_DestroySyncTimeline( > -+ IN gckOS Os, > -+ IN gctHANDLE Timeline > -+ ); > -+ > -+gceSTATUS > -+gckOS_CreateSyncPoint( > -+ IN gckOS Os, > -+ OUT gctSYNC_POINT * SyncPoint > -+ ); > -+ > -+gceSTATUS > -+gckOS_ReferenceSyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint > -+ ); > -+ > -+gceSTATUS > -+gckOS_DestroySyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint > -+ ); > -+ > -+gceSTATUS > -+gckOS_SignalSyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint > -+ ); > -+ > -+gceSTATUS > -+gckOS_QuerySyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint, > -+ OUT gctBOOL_PTR State > -+ ); > -+ > -+gceSTATUS > -+gckOS_CreateNativeFence( > -+ IN gckOS Os, > -+ IN gctHANDLE Timeline, > -+ IN gctSYNC_POINT SyncPoint, > -+ OUT gctINT * FenceFD > -+ ); > -+ > - #if !USE_NEW_LINUX_SIGNAL > - /* Create signal to be used in the user space. */ > - gceSTATUS > -@@ -1758,7 +1818,7 @@ gckKERNEL_Recovery( > - void > - gckKERNEL_SetTimeOut( > - IN gckKERNEL Kernel, > -- IN gctUINT32 timeOut > -+ IN gctUINT32 timeOut > - ); > - > - /* Get access to the user data. */ > -@@ -2078,6 +2138,12 @@ gckHARDWARE_SetPowerManagement( > - IN gctBOOL PowerManagement > - ); > - > -+gceSTATUS > -+gckHARDWARE_SetGpuProfiler( > -+ IN gckHARDWARE Hardware, > -+ IN gctBOOL GpuProfiler > -+ ); > -+ > - #if gcdENABLE_FSCALE_VAL_ADJUST > - gceSTATUS > - gckHARDWARE_SetFscaleValue( > -@@ -2554,6 +2620,22 @@ gckHARDWARE_QueryProfileRegisters( > - ); > - #endif > - > -+#if VIVANTE_PROFILER_CONTEXT > -+gceSTATUS > -+gckHARDWARE_QueryContextProfile( > -+ IN gckHARDWARE Hardware, > -+ IN gctBOOL Clear, > -+ IN gckCONTEXT Context, > -+ OUT gcsPROFILER_COUNTERS * Counters > -+ ); > -+ > -+gceSTATUS > -+gckHARDWARE_UpdateContextProfile( > -+ IN gckHARDWARE Hardware, > -+ IN gckCONTEXT Context > -+ ); > -+#endif > -+ > - gceSTATUS > - gckOS_SignalQueryHardware( > - IN gckOS Os, > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h > -index 44689b0..9c17114 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h > -@@ -71,10 +71,17 @@ typedef struct _gcoFENCE * gcoFENCE; > - typedef struct _gcsSYNC_CONTEXT * gcsSYNC_CONTEXT_PTR; > - #endif > - > -+typedef struct _gcoOS_SymbolsList gcoOS_SymbolsList; > -+ > - /******************************************************************************\ > - ******************************* Process local storage ************************* > - \******************************************************************************/ > - typedef struct _gcsPLS * gcsPLS_PTR; > -+ > -+typedef void (* gctPLS_DESTRUCTOR) ( > -+ gcsPLS_PTR > -+ ); > -+ > - typedef struct _gcsPLS > - { > - /* Global objects. */ > -@@ -103,6 +110,12 @@ typedef struct _gcsPLS > - > - /* PorcessID of the constrcutor process */ > - gctUINT32 processID; > -+#if gcdFORCE_GAL_LOAD_TWICE > -+ /* ThreadID of the constrcutor process. */ > -+ gctSIZE_T threadID; > -+ /* Flag for calling module destructor. */ > -+ gctBOOL exiting; > -+#endif > - > - /* Reference count for destructor. */ > - gcsATOM_PTR reference; > -@@ -111,6 +124,8 @@ typedef struct _gcsPLS > - gctBOOL bNeedSupportNP2Texture; > - #endif > - > -+ /* Destructor for eglDisplayInfo. */ > -+ gctPLS_DESTRUCTOR destructor; > - } > - gcsPLS; > - > -@@ -148,6 +163,11 @@ typedef struct _gcsTLS > - #endif > - gco2D engine2D; > - gctBOOL copied; > -+ > -+#if gcdFORCE_GAL_LOAD_TWICE > -+ /* libGAL.so handle */ > -+ gctHANDLE handle; > -+#endif > - } > - gcsTLS; > - > -@@ -160,6 +180,7 @@ typedef enum _gcePLS_VALUE > - gcePLS_VALUE_EGL_DISPLAY_INFO, > - gcePLS_VALUE_EGL_SURFACE_INFO, > - gcePLS_VALUE_EGL_CONFIG_FORMAT_INFO, > -+ gcePLS_VALUE_EGL_DESTRUCTOR_INFO, > - } > - gcePLS_VALUE; > - > -@@ -577,6 +598,12 @@ gcoHAL_Call( > - IN OUT gcsHAL_INTERFACE_PTR Interface > - ); > - > -+gceSTATUS > -+gcoHAL_GetPatchID( > -+ IN gcoHAL Hal, > -+ OUT gcePATCH_ID * PatchID > -+ ); > -+ > - /* Schedule an event. */ > - gceSTATUS > - gcoHAL_ScheduleEvent( > -@@ -637,6 +664,16 @@ gcoHAL_QuerySeparated3D2D( > - IN gcoHAL Hal > - ); > - > -+gceSTATUS > -+gcoHAL_QuerySpecialHint( > -+ IN gceSPECIAL_HINT Hint > -+ ); > -+ > -+gceSTATUS > -+gcoHAL_SetSpecialHintData( > -+ IN gcoHARDWARE Hardware > -+ ); > -+ > - /* Get pointer to gcoVG object. */ > - gceSTATUS > - gcoHAL_GetVGEngine( > -@@ -786,7 +823,6 @@ gcoOS_FreeVideoMemory( > - IN gctPOINTER Handle > - ); > - > --#if gcdENABLE_BANK_ALIGNMENT > - gceSTATUS > - gcoSURF_GetBankOffsetBytes( > - IN gcoSURF Surfce, > -@@ -794,7 +830,6 @@ gcoSURF_GetBankOffsetBytes( > - IN gctUINT32 Stride, > - IN gctUINT32_PTR Bytes > - ); > --#endif > - > - /* Map user memory. */ > - gceSTATUS > -@@ -918,6 +953,21 @@ gcoOS_Flush( > - IN gctFILE File > - ); > - > -+/* Close a file descriptor. */ > -+gceSTATUS > -+gcoOS_CloseFD( > -+ IN gcoOS Os, > -+ IN gctINT FD > -+ ); > -+ > -+/* Dup file descriptor to another. */ > -+gceSTATUS > -+gcoOS_DupFD( > -+ IN gcoOS Os, > -+ IN gctINT FD, > -+ OUT gctINT * FD2 > -+ ); > -+ > - /* Create an endpoint for communication. */ > - gceSTATUS > - gcoOS_Socket( > -@@ -977,6 +1027,14 @@ gcoOS_GetEnv( > - OUT gctSTRING * Value > - ); > - > -+/* Set environment variable value. */ > -+gceSTATUS > -+gcoOS_SetEnv( > -+ IN gcoOS Os, > -+ IN gctCONST_STRING VarName, > -+ IN gctSTRING Value > -+ ); > -+ > - /* Get current working directory. */ > - gceSTATUS > - gcoOS_GetCwd( > -@@ -1210,6 +1268,13 @@ gcoOS_DetectProcessByEncryptedName( > - IN gctCONST_STRING Name > - ); > - > -+#if defined(ANDROID) > -+gceSTATUS > -+gcoOS_DetectProgrameByEncryptedSymbols( > -+ IN gcoOS_SymbolsList Symbols > -+ ); > -+#endif > -+ > - /*----------------------------------------------------------------------------*/ > - /*----- Atoms ----------------------------------------------------------------*/ > - > -@@ -1403,6 +1468,42 @@ gcoOS_UnmapSignal( > - IN gctSIGNAL Signal > - ); > - > -+/*----------------------------------------------------------------------------*/ > -+/*----- Android Native Fence -------------------------------------------------*/ > -+ > -+/* Create sync point. */ > -+gceSTATUS > -+gcoOS_CreateSyncPoint( > -+ IN gcoOS Os, > -+ OUT gctSYNC_POINT * SyncPoint > -+ ); > -+ > -+/* Destroy sync point. */ > -+gceSTATUS > -+gcoOS_DestroySyncPoint( > -+ IN gcoOS Os, > -+ IN gctSYNC_POINT SyncPoint > -+ ); > -+ > -+/* Create native fence. */ > -+gceSTATUS > -+gcoOS_CreateNativeFence( > -+ IN gcoOS Os, > -+ IN gctSYNC_POINT SyncPoint, > -+ OUT gctINT * FenceFD > -+ ); > -+ > -+/* Wait on native fence. */ > -+gceSTATUS > -+gcoOS_WaitNativeFence( > -+ IN gcoOS Os, > -+ IN gctINT FenceFD, > -+ IN gctUINT32 Timeout > -+ ); > -+ > -+/*----------------------------------------------------------------------------*/ > -+/*----- Memory Access and Cache ----------------------------------------------*/ > -+ > - /* Write a register. */ > - gceSTATUS > - gcoOS_WriteRegister( > -@@ -1507,7 +1608,7 @@ gcoOS_QueryProfileTickRate( > - # define gcmPROFILE_QUERY(start, ticks) do { } while (gcvFALSE) > - # define gcmPROFILE_ONLY(x) do { } while (gcvFALSE) > - # define gcmPROFILE_ELSE(x) x > --# define gcmPROFILE_DECLARE_ONLY(x) typedef x > -+# define gcmPROFILE_DECLARE_ONLY(x) do { } while (gcvFALSE) > - # define gcmPROFILE_DECLARE_ELSE(x) x > - #endif > - > -@@ -1579,6 +1680,28 @@ typedef struct _gcsRECT > - } > - gcsRECT; > - > -+typedef union _gcsPIXEL > -+{ > -+ struct > -+ { > -+ gctFLOAT r, g, b, a; > -+ gctFLOAT d, s; > -+ } pf; > -+ > -+ struct > -+ { > -+ gctINT32 r, g, b, a; > -+ gctINT32 d, s; > -+ } pi; > -+ > -+ struct > -+ { > -+ gctUINT32 r, g, b, a; > -+ gctUINT32 d, s; > -+ } pui; > -+ > -+} gcsPIXEL; > -+ > - > - /******************************************************************************\ > - ********************************* gcoSURF Object ******************************** > -@@ -1795,6 +1918,18 @@ gcoSURF_SetRotation( > - ); > - > - gceSTATUS > -+gcoSURF_SetPreRotation( > -+ IN gcoSURF Surface, > -+ IN gceSURF_ROTATION Rotation > -+ ); > -+ > -+gceSTATUS > -+gcoSURF_GetPreRotation( > -+ IN gcoSURF Surface, > -+ IN gceSURF_ROTATION *Rotation > -+ ); > -+ > -+gceSTATUS > - gcoSURF_IsValid( > - IN gcoSURF Surface > - ); > -@@ -1824,6 +1959,15 @@ gcoSURF_DisableTileStatus( > - IN gcoSURF Surface, > - IN gctBOOL Decompress > - ); > -+ > -+gceSTATUS > -+gcoSURF_AlignResolveRect( > -+ IN gcoSURF Surf, > -+ IN gcsPOINT_PTR RectOrigin, > -+ IN gcsPOINT_PTR RectSize, > -+ OUT gcsPOINT_PTR AlignedOrigin, > -+ OUT gcsPOINT_PTR AlignedSize > -+ ); > - #endif /* VIVANTE_NO_3D */ > - > - /* Get surface size. */ > -@@ -1910,6 +2054,9 @@ gcoSURF_FillFromTile( > - IN gcoSURF Surface > - ); > - > -+/* Check if surface needs a filler. */ > -+gceSTATUS gcoSURF_NeedFiller(IN gcoSURF Surface); > -+ > - /* Fill surface with a value. */ > - gceSTATUS > - gcoSURF_Fill( > -@@ -1949,6 +2096,19 @@ gcoSURF_SetBuffer( > - IN gctUINT32 Physical > - ); > - > -+/* Set the underlying video buffer for the surface wrapper. */ > -+gceSTATUS > -+gcoSURF_SetVideoBuffer( > -+ IN gcoSURF Surface, > -+ IN gceSURF_TYPE Type, > -+ IN gceSURF_FORMAT Format, > -+ IN gctUINT Width, > -+ IN gctUINT Height, > -+ IN gctUINT Stride, > -+ IN gctPOINTER *LogicalPlane1, > -+ IN gctUINT32 *PhysicalPlane1 > -+ ); > -+ > - /* Set the size of the surface in pixels and map the underlying buffer. */ > - gceSTATUS > - gcoSURF_SetWindow( > -@@ -3705,6 +3865,12 @@ gcGetUserDebugOption( > - void > - ); > - > -+struct _gcoOS_SymbolsList > -+{ > -+ gcePATCH_ID patchId; > -+ const char * symList[10]; > -+}; > -+ > - #if gcdHAS_ELLIPSES > - #define gcmUSER_DEBUG_MSG(level, ...) \ > - do \ > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h > -index 8693c37..062224c 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h > -@@ -39,12 +39,10 @@ extern "C" { > - #define GC_ENABLE_LOADTIME_OPT 1 > - #endif > - > --#define TEMP_OPT_CONSTANT_TEXLD_COORD 1 > -+#define TEMP_OPT_CONSTANT_TEXLD_COORD 0 > - > - #define TEMP_SHADER_PATCH 1 > - > --#define ADD_PRE_ROTATION_TO_VS 0 > -- > - #define TEMP_INLINE_ALL_EXPANSION 1 > - /******************************* IR VERSION ******************/ > - #define gcdSL_IR_VERSION gcmCC('\0','\0','\0','\1') > -@@ -271,6 +269,7 @@ typedef enum _gcSL_OPCODE > - gcSL_ADDSAT, /* 0x5C */ /* Integer only. */ > - gcSL_SUBSAT, /* 0x5D */ /* Integer only. */ > - gcSL_MULSAT, /* 0x5E */ /* Integer only. */ > -+ gcSL_DP2, /* 0x5F */ > - gcSL_MAXOPCODE > - } > - gcSL_OPCODE; > -@@ -474,6 +473,9 @@ struct _gcsHINT > - > - gctBOOL clipW; > - > -+ /* Flag whether or not the shader has a KILL instruction. */ > -+ gctBOOL hasKill; > -+ > - /* Element count. */ > - gctUINT32 elementCount; > - > -@@ -495,12 +497,18 @@ struct _gcsHINT > - /* Balance maximum. */ > - gctUINT32 balanceMax; > - > -+ /* Auto-shift balancing. */ > -+ gctBOOL autoShift; > -+ > - /* Flag whether the PS outputs the depth value or not. */ > - gctBOOL psHasFragDepthOut; > - > - /* Flag whether the ThreadWalker is in PS. */ > - gctBOOL threadWalkerInPS; > - > -+ /* HW reg number for position of VS */ > -+ gctUINT32 hwRegNoOfSIVPos; > -+ > - #if gcdALPHA_KILL_IN_SHADER > - /* States to set when alpha kill is enabled. */ > - gctUINT32 killStateAddress; > -@@ -687,12 +695,12 @@ typedef enum _gceSHADER_FLAGS > - gcvSHADER_USE_ALPHA_KILL = 0x100, > - #endif > - > --#if ADD_PRE_ROTATION_TO_VS > -+#if gcdPRE_ROTATION && (ANDROID_SDK_VERSION >= 14) > - gcvSHADER_VS_PRE_ROTATION = 0x200, > - #endif > - > - #if TEMP_INLINE_ALL_EXPANSION > -- gcvSHADER_INLINE_ALL_EXPANSION = 0x200, > -+ gcvSHADER_INLINE_ALL_EXPANSION = 0x400, > - #endif > - } > - gceSHADER_FLAGS; > -@@ -827,6 +835,7 @@ typedef struct _gcOPTIMIZER_OPTION > - gctBOOL dumpOptimizerVerbose; /* dump result IR in each optimization phase */ > - gctBOOL dumpBEGenertedCode; /* dump generated machine code */ > - gctBOOL dumpBEVerbose; /* dump BE tree and optimization detail */ > -+ gctBOOL dumpBEFinalIR; /* dump BE final IR */ > - > - /* Code generation */ > - > -@@ -945,6 +954,8 @@ extern gcOPTIMIZER_OPTION theOptimizerOption; > - gcmOPT_DUMP_CODEGEN_VERBOSE() ) > - #define gcmOPT_DUMP_CODEGEN_VERBOSE() \ > - (gcmGetOptimizerOption()->dumpBEVerbose != 0) > -+#define gcmOPT_DUMP_FINAL_IR() \ > -+ (gcmGetOptimizerOption()->dumpBEFinalIR != 0) > - > - #define gcmOPT_SET_DUMP_SHADER_SRC(v) \ > - gcmGetOptimizerOption()->dumpShaderSource = (v) > -@@ -1064,6 +1075,13 @@ typedef struct _gcNPOT_PATCH_PARAM > - gctINT texDimension; /* 2 or 3 */ > - }gcNPOT_PATCH_PARAM, *gcNPOT_PATCH_PARAM_PTR; > - > -+typedef struct _gcZBIAS_PATCH_PARAM > -+{ > -+ /* Driver uses this to program uniform that designating zbias */ > -+ gctINT uniformAddr; > -+ gctINT channel; > -+}gcZBIAS_PATCH_PARAM, *gcZBIAS_PATCH_PARAM_PTR; > -+ > - void > - gcGetOptionFromEnv( > - IN OUT gcOPTIMIZER_OPTION * Option > -@@ -1556,6 +1574,43 @@ gcSHADER_AddUniform( > - OUT gcUNIFORM * Uniform > - ); > - > -+/******************************************************************************* > -+** gcSHADER_AddPreRotationUniform > -+******************************************************************************** > -+** > -+** Add an uniform to a gcSHADER object. > -+** > -+** INPUT: > -+** > -+** gcSHADER Shader > -+** Pointer to a gcSHADER object. > -+** > -+** gctCONST_STRING Name > -+** Name of the uniform to add. > -+** > -+** gcSHADER_TYPE Type > -+** Type of the uniform to add. > -+** > -+** gctSIZE_T Length > -+** Array length of the uniform to add. 'Length' must be at least 1. > -+** > -+** gctINT col > -+** Which uniform. > -+** > -+** OUTPUT: > -+** > -+** gcUNIFORM * Uniform > -+** Pointer to a variable receiving the gcUNIFORM object pointer. > -+*/ > -+gceSTATUS > -+gcSHADER_AddPreRotationUniform( > -+ IN gcSHADER Shader, > -+ IN gctCONST_STRING Name, > -+ IN gcSHADER_TYPE Type, > -+ IN gctSIZE_T Length, > -+ IN gctINT col, > -+ OUT gcUNIFORM * Uniform > -+ ); > - > - /******************************************************************************* > - ** gcSHADER_AddUniformEx > -@@ -1677,6 +1732,28 @@ gcSHADER_GetUniformCount( > - ); > - > - /******************************************************************************* > -+** gcSHADER_GetPreRotationUniform > -+******************************************************************************** > -+** > -+** Get the preRotate Uniform. > -+** > -+** INPUT: > -+** > -+** gcSHADER Shader > -+** Pointer to a gcSHADER object. > -+** > -+** OUTPUT: > -+** > -+** gcUNIFORM ** pUniform > -+** Pointer to a preRotation uniforms array. > -+*/ > -+gceSTATUS > -+gcSHADER_GetPreRotationUniform( > -+ IN gcSHADER Shader, > -+ OUT gcUNIFORM ** pUniform > -+ ); > -+ > -+/******************************************************************************* > - ** gcSHADER_GetUniform > - ******************************************************************************** > - ** > -@@ -3438,6 +3515,34 @@ gcUNIFORM_SetValueF( > - ); > - > - /******************************************************************************* > -+** gcUNIFORM_ProgramF > -+** > -+** Set the value of a uniform in floating point. > -+** > -+** INPUT: > -+** > -+** gctUINT32 Address > -+** Address of Uniform. > -+** > -+** gctSIZE_T Row/Col > -+** > -+** const gctFLOAT * Value > -+** Pointer to a buffer holding the floating point values for the > -+** uniform. > -+** > -+** OUTPUT: > -+** > -+** Nothing. > -+*/ > -+gceSTATUS > -+gcUNIFORM_ProgramF( > -+ IN gctUINT32 Address, > -+ IN gctSIZE_T Row, > -+ IN gctSIZE_T Col, > -+ IN const gctFLOAT * Value > -+ ); > -+ > -+/******************************************************************************* > - ** gcUNIFORM_GetModelViewProjMatrix > - ******************************************************************************** > - ** > -@@ -3912,6 +4017,23 @@ gcRecompileShaders( > - IN gctUINT32 *SamplerWrapS, > - IN gctUINT32 *SamplerWrapT > - ); > -+ > -+gceSTATUS > -+gcRecompileDepthBias( > -+ IN gcoHAL Hal, > -+ IN gcMACHINECODE_PTR pVsMachineCode, > -+ /*Recompile variables*/ > -+ IN OUT gctPOINTER *ppRecompileStateBuffer, > -+ IN OUT gctSIZE_T *pRecompileStateBufferSize, > -+ IN OUT gcsHINT_PTR *ppRecompileHints, > -+ /* natvie state*/ > -+ IN gctPOINTER pNativeStateBuffer, > -+ IN gctSIZE_T nativeStateBufferSize, > -+ IN gcsHINT_PTR pNativeHints, > -+ OUT gctINT * uniformAddr, > -+ OUT gctINT * uniformChannel > -+ ); > -+ > - /******************************************************************************* > - ** gcSaveProgram > - ******************************************************************************** > -@@ -4138,6 +4260,16 @@ gcSHADER_PatchNPOTForMachineCode( > - IN OUT gcsHINT_PTR pHints /* User needs copy original hints to this one, then passed this one in */ > - ); > - > -+gceSTATUS > -+gcSHADER_PatchZBiasForMachineCodeVS( > -+ IN gcMACHINECODE_PTR pMachineCode, > -+ IN OUT gcZBIAS_PATCH_PARAM_PTR pPatchParam, > -+ IN gctUINT hwSupportedInstCount, > -+ OUT gctPOINTER* ppCmdBuffer, > -+ OUT gctUINT32* pByteSizeOfCmdBuffer, > -+ IN OUT gcsHINT_PTR pHints /* User needs copy original hints to this one, then passed this one in */ > -+ ); > -+ > - #ifdef __cplusplus > - } > - #endif > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h > -index b056c52..fc8c395 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h > -@@ -166,6 +166,12 @@ typedef enum _gceHAL_COMMAND_CODES > - > - /* Reset time stamp. */ > - gcvHAL_QUERY_RESET_TIME_STAMP, > -+ > -+ /* Sync point operations. */ > -+ gcvHAL_SYNC_POINT, > -+ > -+ /* Create native fence and return its fd. */ > -+ gcvHAL_CREATE_NATIVE_FENCE, > - } > - gceHAL_COMMAND_CODES; > - > -@@ -723,6 +729,10 @@ typedef struct _gcsHAL_INTERFACE > - /* gcvHAL_READ_ALL_PROFILE_REGISTERS */ > - struct _gcsHAL_READ_ALL_PROFILE_REGISTERS > - { > -+#if VIVANTE_PROFILER_CONTEXT > -+ /* Context buffer object gckCONTEXT. Just a name. */ > -+ IN gctUINT32 context; > -+#endif > - /* Data read. */ > - OUT gcsPROFILER_COUNTERS counters; > - } > -@@ -978,6 +988,33 @@ typedef struct _gcsHAL_INTERFACE > - OUT gctUINT64 timeStamp; > - } > - QueryResetTimeStamp; > -+ > -+ struct _gcsHAL_SYNC_POINT > -+ { > -+ /* Command. */ > -+ gceSYNC_POINT_COMMAND_CODES command; > -+ > -+ /* Sync point. */ > -+ IN OUT gctUINT64 syncPoint; > -+ > -+ /* From where. */ > -+ IN gceKERNEL_WHERE fromWhere; > -+ > -+ /* Signaled state. */ > -+ OUT gctBOOL state; > -+ } > -+ SyncPoint; > -+ > -+ struct _gcsHAL_CREATE_NATIVE_FENCE > -+ { > -+ /* Signal id to dup. */ > -+ IN gctUINT64 syncPoint; > -+ > -+ /* Native fence file descriptor. */ > -+ OUT gctINT fenceFD; > -+ > -+ } > -+ CreateNativeFence; > - } > - u; > - } > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h > -index 8481375..3fb2fe4 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h > -@@ -323,6 +323,15 @@ gcoSURF_Resolve( > - IN gcoSURF DestSurface > - ); > - > -+gceSTATUS > -+gcoSURF_IsHWResolveable( > -+ IN gcoSURF SrcSurface, > -+ IN gcoSURF DestSurface, > -+ IN gcsPOINT_PTR SrcOrigin, > -+ IN gcsPOINT_PTR DestOrigin, > -+ IN gcsPOINT_PTR RectSize > -+ ); > -+ > - /* Resolve rectangular area of a surface. */ > - gceSTATUS > - gcoSURF_ResolveRect( > -@@ -345,6 +354,11 @@ gcoSURF_IsRenderable( > - IN gcoSURF Surface > - ); > - > -+gceSTATUS > -+gcoSURF_IsFormatRenderableAsRT( > -+ IN gcoSURF Surface > -+ ); > -+ > - #if gcdSYNC > - gceSTATUS > - gcoSURF_GetFence( > -@@ -1006,6 +1020,7 @@ typedef struct _gcsALPHA_INFO > - gctBOOL test; > - gceCOMPARE compare; > - gctUINT8 reference; > -+ gctFLOAT floatReference; > - > - /* Alpha blending states. */ > - gctBOOL blend; > -@@ -1040,7 +1055,8 @@ gco3D_SetAlphaCompare( > - gceSTATUS > - gco3D_SetAlphaReference( > - IN gco3D Engine, > -- IN gctUINT8 Reference > -+ IN gctUINT8 Reference, > -+ IN gctFLOAT FloatReference > - ); > - > - /* Set alpha test reference in fixed point. */ > -@@ -1504,6 +1520,19 @@ gcoTEXTURE_UploadSub( > - IN gceSURF_FORMAT Format > - ); > - > -+/* Upload YUV data to an gcoTEXTURE object. */ > -+gceSTATUS > -+gcoTEXTURE_UploadYUV( > -+ IN gcoTEXTURE Texture, > -+ IN gceTEXTURE_FACE Face, > -+ IN gctUINT Width, > -+ IN gctUINT Height, > -+ IN gctUINT Slice, > -+ IN gctPOINTER Memory[3], > -+ IN gctINT Stride[3], > -+ IN gceSURF_FORMAT Format > -+ ); > -+ > - /* Upload compressed data to an gcoTEXTURE object. */ > - gceSTATUS > - gcoTEXTURE_UploadCompressed( > -@@ -1621,6 +1650,13 @@ gcoTEXTURE_QueryCaps( > - ); > - > - gceSTATUS > -+gcoTEXTURE_GetTiling( > -+ IN gcoTEXTURE Texture, > -+ IN gctINT preferLevel, > -+ OUT gceTILING * Tiling > -+ ); > -+ > -+gceSTATUS > - gcoTEXTURE_GetClosestFormat( > - IN gcoHAL Hal, > - IN gceSURF_FORMAT InFormat, > -@@ -2001,6 +2037,14 @@ gcoHAL_SetSharedInfo( > - IN gctSIZE_T Bytes > - ); > - > -+#if VIVANTE_PROFILER_CONTEXT > -+gceSTATUS > -+gcoHARDWARE_GetContext( > -+ IN gcoHARDWARE Hardware, > -+ OUT gctUINT32 * Context > -+ ); > -+#endif > -+ > - #ifdef __cplusplus > - } > - #endif > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h > -index a1d9ae5..8e3c2f8 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h > -@@ -146,10 +146,26 @@ typedef enum _gceFEATURE > - gcvFEATURE_FRUSTUM_CLIP_FIX, > - gcvFEATURE_TEXTURE_LINEAR, > - gcvFEATURE_TEXTURE_YUV_ASSEMBLER, > -+ gcvFEATURE_SHADER_HAS_INSTRUCTION_CACHE, > - gcvFEATURE_DYNAMIC_FREQUENCY_SCALING, > - gcvFEATURE_BUGFIX15, > -+ gcvFEATURE_2D_GAMMA, > -+ gcvFEATURE_2D_COLOR_SPACE_CONVERSION, > -+ gcvFEATURE_2D_SUPER_TILE_VERSION, > - gcvFEATURE_2D_MIRROR_EXTENSION, > -+ gcvFEATURE_2D_SUPER_TILE_V1, > -+ gcvFEATURE_2D_SUPER_TILE_V2, > -+ gcvFEATURE_2D_SUPER_TILE_V3, > -+ gcvFEATURE_2D_MULTI_SOURCE_BLT_EX2, > - gcvFEATURE_ELEMENT_INDEX_UINT, > -+ gcvFEATURE_2D_COMPRESSION, > -+ gcvFEATURE_2D_OPF_YUV_OUTPUT, > -+ gcvFEATURE_2D_MULTI_SRC_BLT_TO_UNIFIED_DST_RECT, > -+ gcvFEATURE_2D_YUV_MODE, > -+ gcvFEATURE_DECOMPRESS_Z16, > -+ gcvFEATURE_LINEAR_RENDER_TARGET, > -+ gcvFEATURE_BUG_FIXES8, > -+ gcvFEATURE_HALTI2, > - } > - gceFEATURE; > - > -@@ -203,11 +219,14 @@ typedef enum _gceSURF_TYPE > - gcvSURF_NO_VIDMEM = 0x200, /* Used to allocate surfaces with no underlying vidmem node. > - In Android, vidmem node is allocated by another process. */ > - gcvSURF_CACHEABLE = 0x400, /* Used to allocate a cacheable surface */ > --#if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST > - gcvSURF_FLIP = 0x800, /* The Resolve Target the will been flip resolve from RT */ > --#endif > - gcvSURF_TILE_STATUS_DIRTY = 0x1000, /* Init tile status to all dirty */ > - > -+ gcvSURF_LINEAR = 0x2000, > -+ > -+ gcvSURF_TEXTURE_LINEAR = gcvSURF_TEXTURE > -+ | gcvSURF_LINEAR, > -+ > - gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET > - | gcvSURF_NO_TILE_STATUS, > - > -@@ -217,6 +236,9 @@ typedef enum _gceSURF_TYPE > - gcvSURF_DEPTH_NO_TILE_STATUS = gcvSURF_DEPTH > - | gcvSURF_NO_TILE_STATUS, > - > -+ gcvSURF_DEPTH_TS_DIRTY = gcvSURF_DEPTH > -+ | gcvSURF_TILE_STATUS_DIRTY, > -+ > - /* Supported surface types with no vidmem node. */ > - gcvSURF_BITMAP_NO_VIDMEM = gcvSURF_BITMAP > - | gcvSURF_NO_VIDMEM, > -@@ -231,10 +253,8 @@ typedef enum _gceSURF_TYPE > - gcvSURF_CACHEABLE_BITMAP = gcvSURF_BITMAP > - | gcvSURF_CACHEABLE, > - > --#if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST > - gcvSURF_FLIP_BITMAP = gcvSURF_BITMAP > - | gcvSURF_FLIP, > --#endif > - } > - gceSURF_TYPE; > - > -@@ -263,6 +283,9 @@ typedef enum _gceSURF_ROTATION > - gcvSURF_270_DEGREE, > - gcvSURF_FLIP_X, > - gcvSURF_FLIP_Y, > -+ > -+ gcvSURF_POST_FLIP_X = 0x40000000, > -+ gcvSURF_POST_FLIP_Y = 0x80000000, > - } > - gceSURF_ROTATION; > - > -@@ -622,21 +645,16 @@ gce2D_PORTER_DUFF_RULE; > - typedef enum _gce2D_YUV_COLOR_MODE > - { > - gcv2D_YUV_601= 0, > -- gcv2D_YUV_709 > --} > --gce2D_YUV_COLOR_MODE; > -+ gcv2D_YUV_709, > -+ gcv2D_YUV_USER_DEFINED, > -+ gcv2D_YUV_USER_DEFINED_CLAMP, > - > --/* 2D Rotation and flipping. */ > --typedef enum _gce2D_ORIENTATION > --{ > -- gcv2D_0_DEGREE = 0, > -- gcv2D_90_DEGREE, > -- gcv2D_180_DEGREE, > -- gcv2D_270_DEGREE, > -- gcv2D_X_FLIP, > -- gcv2D_Y_FLIP > -+ /* Default setting is for src. gcv2D_YUV_DST > -+ can be ORed to set dst. > -+ */ > -+ gcv2D_YUV_DST = 0x80000000, > - } > --gce2D_ORIENTATION; > -+gce2D_YUV_COLOR_MODE; > - > - typedef enum _gce2D_COMMAND > - { > -@@ -656,21 +674,39 @@ typedef enum _gce2D_TILE_STATUS_CONFIG > - gcv2D_TSC_ENABLE = 0x00000001, > - gcv2D_TSC_COMPRESSED = 0x00000002, > - gcv2D_TSC_DOWN_SAMPLER = 0x00000004, > -+ gcv2D_TSC_2D_COMPRESSED = 0x00000008, > - } > - gce2D_TILE_STATUS_CONFIG; > - > - typedef enum _gce2D_QUERY > - { > -- gcv2D_QUERY_RGB_ADDRESS_MAX_ALIGN = 0, > -- gcv2D_QUERY_RGB_STRIDE_MAX_ALIGN, > -- gcv2D_QUERY_YUV_ADDRESS_MAX_ALIGN, > -- gcv2D_QUERY_YUV_STRIDE_MAX_ALIGN, > -+ gcv2D_QUERY_RGB_ADDRESS_MIN_ALIGN = 0, > -+ gcv2D_QUERY_RGB_STRIDE_MIN_ALIGN, > -+ gcv2D_QUERY_YUV_ADDRESS_MIN_ALIGN, > -+ gcv2D_QUERY_YUV_STRIDE_MIN_ALIGN, > - } > - gce2D_QUERY; > - > -+typedef enum _gce2D_SUPER_TILE_VERSION > -+{ > -+ gcv2D_SUPER_TILE_VERSION_V1 = 1, > -+ gcv2D_SUPER_TILE_VERSION_V2 = 2, > -+ gcv2D_SUPER_TILE_VERSION_V3 = 3, > -+} > -+gce2D_SUPER_TILE_VERSION; > -+ > - typedef enum _gce2D_STATE > - { > - gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE = 1, > -+ gcv2D_STATE_SUPER_TILE_VERSION, > -+ gcv2D_STATE_EN_GAMMA, > -+ gcv2D_STATE_DE_GAMMA, > -+ gcv2D_STATE_MULTI_SRC_BLIT_UNIFIED_DST_RECT, > -+ > -+ gcv2D_STATE_ARRAY_EN_GAMMA = 0x10001, > -+ gcv2D_STATE_ARRAY_DE_GAMMA, > -+ gcv2D_STATE_ARRAY_CSC_YUV_TO_RGB, > -+ gcv2D_STATE_ARRAY_CSC_RGB_TO_YUV, > - } > - gce2D_STATE; > - > -@@ -809,6 +845,15 @@ typedef enum _gceUSER_SIGNAL_COMMAND_CODES > - } > - gceUSER_SIGNAL_COMMAND_CODES; > - > -+/* Sync point command codes. */ > -+typedef enum _gceSYNC_POINT_COMMAND_CODES > -+{ > -+ gcvSYNC_POINT_CREATE, > -+ gcvSYNC_POINT_DESTROY, > -+ gcvSYNC_POINT_SIGNAL, > -+} > -+gceSYNC_POINT_COMMAND_CODES; > -+ > - /* Event locations. */ > - typedef enum _gceKERNEL_WHERE > - { > -@@ -848,6 +893,44 @@ typedef enum _gceDEBUG_MESSAGE_TYPE > - } > - gceDEBUG_MESSAGE_TYPE; > - > -+typedef enum _gceSPECIAL_HINT > -+{ > -+ gceSPECIAL_HINT0, > -+ gceSPECIAL_HINT1, > -+ gceSPECIAL_HINT2, > -+ gceSPECIAL_HINT3, > -+ /* For disable dynamic stream/index */ > -+ gceSPECIAL_HINT4 > -+} > -+gceSPECIAL_HINT; > -+ > -+typedef enum _gceMACHINECODE > -+{ > -+ gcvMACHINECODE_HOVERJET0 = 0x0, > -+ gcvMACHINECODE_HOVERJET1 , > -+ > -+ gcvMACHINECODE_TAIJI0 , > -+ gcvMACHINECODE_TAIJI1 , > -+ gcvMACHINECODE_TAIJI2 , > -+ > -+ gcvMACHINECODE_ANTUTU0 , > -+ > -+ gcvMACHINECODE_GLB27_RELEASE_0, > -+ gcvMACHINECODE_GLB27_RELEASE_1, > -+ > -+ gcvMACHINECODE_WAVESCAPE0 , > -+ gcvMACHINECODE_WAVESCAPE1 , > -+ > -+ gcvMACHINECODE_NENAMARKV2_4_0 , > -+ gcvMACHINECODE_NENAMARKV2_4_1 , > -+ > -+ gcvMACHINECODE_GLB25_RELEASE_0, > -+ gcvMACHINECODE_GLB25_RELEASE_1, > -+ gcvMACHINECODE_GLB25_RELEASE_2, > -+} > -+gceMACHINECODE; > -+ > -+ > - /******************************************************************************\ > - ****************************** Object Declarations ***************************** > - \******************************************************************************/ > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h > -index 9e2a8db..b53b618 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h > -@@ -46,7 +46,7 @@ > - This define enables the profiler. > - */ > - #ifndef VIVANTE_PROFILER > --# define VIVANTE_PROFILER 0 > -+# define VIVANTE_PROFILER 1 > - #endif > - > - #ifndef VIVANTE_PROFILER_PERDRAW > -@@ -54,6 +54,15 @@ > - #endif > - > - /* > -+ VIVANTE_PROFILER_CONTEXT > -+ > -+ This define enables the profiler according to each hw context. > -+*/ > -+#ifndef VIVANTE_PROFILER_CONTEXT > -+# define VIVANTE_PROFILER_CONTEXT 1 > -+#endif > -+ > -+/* > - gcdUSE_VG > - > - Enable VG HAL layer (only for GC350). > -@@ -729,7 +738,24 @@ > - Use linear buffer for GPU apps so HWC can do 2D composition. > - */ > - #ifndef gcdGPU_LINEAR_BUFFER_ENABLED > --# define gcdGPU_LINEAR_BUFFER_ENABLED 0 > -+# define gcdGPU_LINEAR_BUFFER_ENABLED 1 > -+#endif > -+ > -+/* > -+ gcdENABLE_RENDER_INTO_WINDOW > -+ > -+ Enable Render-Into-Window (ie, No-Resolve) feature on android. > -+ NOTE that even if enabled, it still depends on hardware feature and > -+ android application behavior. When hardware feature or application > -+ behavior can not support render into window mode, it will fail back > -+ to normal mode. > -+ When Render-Into-Window is finally used, window back buffer of android > -+ applications will be allocated matching render target tiling format. > -+ Otherwise buffer tiling is decided by the above option > -+ 'gcdGPU_LINEAR_BUFFER_ENABLED'. > -+*/ > -+#ifndef gcdENABLE_RENDER_INTO_WINDOW > -+# define gcdENABLE_RENDER_INTO_WINDOW 1 > - #endif > - > - /* > -@@ -758,7 +784,11 @@ > - #endif > - > - #ifndef gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST > --# define gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST 0 > -+# ifdef ANDROID > -+# define gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST 1 > -+# else > -+# define gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST 0 > -+# endif > - #endif > - > - #ifndef gcdENABLE_PE_DITHER_FIX > -@@ -800,6 +830,10 @@ > - # define gcdDISALBE_EARLY_EARLY_Z 1 > - #endif > - > -+#ifndef gcdSHADER_SRC_BY_MACHINECODE > -+# define gcdSHADER_SRC_BY_MACHINECODE 1 > -+#endif > -+ > - /* > - gcdLINK_QUEUE_SIZE > - > -@@ -849,11 +883,20 @@ > - #define gcdUSE_NPOT_PATCH 1 > - #endif > - > -- > - #ifndef gcdSYNC > - # define gcdSYNC 1 > - #endif > - > -+#ifndef gcdENABLE_SPECIAL_HINT3 > -+# define gcdENABLE_SPECIAL_HINT3 1 > -+#endif > -+ > -+#if defined(ANDROID) > -+#ifndef gcdPRE_ROTATION > -+# define gcdPRE_ROTATION 1 > -+#endif > -+#endif > -+ > - /* > - gcdDVFS > - > -@@ -866,4 +909,39 @@ > - # define gcdDVFS_POLLING_TIME (gcdDVFS_ANAYLSE_WINDOW * 4) > - #endif > - > -+/* > -+ gcdANDROID_NATIVE_FENCE_SYNC > -+ > -+ Enable android native fence sync. It is introduced since jellybean-4.2. > -+ Depends on linux kernel option: CONFIG_SYNC. > -+ > -+ 0: Disabled > -+ 1: Build framework for native fence sync feature, and EGL extension > -+ 2: Enable async swap buffers for client > -+ * Native fence sync for client 'queueBuffer' in EGL, which is > -+ 'acquireFenceFd' for layer in compositor side. > -+ 3. Enable async hwcomposer composition. > -+ * 'releaseFenceFd' for layer in compositor side, which is native > -+ fence sync when client 'dequeueBuffer' > -+ * Native fence sync for compositor 'queueBuffer' in EGL, which is > -+ 'acquireFenceFd' for framebuffer target for DC > -+ */ > -+#ifndef gcdANDROID_NATIVE_FENCE_SYNC > -+# define gcdANDROID_NATIVE_FENCE_SYNC 0 > -+#endif > -+ > -+#ifndef gcdFORCE_MIPMAP > -+# define gcdFORCE_MIPMAP 0 > -+#endif > -+ > -+/* > -+ gcdFORCE_GAL_LOAD_TWICE > -+ > -+ When non-zero, each thread except the main one will load libGAL.so twice to avoid potential segmetantion fault when app using dlopen/dlclose. > -+ If threads exit arbitrarily, libGAL.so may not unload until the process quit. > -+ */ > -+#ifndef gcdFORCE_GAL_LOAD_TWICE > -+# define gcdFORCE_GAL_LOAD_TWICE 0 > -+#endif > -+ > - #endif /* __gc_hal_options_h_ */ > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h > -index 3e450ba..aed73aa 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h > -@@ -45,509 +45,115 @@ extern "C" { > - #define gcdNEW_PROFILER_FILE 1 > - #endif > - > --/* OpenGL ES11 API IDs. */ > --#define ES11_ACTIVETEXTURE 1 > --#define ES11_ALPHAFUNC (ES11_ACTIVETEXTURE + 1) > --#define ES11_ALPHAFUNCX (ES11_ALPHAFUNC + 1) > --#define ES11_BINDBUFFER (ES11_ALPHAFUNCX + 1) > --#define ES11_BINDTEXTURE (ES11_BINDBUFFER + 1) > --#define ES11_BLENDFUNC (ES11_BINDTEXTURE + 1) > --#define ES11_BUFFERDATA (ES11_BLENDFUNC + 1) > --#define ES11_BUFFERSUBDATA (ES11_BUFFERDATA + 1) > --#define ES11_CLEAR (ES11_BUFFERSUBDATA + 1) > --#define ES11_CLEARCOLOR (ES11_CLEAR + 1) > --#define ES11_CLEARCOLORX (ES11_CLEARCOLOR + 1) > --#define ES11_CLEARDEPTHF (ES11_CLEARCOLORX + 1) > --#define ES11_CLEARDEPTHX (ES11_CLEARDEPTHF + 1) > --#define ES11_CLEARSTENCIL (ES11_CLEARDEPTHX + 1) > --#define ES11_CLIENTACTIVETEXTURE (ES11_CLEARSTENCIL + 1) > --#define ES11_CLIPPLANEF (ES11_CLIENTACTIVETEXTURE + 1) > --#define ES11_CLIPPLANEX (ES11_CLIPPLANEF + 1) > --#define ES11_COLOR4F (ES11_CLIPPLANEX + 1) > --#define ES11_COLOR4UB (ES11_COLOR4F + 1) > --#define ES11_COLOR4X (ES11_COLOR4UB + 1) > --#define ES11_COLORMASK (ES11_COLOR4X + 1) > --#define ES11_COLORPOINTER (ES11_COLORMASK + 1) > --#define ES11_COMPRESSEDTEXIMAGE2D (ES11_COLORPOINTER + 1) > --#define ES11_COMPRESSEDTEXSUBIMAGE2D (ES11_COMPRESSEDTEXIMAGE2D + 1) > --#define ES11_COPYTEXIMAGE2D (ES11_COMPRESSEDTEXSUBIMAGE2D + 1) > --#define ES11_COPYTEXSUBIMAGE2D (ES11_COPYTEXIMAGE2D + 1) > --#define ES11_CULLFACE (ES11_COPYTEXSUBIMAGE2D + 1) > --#define ES11_DELETEBUFFERS (ES11_CULLFACE + 1) > --#define ES11_DELETETEXTURES (ES11_DELETEBUFFERS + 1) > --#define ES11_DEPTHFUNC (ES11_DELETETEXTURES + 1) > --#define ES11_DEPTHMASK (ES11_DEPTHFUNC + 1) > --#define ES11_DEPTHRANGEF (ES11_DEPTHMASK + 1) > --#define ES11_DEPTHRANGEX (ES11_DEPTHRANGEF + 1) > --#define ES11_DISABLE (ES11_DEPTHRANGEX + 1) > --#define ES11_DISABLECLIENTSTATE (ES11_DISABLE + 1) > --#define ES11_DRAWARRAYS (ES11_DISABLECLIENTSTATE + 1) > --#define ES11_DRAWELEMENTS (ES11_DRAWARRAYS + 1) > --#define ES11_ENABLE (ES11_DRAWELEMENTS + 1) > --#define ES11_ENABLECLIENTSTATE (ES11_ENABLE + 1) > --#define ES11_FINISH (ES11_ENABLECLIENTSTATE + 1) > --#define ES11_FLUSH (ES11_FINISH + 1) > --#define ES11_FOGF (ES11_FLUSH + 1) > --#define ES11_FOGFV (ES11_FOGF + 1) > --#define ES11_FOGX (ES11_FOGFV + 1) > --#define ES11_FOGXV (ES11_FOGX + 1) > --#define ES11_FRONTFACE (ES11_FOGXV + 1) > --#define ES11_FRUSTUMF (ES11_FRONTFACE + 1) > --#define ES11_FRUSTUMX (ES11_FRUSTUMF + 1) > --#define ES11_GENBUFFERS (ES11_FRUSTUMX + 1) > --#define ES11_GENTEXTURES (ES11_GENBUFFERS + 1) > --#define ES11_GETBOOLEANV (ES11_GENTEXTURES + 1) > --#define ES11_GETBUFFERPARAMETERIV (ES11_GETBOOLEANV + 1) > --#define ES11_GETCLIPPLANEF (ES11_GETBUFFERPARAMETERIV + 1) > --#define ES11_GETCLIPPLANEX (ES11_GETCLIPPLANEF + 1) > --#define ES11_GETERROR (ES11_GETCLIPPLANEX + 1) > --#define ES11_GETFIXEDV (ES11_GETERROR + 1) > --#define ES11_GETFLOATV (ES11_GETFIXEDV + 1) > --#define ES11_GETINTEGERV (ES11_GETFLOATV + 1) > --#define ES11_GETLIGHTFV (ES11_GETINTEGERV + 1) > --#define ES11_GETLIGHTXV (ES11_GETLIGHTFV + 1) > --#define ES11_GETMATERIALFV (ES11_GETLIGHTXV + 1) > --#define ES11_GETMATERIALXV (ES11_GETMATERIALFV + 1) > --#define ES11_GETPOINTERV (ES11_GETMATERIALXV + 1) > --#define ES11_GETSTRING (ES11_GETPOINTERV + 1) > --#define ES11_GETTEXENVFV (ES11_GETSTRING + 1) > --#define ES11_GETTEXENVIV (ES11_GETTEXENVFV + 1) > --#define ES11_GETTEXENVXV (ES11_GETTEXENVIV + 1) > --#define ES11_GETTEXPARAMETERFV (ES11_GETTEXENVXV + 1) > --#define ES11_GETTEXPARAMETERIV (ES11_GETTEXPARAMETERFV + 1) > --#define ES11_GETTEXPARAMETERXV (ES11_GETTEXPARAMETERIV + 1) > --#define ES11_HINT (ES11_GETTEXPARAMETERXV + 1) > --#define ES11_ISBUFFER (ES11_HINT + 1) > --#define ES11_ISENABLED (ES11_ISBUFFER + 1) > --#define ES11_ISTEXTURE (ES11_ISENABLED + 1) > --#define ES11_LIGHTF (ES11_ISTEXTURE + 1) > --#define ES11_LIGHTFV (ES11_LIGHTF + 1) > --#define ES11_LIGHTMODELF (ES11_LIGHTFV + 1) > --#define ES11_LIGHTMODELFV (ES11_LIGHTMODELF + 1) > --#define ES11_LIGHTMODELX (ES11_LIGHTMODELFV + 1) > --#define ES11_LIGHTMODELXV (ES11_LIGHTMODELX + 1) > --#define ES11_LIGHTX (ES11_LIGHTMODELXV + 1) > --#define ES11_LIGHTXV (ES11_LIGHTX + 1) > --#define ES11_LINEWIDTH (ES11_LIGHTXV + 1) > --#define ES11_LINEWIDTHX (ES11_LINEWIDTH + 1) > --#define ES11_LOADIDENTITY (ES11_LINEWIDTHX + 1) > --#define ES11_LOADMATRIXF (ES11_LOADIDENTITY + 1) > --#define ES11_LOADMATRIXX (ES11_LOADMATRIXF + 1) > --#define ES11_LOGICOP (ES11_LOADMATRIXX + 1) > --#define ES11_MATERIALF (ES11_LOGICOP + 1) > --#define ES11_MATERIALFV (ES11_MATERIALF + 1) > --#define ES11_MATERIALX (ES11_MATERIALFV + 1) > --#define ES11_MATERIALXV (ES11_MATERIALX + 1) > --#define ES11_MATRIXMODE (ES11_MATERIALXV + 1) > --#define ES11_MULTITEXCOORD4F (ES11_MATRIXMODE + 1) > --#define ES11_MULTITEXCOORD4X (ES11_MULTITEXCOORD4F + 1) > --#define ES11_MULTMATRIXF (ES11_MULTITEXCOORD4X + 1) > --#define ES11_MULTMATRIXX (ES11_MULTMATRIXF + 1) > --#define ES11_NORMAL3F (ES11_MULTMATRIXX + 1) > --#define ES11_NORMAL3X (ES11_NORMAL3F + 1) > --#define ES11_NORMALPOINTER (ES11_NORMAL3X + 1) > --#define ES11_ORTHOF (ES11_NORMALPOINTER + 1) > --#define ES11_ORTHOX (ES11_ORTHOF + 1) > --#define ES11_PIXELSTOREI (ES11_ORTHOX + 1) > --#define ES11_POINTPARAMETERF (ES11_PIXELSTOREI + 1) > --#define ES11_POINTPARAMETERFV (ES11_POINTPARAMETERF + 1) > --#define ES11_POINTPARAMETERX (ES11_POINTPARAMETERFV + 1) > --#define ES11_POINTPARAMETERXV (ES11_POINTPARAMETERX + 1) > --#define ES11_POINTSIZE (ES11_POINTPARAMETERXV + 1) > --#define ES11_POINTSIZEX (ES11_POINTSIZE + 1) > --#define ES11_POLYGONOFFSET (ES11_POINTSIZEX + 1) > --#define ES11_POLYGONOFFSETX (ES11_POLYGONOFFSET + 1) > --#define ES11_POPMATRIX (ES11_POLYGONOFFSETX + 1) > --#define ES11_PUSHMATRIX (ES11_POPMATRIX + 1) > --#define ES11_READPIXELS (ES11_PUSHMATRIX + 1) > --#define ES11_ROTATEF (ES11_READPIXELS + 1) > --#define ES11_ROTATEX (ES11_ROTATEF + 1) > --#define ES11_SAMPLECOVERAGE (ES11_ROTATEX + 1) > --#define ES11_SAMPLECOVERAGEX (ES11_SAMPLECOVERAGE + 1) > --#define ES11_SCALEF (ES11_SAMPLECOVERAGEX + 1) > --#define ES11_SCALEX (ES11_SCALEF + 1) > --#define ES11_SCISSOR (ES11_SCALEX + 1) > --#define ES11_SHADEMODEL (ES11_SCISSOR + 1) > --#define ES11_STENCILFUNC (ES11_SHADEMODEL + 1) > --#define ES11_STENCILMASK (ES11_STENCILFUNC + 1) > --#define ES11_STENCILOP (ES11_STENCILMASK + 1) > --#define ES11_TEXCOORDPOINTER (ES11_STENCILOP + 1) > --#define ES11_TEXENVF (ES11_TEXCOORDPOINTER + 1) > --#define ES11_TEXENVFV (ES11_TEXENVF + 1) > --#define ES11_TEXENVI (ES11_TEXENVFV + 1) > --#define ES11_TEXENVIV (ES11_TEXENVI + 1) > --#define ES11_TEXENVX (ES11_TEXENVIV + 1) > --#define ES11_TEXENVXV (ES11_TEXENVX + 1) > --#define ES11_TEXIMAGE2D (ES11_TEXENVXV + 1) > --#define ES11_TEXPARAMETERF (ES11_TEXIMAGE2D + 1) > --#define ES11_TEXPARAMETERFV (ES11_TEXPARAMETERF + 1) > --#define ES11_TEXPARAMETERI (ES11_TEXPARAMETERFV + 1) > --#define ES11_TEXPARAMETERIV (ES11_TEXPARAMETERI + 1) > --#define ES11_TEXPARAMETERX (ES11_TEXPARAMETERIV + 1) > --#define ES11_TEXPARAMETERXV (ES11_TEXPARAMETERX + 1) > --#define ES11_TEXSUBIMAGE2D (ES11_TEXPARAMETERXV + 1) > --#define ES11_TRANSLATEF (ES11_TEXSUBIMAGE2D + 1) > --#define ES11_TRANSLATEX (ES11_TRANSLATEF + 1) > --#define ES11_VERTEXPOINTER (ES11_TRANSLATEX + 1) > --#define ES11_VIEWPORT (ES11_VERTEXPOINTER + 1) > --#define ES11_BLENDEQUATIONOES (ES11_VIEWPORT + 1) > --#define ES11_BLENDFUNCSEPERATEOES (ES11_BLENDEQUATIONOES + 1) > --#define ES11_BLENDEQUATIONSEPARATEOES (ES11_BLENDFUNCSEPERATEOES + 1) > --#define ES11_GLMAPBUFFEROES (ES11_BLENDEQUATIONSEPARATEOES + 1) > --#define ES11_GLUNMAPBUFFEROES (ES11_GLMAPBUFFEROES + 1) > --#define ES11_GLGETBUFFERPOINTERVOES (ES11_GLUNMAPBUFFEROES + 1) > --#define ES11_CALLS (ES11_GLGETBUFFERPOINTERVOES + 1) > --#define ES11_DRAWCALLS (ES11_CALLS + 1) > --#define ES11_STATECHANGECALLS (ES11_DRAWCALLS + 1) > --#define ES11_POINTCOUNT (ES11_STATECHANGECALLS + 1) > --#define ES11_LINECOUNT (ES11_POINTCOUNT + 1) > --#define ES11_TRIANGLECOUNT (ES11_LINECOUNT + 1) > -- > --/* OpenGL ES2X API IDs. */ > --#define ES20_ACTIVETEXTURE 1 > --#define ES20_ATTACHSHADER (ES20_ACTIVETEXTURE + 1) > --#define ES20_BINDATTRIBLOCATION (ES20_ATTACHSHADER + 1) > --#define ES20_BINDBUFFER (ES20_BINDATTRIBLOCATION + 1) > --#define ES20_BINDFRAMEBUFFER (ES20_BINDBUFFER + 1) > --#define ES20_BINDRENDERBUFFER (ES20_BINDFRAMEBUFFER + 1) > --#define ES20_BINDTEXTURE (ES20_BINDRENDERBUFFER + 1) > --#define ES20_BLENDCOLOR (ES20_BINDTEXTURE + 1) > --#define ES20_BLENDEQUATION (ES20_BLENDCOLOR + 1) > --#define ES20_BLENDEQUATIONSEPARATE (ES20_BLENDEQUATION + 1) > --#define ES20_BLENDFUNC (ES20_BLENDEQUATIONSEPARATE + 1) > --#define ES20_BLENDFUNCSEPARATE (ES20_BLENDFUNC + 1) > --#define ES20_BUFFERDATA (ES20_BLENDFUNCSEPARATE + 1) > --#define ES20_BUFFERSUBDATA (ES20_BUFFERDATA + 1) > --#define ES20_CHECKFRAMEBUFFERSTATUS (ES20_BUFFERSUBDATA + 1) > --#define ES20_CLEAR (ES20_CHECKFRAMEBUFFERSTATUS + 1) > --#define ES20_CLEARCOLOR (ES20_CLEAR + 1) > --#define ES20_CLEARDEPTHF (ES20_CLEARCOLOR + 1) > --#define ES20_CLEARSTENCIL (ES20_CLEARDEPTHF + 1) > --#define ES20_COLORMASK (ES20_CLEARSTENCIL + 1) > --#define ES20_COMPILESHADER (ES20_COLORMASK + 1) > --#define ES20_COMPRESSEDTEXIMAGE2D (ES20_COMPILESHADER + 1) > --#define ES20_COMPRESSEDTEXSUBIMAGE2D (ES20_COMPRESSEDTEXIMAGE2D + 1) > --#define ES20_COPYTEXIMAGE2D (ES20_COMPRESSEDTEXSUBIMAGE2D + 1) > --#define ES20_COPYTEXSUBIMAGE2D (ES20_COPYTEXIMAGE2D + 1) > --#define ES20_CREATEPROGRAM (ES20_COPYTEXSUBIMAGE2D + 1) > --#define ES20_CREATESHADER (ES20_CREATEPROGRAM + 1) > --#define ES20_CULLFACE (ES20_CREATESHADER + 1) > --#define ES20_DELETEBUFFERS (ES20_CULLFACE + 1) > --#define ES20_DELETEFRAMEBUFFERS (ES20_DELETEBUFFERS + 1) > --#define ES20_DELETEPROGRAM (ES20_DELETEFRAMEBUFFERS + 1) > --#define ES20_DELETERENDERBUFFERS (ES20_DELETEPROGRAM + 1) > --#define ES20_DELETESHADER (ES20_DELETERENDERBUFFERS + 1) > --#define ES20_DELETETEXTURES (ES20_DELETESHADER + 1) > --#define ES20_DEPTHFUNC (ES20_DELETETEXTURES + 1) > --#define ES20_DEPTHMASK (ES20_DEPTHFUNC + 1) > --#define ES20_DEPTHRANGEF (ES20_DEPTHMASK + 1) > --#define ES20_DETACHSHADER (ES20_DEPTHRANGEF + 1) > --#define ES20_DISABLE (ES20_DETACHSHADER + 1) > --#define ES20_DISABLEVERTEXATTRIBARRAY (ES20_DISABLE + 1) > --#define ES20_DRAWARRAYS (ES20_DISABLEVERTEXATTRIBARRAY + 1) > --#define ES20_DRAWELEMENTS (ES20_DRAWARRAYS + 1) > --#define ES20_ENABLE (ES20_DRAWELEMENTS + 1) > --#define ES20_ENABLEVERTEXATTRIBARRAY (ES20_ENABLE + 1) > --#define ES20_FINISH (ES20_ENABLEVERTEXATTRIBARRAY + 1) > --#define ES20_FLUSH (ES20_FINISH + 1) > --#define ES20_FRAMEBUFFERRENDERBUFFER (ES20_FLUSH + 1) > --#define ES20_FRAMEBUFFERTEXTURE2D (ES20_FRAMEBUFFERRENDERBUFFER + 1) > --#define ES20_FRONTFACE (ES20_FRAMEBUFFERTEXTURE2D + 1) > --#define ES20_GENBUFFERS (ES20_FRONTFACE + 1) > --#define ES20_GENERATEMIPMAP (ES20_GENBUFFERS + 1) > --#define ES20_GENFRAMEBUFFERS (ES20_GENERATEMIPMAP + 1) > --#define ES20_GENRENDERBUFFERS (ES20_GENFRAMEBUFFERS + 1) > --#define ES20_GENTEXTURES (ES20_GENRENDERBUFFERS + 1) > --#define ES20_GETACTIVEATTRIB (ES20_GENTEXTURES + 1) > --#define ES20_GETACTIVEUNIFORM (ES20_GETACTIVEATTRIB + 1) > --#define ES20_GETATTACHEDSHADERS (ES20_GETACTIVEUNIFORM + 1) > --#define ES20_GETATTRIBLOCATION (ES20_GETATTACHEDSHADERS + 1) > --#define ES20_GETBOOLEANV (ES20_GETATTRIBLOCATION + 1) > --#define ES20_GETBUFFERPARAMETERIV (ES20_GETBOOLEANV + 1) > --#define ES20_GETERROR (ES20_GETBUFFERPARAMETERIV + 1) > --#define ES20_GETFLOATV (ES20_GETERROR + 1) > --#define ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV (ES20_GETFLOATV + 1) > --#define ES20_GETINTEGERV (ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV + 1) > --#define ES20_GETPROGRAMIV (ES20_GETINTEGERV + 1) > --#define ES20_GETPROGRAMINFOLOG (ES20_GETPROGRAMIV + 1) > --#define ES20_GETRENDERBUFFERPARAMETERIV (ES20_GETPROGRAMINFOLOG + 1) > --#define ES20_GETSHADERIV (ES20_GETRENDERBUFFERPARAMETERIV + 1) > --#define ES20_GETSHADERINFOLOG (ES20_GETSHADERIV + 1) > --#define ES20_GETSHADERPRECISIONFORMAT (ES20_GETSHADERINFOLOG + 1) > --#define ES20_GETSHADERSOURCE (ES20_GETSHADERPRECISIONFORMAT + 1) > --#define ES20_GETSTRING (ES20_GETSHADERSOURCE + 1) > --#define ES20_GETTEXPARAMETERFV (ES20_GETSTRING + 1) > --#define ES20_GETTEXPARAMETERIV (ES20_GETTEXPARAMETERFV + 1) > --#define ES20_GETUNIFORMFV (ES20_GETTEXPARAMETERIV + 1) > --#define ES20_GETUNIFORMIV (ES20_GETUNIFORMFV + 1) > --#define ES20_GETUNIFORMLOCATION (ES20_GETUNIFORMIV + 1) > --#define ES20_GETVERTEXATTRIBFV (ES20_GETUNIFORMLOCATION + 1) > --#define ES20_GETVERTEXATTRIBIV (ES20_GETVERTEXATTRIBFV + 1) > --#define ES20_GETVERTEXATTRIBPOINTERV (ES20_GETVERTEXATTRIBIV + 1) > --#define ES20_HINT (ES20_GETVERTEXATTRIBPOINTERV + 1) > --#define ES20_ISBUFFER (ES20_HINT + 1) > --#define ES20_ISENABLED (ES20_ISBUFFER + 1) > --#define ES20_ISFRAMEBUFFER (ES20_ISENABLED + 1) > --#define ES20_ISPROGRAM (ES20_ISFRAMEBUFFER + 1) > --#define ES20_ISRENDERBUFFER (ES20_ISPROGRAM + 1) > --#define ES20_ISSHADER (ES20_ISRENDERBUFFER + 1) > --#define ES20_ISTEXTURE (ES20_ISSHADER + 1) > --#define ES20_LINEWIDTH (ES20_ISTEXTURE + 1) > --#define ES20_LINKPROGRAM (ES20_LINEWIDTH + 1) > --#define ES20_PIXELSTOREI (ES20_LINKPROGRAM + 1) > --#define ES20_POLYGONOFFSET (ES20_PIXELSTOREI + 1) > --#define ES20_READPIXELS (ES20_POLYGONOFFSET + 1) > --#define ES20_RELEASESHADERCOMPILER (ES20_READPIXELS + 1) > --#define ES20_RENDERBUFFERSTORAGE (ES20_RELEASESHADERCOMPILER + 1) > --#define ES20_SAMPLECOVERAGE (ES20_RENDERBUFFERSTORAGE + 1) > --#define ES20_SCISSOR (ES20_SAMPLECOVERAGE + 1) > --#define ES20_SHADERBINARY (ES20_SCISSOR + 1) > --#define ES20_SHADERSOURCE (ES20_SHADERBINARY + 1) > --#define ES20_STENCILFUNC (ES20_SHADERSOURCE + 1) > --#define ES20_STENCILFUNCSEPARATE (ES20_STENCILFUNC + 1) > --#define ES20_STENCILMASK (ES20_STENCILFUNCSEPARATE + 1) > --#define ES20_STENCILMASKSEPARATE (ES20_STENCILMASK + 1) > --#define ES20_STENCILOP (ES20_STENCILMASKSEPARATE + 1) > --#define ES20_STENCILOPSEPARATE (ES20_STENCILOP + 1) > --#define ES20_TEXIMAGE2D (ES20_STENCILOPSEPARATE + 1) > --#define ES20_TEXPARAMETERF (ES20_TEXIMAGE2D + 1) > --#define ES20_TEXPARAMETERFV (ES20_TEXPARAMETERF + 1) > --#define ES20_TEXPARAMETERI (ES20_TEXPARAMETERFV + 1) > --#define ES20_TEXPARAMETERIV (ES20_TEXPARAMETERI + 1) > --#define ES20_TEXSUBIMAGE2D (ES20_TEXPARAMETERIV + 1) > --#define ES20_UNIFORM1F (ES20_TEXSUBIMAGE2D + 1) > --#define ES20_UNIFORM1FV (ES20_UNIFORM1F + 1) > --#define ES20_UNIFORM1I (ES20_UNIFORM1FV + 1) > --#define ES20_UNIFORM1IV (ES20_UNIFORM1I + 1) > --#define ES20_UNIFORM2F (ES20_UNIFORM1IV + 1) > --#define ES20_UNIFORM2FV (ES20_UNIFORM2F + 1) > --#define ES20_UNIFORM2I (ES20_UNIFORM2FV + 1) > --#define ES20_UNIFORM2IV (ES20_UNIFORM2I + 1) > --#define ES20_UNIFORM3F (ES20_UNIFORM2IV + 1) > --#define ES20_UNIFORM3FV (ES20_UNIFORM3F + 1) > --#define ES20_UNIFORM3I (ES20_UNIFORM3FV + 1) > --#define ES20_UNIFORM3IV (ES20_UNIFORM3I + 1) > --#define ES20_UNIFORM4F (ES20_UNIFORM3IV + 1) > --#define ES20_UNIFORM4FV (ES20_UNIFORM4F + 1) > --#define ES20_UNIFORM4I (ES20_UNIFORM4FV + 1) > --#define ES20_UNIFORM4IV (ES20_UNIFORM4I + 1) > --#define ES20_UNIFORMMATRIX2FV (ES20_UNIFORM4IV + 1) > --#define ES20_UNIFORMMATRIX3FV (ES20_UNIFORMMATRIX2FV + 1) > --#define ES20_UNIFORMMATRIX4FV (ES20_UNIFORMMATRIX3FV + 1) > --#define ES20_USEPROGRAM (ES20_UNIFORMMATRIX4FV + 1) > --#define ES20_VALIDATEPROGRAM (ES20_USEPROGRAM + 1) > --#define ES20_VERTEXATTRIB1F (ES20_VALIDATEPROGRAM + 1) > --#define ES20_VERTEXATTRIB1FV (ES20_VERTEXATTRIB1F + 1) > --#define ES20_VERTEXATTRIB2F (ES20_VERTEXATTRIB1FV + 1) > --#define ES20_VERTEXATTRIB2FV (ES20_VERTEXATTRIB2F + 1) > --#define ES20_VERTEXATTRIB3F (ES20_VERTEXATTRIB2FV + 1) > --#define ES20_VERTEXATTRIB3FV (ES20_VERTEXATTRIB3F + 1) > --#define ES20_VERTEXATTRIB4F (ES20_VERTEXATTRIB3FV + 1) > --#define ES20_VERTEXATTRIB4FV (ES20_VERTEXATTRIB4F + 1) > --#define ES20_VERTEXATTRIBPOINTER (ES20_VERTEXATTRIB4FV + 1) > --#define ES20_VIEWPORT (ES20_VERTEXATTRIBPOINTER + 1) > --#define ES20_GETPROGRAMBINARYOES (ES20_VIEWPORT + 1) > --#define ES20_PROGRAMBINARYOES (ES20_GETPROGRAMBINARYOES + 1) > --#define ES20_TEXIMAGE3DOES (ES20_PROGRAMBINARYOES + 1) > --#define ES20_TEXSUBIMAGE3DOES (ES20_TEXIMAGE3DOES + 1) > --#define ES20_COPYSUBIMAGE3DOES (ES20_TEXSUBIMAGE3DOES + 1) > --#define ES20_COMPRESSEDTEXIMAGE3DOES (ES20_COPYSUBIMAGE3DOES + 1) > --#define ES20_COMPRESSEDTEXSUBIMAGE3DOES (ES20_COMPRESSEDTEXIMAGE3DOES + 1) > --#define ES20_FRAMEBUFFERTEXTURE3DOES (ES20_COMPRESSEDTEXSUBIMAGE3DOES + 1) > --#define ES20_BINDVERTEXARRAYOES (ES20_FRAMEBUFFERTEXTURE3DOES + 1) > --#define ES20_GENVERTEXARRAYOES (ES20_BINDVERTEXARRAYOES + 1) > --#define ES20_ISVERTEXARRAYOES (ES20_GENVERTEXARRAYOES + 1) > --#define ES20_DELETEVERTEXARRAYOES (ES20_ISVERTEXARRAYOES + 1) > --#define ES20_GLMAPBUFFEROES (ES20_DELETEVERTEXARRAYOES + 1) > --#define ES20_GLUNMAPBUFFEROES (ES20_GLMAPBUFFEROES + 1) > --#define ES20_GLGETBUFFERPOINTERVOES (ES20_GLUNMAPBUFFEROES + 1) > --#define ES20_DISCARDFRAMEBUFFEREXT (ES20_GLGETBUFFERPOINTERVOES + 1) > --#define ES20_CALLS (ES20_DISCARDFRAMEBUFFEREXT + 1) > --#define ES20_DRAWCALLS (ES20_CALLS + 1) > --#define ES20_STATECHANGECALLS (ES20_DRAWCALLS + 1) > --#define ES20_POINTCOUNT (ES20_STATECHANGECALLS + 1) > --#define ES20_LINECOUNT (ES20_POINTCOUNT + 1) > --#define ES20_TRIANGLECOUNT (ES20_LINECOUNT + 1) > -- > --/* OpenVG API IDs. */ > --#define VG11_APPENDPATH 1 > --#define VG11_APPENDPATHDATA (VG11_APPENDPATH + 1) > --#define VG11_CHILDIMAGE (VG11_APPENDPATHDATA + 1) > --#define VG11_CLEAR (VG11_CHILDIMAGE + 1) > --#define VG11_CLEARGLYPH (VG11_CLEAR + 1) > --#define VG11_CLEARIMAGE (VG11_CLEARGLYPH + 1) > --#define VG11_CLEARPATH (VG11_CLEARIMAGE + 1) > --#define VG11_COLORMATRIX (VG11_CLEARPATH + 1) > --#define VG11_CONVOLVE (VG11_COLORMATRIX + 1) > --#define VG11_COPYIMAGE (VG11_CONVOLVE + 1) > --#define VG11_COPYMASK (VG11_COPYIMAGE + 1) > --#define VG11_COPYPIXELS (VG11_COPYMASK + 1) > --#define VG11_CREATEFONT (VG11_COPYPIXELS + 1) > --#define VG11_CREATEIMAGE (VG11_CREATEFONT + 1) > --#define VG11_CREATEMASKLAYER (VG11_CREATEIMAGE + 1) > --#define VG11_CREATEPAINT (VG11_CREATEMASKLAYER + 1) > --#define VG11_CREATEPATH (VG11_CREATEPAINT + 1) > --#define VG11_DESTROYFONT (VG11_CREATEPATH + 1) > --#define VG11_DESTROYIMAGE (VG11_DESTROYFONT + 1) > --#define VG11_DESTROYMASKLAYER (VG11_DESTROYIMAGE + 1) > --#define VG11_DESTROYPAINT (VG11_DESTROYMASKLAYER + 1) > --#define VG11_DESTROYPATH (VG11_DESTROYPAINT + 1) > --#define VG11_DRAWGLYPH (VG11_DESTROYPATH + 1) > --#define VG11_DRAWGLYPHS (VG11_DRAWGLYPH + 1) > --#define VG11_DRAWIMAGE (VG11_DRAWGLYPHS + 1) > --#define VG11_DRAWPATH (VG11_DRAWIMAGE + 1) > --#define VG11_FILLMASKLAYER (VG11_DRAWPATH + 1) > --#define VG11_FINISH (VG11_FILLMASKLAYER + 1) > --#define VG11_FLUSH (VG11_FINISH + 1) > --#define VG11_GAUSSIANBLUR (VG11_FLUSH + 1) > --#define VG11_GETCOLOR (VG11_GAUSSIANBLUR + 1) > --#define VG11_GETERROR (VG11_GETCOLOR + 1) > --#define VG11_GETF (VG11_GETERROR + 1) > --#define VG11_GETFV (VG11_GETF + 1) > --#define VG11_GETI (VG11_GETFV + 1) > --#define VG11_GETIMAGESUBDATA (VG11_GETI + 1) > --#define VG11_GETIV (VG11_GETIMAGESUBDATA + 1) > --#define VG11_GETMATRIX (VG11_GETIV + 1) > --#define VG11_GETPAINT (VG11_GETMATRIX + 1) > --#define VG11_GETPARAMETERF (VG11_GETPAINT + 1) > --#define VG11_GETPARAMETERFV (VG11_GETPARAMETERF + 1) > --#define VG11_GETPARAMETERI (VG11_GETPARAMETERFV + 1) > --#define VG11_GETPARAMETERIV (VG11_GETPARAMETERI + 1) > --#define VG11_GETPARAMETERVECTORSIZE (VG11_GETPARAMETERIV + 1) > --#define VG11_GETPARENT (VG11_GETPARAMETERVECTORSIZE + 1) > --#define VG11_GETPATHCAPABILITIES (VG11_GETPARENT + 1) > --#define VG11_GETPIXELS (VG11_GETPATHCAPABILITIES + 1) > --#define VG11_GETSTRING (VG11_GETPIXELS + 1) > --#define VG11_GETVECTORSIZE (VG11_GETSTRING + 1) > --#define VG11_HARDWAREQUERY (VG11_GETVECTORSIZE + 1) > --#define VG11_IMAGESUBDATA (VG11_HARDWAREQUERY + 1) > --#define VG11_INTERPOLATEPATH (VG11_IMAGESUBDATA + 1) > --#define VG11_LOADIDENTITY (VG11_INTERPOLATEPATH + 1) > --#define VG11_LOADMATRIX (VG11_LOADIDENTITY + 1) > --#define VG11_LOOKUP (VG11_LOADMATRIX + 1) > --#define VG11_LOOKUPSINGLE (VG11_LOOKUP + 1) > --#define VG11_MASK (VG11_LOOKUPSINGLE + 1) > --#define VG11_MODIFYPATHCOORDS (VG11_MASK + 1) > --#define VG11_MULTMATRIX (VG11_MODIFYPATHCOORDS + 1) > --#define VG11_PAINTPATTERN (VG11_MULTMATRIX + 1) > --#define VG11_PATHBOUNDS (VG11_PAINTPATTERN + 1) > --#define VG11_PATHLENGTH (VG11_PATHBOUNDS + 1) > --#define VG11_PATHTRANSFORMEDBOUNDS (VG11_PATHLENGTH + 1) > --#define VG11_POINTALONGPATH (VG11_PATHTRANSFORMEDBOUNDS + 1) > --#define VG11_READPIXELS (VG11_POINTALONGPATH + 1) > --#define VG11_REMOVEPATHCAPABILITIES (VG11_READPIXELS + 1) > --#define VG11_RENDERTOMASK (VG11_REMOVEPATHCAPABILITIES + 1) > --#define VG11_ROTATE (VG11_RENDERTOMASK + 1) > --#define VG11_SCALE (VG11_ROTATE + 1) > --#define VG11_SEPARABLECONVOLVE (VG11_SCALE + 1) > --#define VG11_SETCOLOR (VG11_SEPARABLECONVOLVE + 1) > --#define VG11_SETF (VG11_SETCOLOR + 1) > --#define VG11_SETFV (VG11_SETF + 1) > --#define VG11_SETGLYPHTOIMAGE (VG11_SETFV + 1) > --#define VG11_SETGLYPHTOPATH (VG11_SETGLYPHTOIMAGE + 1) > --#define VG11_SETI (VG11_SETGLYPHTOPATH + 1) > --#define VG11_SETIV (VG11_SETI + 1) > --#define VG11_SETPAINT (VG11_SETIV + 1) > --#define VG11_SETPARAMETERF (VG11_SETPAINT + 1) > --#define VG11_SETPARAMETERFV (VG11_SETPARAMETERF + 1) > --#define VG11_SETPARAMETERI (VG11_SETPARAMETERFV + 1) > --#define VG11_SETPARAMETERIV (VG11_SETPARAMETERI + 1) > --#define VG11_SETPIXELS (VG11_SETPARAMETERIV + 1) > --#define VG11_SHEAR (VG11_SETPIXELS + 1) > --#define VG11_TRANSFORMPATH (VG11_SHEAR + 1) > --#define VG11_TRANSLATE (VG11_TRANSFORMPATH + 1) > --#define VG11_WRITEPIXELS (VG11_TRANSLATE + 1) > --#define VG11_CALLS (VG11_WRITEPIXELS + 1) > --#define VG11_DRAWCALLS (VG11_CALLS + 1) > --#define VG11_STATECHANGECALLS (VG11_DRAWCALLS + 1) > --#define VG11_FILLCOUNT (VG11_STATECHANGECALLS + 1) > --#define VG11_STROKECOUNT (VG11_FILLCOUNT + 1) > -+#define ES11_CALLS 151 > -+#define ES11_DRAWCALLS (ES11_CALLS + 1) > -+#define ES11_STATECHANGECALLS (ES11_DRAWCALLS + 1) > -+#define ES11_POINTCOUNT (ES11_STATECHANGECALLS + 1) > -+#define ES11_LINECOUNT (ES11_POINTCOUNT + 1) > -+#define ES11_TRIANGLECOUNT (ES11_LINECOUNT + 1) > -+ > -+#define ES20_CALLS 159 > -+#define ES20_DRAWCALLS (ES20_CALLS + 1) > -+#define ES20_STATECHANGECALLS (ES20_DRAWCALLS + 1) > -+#define ES20_POINTCOUNT (ES20_STATECHANGECALLS + 1) > -+#define ES20_LINECOUNT (ES20_POINTCOUNT + 1) > -+#define ES20_TRIANGLECOUNT (ES20_LINECOUNT + 1) > -+ > -+#define VG11_CALLS 88 > -+#define VG11_DRAWCALLS (VG11_CALLS + 1) > -+#define VG11_STATECHANGECALLS (VG11_DRAWCALLS + 1) > -+#define VG11_FILLCOUNT (VG11_STATECHANGECALLS + 1) > -+#define VG11_STROKECOUNT (VG11_FILLCOUNT + 1) > - /* End of Driver API ID Definitions. */ > - > - /* HAL & MISC IDs. */ > --#define HAL_VERTBUFNEWBYTEALLOC 1 > --#define HAL_VERTBUFTOTALBYTEALLOC (HAL_VERTBUFNEWBYTEALLOC + 1) > --#define HAL_VERTBUFNEWOBJALLOC (HAL_VERTBUFTOTALBYTEALLOC + 1) > --#define HAL_VERTBUFTOTALOBJALLOC (HAL_VERTBUFNEWOBJALLOC + 1) > --#define HAL_INDBUFNEWBYTEALLOC (HAL_VERTBUFTOTALOBJALLOC + 1) > --#define HAL_INDBUFTOTALBYTEALLOC (HAL_INDBUFNEWBYTEALLOC + 1) > --#define HAL_INDBUFNEWOBJALLOC (HAL_INDBUFTOTALBYTEALLOC + 1) > --#define HAL_INDBUFTOTALOBJALLOC (HAL_INDBUFNEWOBJALLOC + 1) > --#define HAL_TEXBUFNEWBYTEALLOC (HAL_INDBUFTOTALOBJALLOC + 1) > --#define HAL_TEXBUFTOTALBYTEALLOC (HAL_TEXBUFNEWBYTEALLOC + 1) > --#define HAL_TEXBUFNEWOBJALLOC (HAL_TEXBUFTOTALBYTEALLOC + 1) > --#define HAL_TEXBUFTOTALOBJALLOC (HAL_TEXBUFNEWOBJALLOC + 1) > -- > --#define GPU_CYCLES 1 > --#define GPU_READ64BYTE (GPU_CYCLES + 1) > --#define GPU_WRITE64BYTE (GPU_READ64BYTE + 1) > --#define GPU_TOTALCYCLES (GPU_WRITE64BYTE + 1) > --#define GPU_IDLECYCLES (GPU_TOTALCYCLES + 1) > -- > --#define VS_INSTCOUNT 1 > --#define VS_BRANCHINSTCOUNT (VS_INSTCOUNT + 1) > --#define VS_TEXLDINSTCOUNT (VS_BRANCHINSTCOUNT + 1) > --#define VS_RENDEREDVERTCOUNT (VS_TEXLDINSTCOUNT + 1) > -- > --#define PS_INSTCOUNT 1 > --#define PS_BRANCHINSTCOUNT (PS_INSTCOUNT + 1) > --#define PS_TEXLDINSTCOUNT (PS_BRANCHINSTCOUNT + 1) > --#define PS_RENDEREDPIXCOUNT (PS_TEXLDINSTCOUNT + 1) > -- > --#define PA_INVERTCOUNT 1 > --#define PA_INPRIMCOUNT (PA_INVERTCOUNT + 1) > --#define PA_OUTPRIMCOUNT (PA_INPRIMCOUNT + 1) > --#define PA_DEPTHCLIPCOUNT (PA_OUTPRIMCOUNT + 1) > --#define PA_TRIVIALREJCOUNT (PA_DEPTHCLIPCOUNT + 1) > --#define PA_CULLCOUNT (PA_TRIVIALREJCOUNT + 1) > -- > --#define SE_TRIANGLECOUNT 1 > --#define SE_LINECOUNT (SE_TRIANGLECOUNT + 1) > -- > --#define RA_VALIDPIXCOUNT 1 > --#define RA_TOTALQUADCOUNT (RA_VALIDPIXCOUNT + 1) > --#define RA_VALIDQUADCOUNTEZ (RA_TOTALQUADCOUNT + 1) > --#define RA_TOTALPRIMCOUNT (RA_VALIDQUADCOUNTEZ + 1) > --#define RA_PIPECACHEMISSCOUNT (RA_TOTALPRIMCOUNT + 1) > --#define RA_PREFCACHEMISSCOUNT (RA_PIPECACHEMISSCOUNT + 1) > --#define RA_EEZCULLCOUNT (RA_PREFCACHEMISSCOUNT + 1) > -- > --#define TX_TOTBILINEARREQ 1 > --#define TX_TOTTRILINEARREQ (TX_TOTBILINEARREQ + 1) > --#define TX_TOTDISCARDTEXREQ (TX_TOTTRILINEARREQ + 1) > --#define TX_TOTTEXREQ (TX_TOTDISCARDTEXREQ + 1) > --#define TX_MEMREADCOUNT (TX_TOTTEXREQ + 1) > --#define TX_MEMREADIN8BCOUNT (TX_MEMREADCOUNT + 1) > --#define TX_CACHEMISSCOUNT (TX_MEMREADIN8BCOUNT + 1) > --#define TX_CACHEHITTEXELCOUNT (TX_CACHEMISSCOUNT + 1) > --#define TX_CACHEMISSTEXELCOUNT (TX_CACHEHITTEXELCOUNT + 1) > -- > --#define PE_KILLEDBYCOLOR 1 > --#define PE_KILLEDBYDEPTH (PE_KILLEDBYCOLOR + 1) > --#define PE_DRAWNBYCOLOR (PE_KILLEDBYDEPTH + 1) > --#define PE_DRAWNBYDEPTH (PE_DRAWNBYCOLOR + 1) > -- > --#define MC_READREQ8BPIPE 1 > --#define MC_READREQ8BIP (MC_READREQ8BPIPE + 1) > --#define MC_WRITEREQ8BPIPE (MC_READREQ8BIP + 1) > -- > --#define AXI_READREQSTALLED 1 > --#define AXI_WRITEREQSTALLED (AXI_READREQSTALLED + 1) > --#define AXI_WRITEDATASTALLED (AXI_WRITEREQSTALLED + 1) > -- > --#define PVS_INSTRCOUNT 1 > --#define PVS_ALUINSTRCOUNT (PVS_INSTRCOUNT + 1) > --#define PVS_TEXINSTRCOUNT (PVS_ALUINSTRCOUNT + 1) > --#define PVS_ATTRIBCOUNT (PVS_TEXINSTRCOUNT + 1) > --#define PVS_UNIFORMCOUNT (PVS_ATTRIBCOUNT + 1) > --#define PVS_FUNCTIONCOUNT (PVS_UNIFORMCOUNT + 1) > -- > --#define PPS_INSTRCOUNT 1 > --#define PPS_ALUINSTRCOUNT (PPS_INSTRCOUNT + 1) > --#define PPS_TEXINSTRCOUNT (PPS_ALUINSTRCOUNT + 1) > --#define PPS_ATTRIBCOUNT (PPS_TEXINSTRCOUNT + 1) > --#define PPS_UNIFORMCOUNT (PPS_ATTRIBCOUNT + 1) > --#define PPS_FUNCTIONCOUNT (PPS_UNIFORMCOUNT + 1) > -+#define HAL_VERTBUFNEWBYTEALLOC 1 > -+#define HAL_VERTBUFTOTALBYTEALLOC (HAL_VERTBUFNEWBYTEALLOC + 1) > -+#define HAL_VERTBUFNEWOBJALLOC (HAL_VERTBUFTOTALBYTEALLOC + 1) > -+#define HAL_VERTBUFTOTALOBJALLOC (HAL_VERTBUFNEWOBJALLOC + 1) > -+#define HAL_INDBUFNEWBYTEALLOC (HAL_VERTBUFTOTALOBJALLOC + 1) > -+#define HAL_INDBUFTOTALBYTEALLOC (HAL_INDBUFNEWBYTEALLOC + 1) > -+#define HAL_INDBUFNEWOBJALLOC (HAL_INDBUFTOTALBYTEALLOC + 1) > -+#define HAL_INDBUFTOTALOBJALLOC (HAL_INDBUFNEWOBJALLOC + 1) > -+#define HAL_TEXBUFNEWBYTEALLOC (HAL_INDBUFTOTALOBJALLOC + 1) > -+#define HAL_TEXBUFTOTALBYTEALLOC (HAL_TEXBUFNEWBYTEALLOC + 1) > -+#define HAL_TEXBUFNEWOBJALLOC (HAL_TEXBUFTOTALBYTEALLOC + 1) > -+#define HAL_TEXBUFTOTALOBJALLOC (HAL_TEXBUFNEWOBJALLOC + 1) > -+ > -+#define GPU_CYCLES 1 > -+#define GPU_READ64BYTE (GPU_CYCLES + 1) > -+#define GPU_WRITE64BYTE (GPU_READ64BYTE + 1) > -+#define GPU_TOTALCYCLES (GPU_WRITE64BYTE + 1) > -+#define GPU_IDLECYCLES (GPU_TOTALCYCLES + 1) > -+ > -+#define VS_INSTCOUNT 1 > -+#define VS_BRANCHINSTCOUNT (VS_INSTCOUNT + 1) > -+#define VS_TEXLDINSTCOUNT (VS_BRANCHINSTCOUNT + 1) > -+#define VS_RENDEREDVERTCOUNT (VS_TEXLDINSTCOUNT + 1) > -+#define VS_SOURCE (VS_RENDEREDVERTCOUNT + 1) > -+ > -+#define PS_INSTCOUNT 1 > -+#define PS_BRANCHINSTCOUNT (PS_INSTCOUNT + 1) > -+#define PS_TEXLDINSTCOUNT (PS_BRANCHINSTCOUNT + 1) > -+#define PS_RENDEREDPIXCOUNT (PS_TEXLDINSTCOUNT + 1) > -+#define PS_SOURCE (PS_RENDEREDPIXCOUNT + 1) > -+ > -+#define PA_INVERTCOUNT 1 > -+#define PA_INPRIMCOUNT (PA_INVERTCOUNT + 1) > -+#define PA_OUTPRIMCOUNT (PA_INPRIMCOUNT + 1) > -+#define PA_DEPTHCLIPCOUNT (PA_OUTPRIMCOUNT + 1) > -+#define PA_TRIVIALREJCOUNT (PA_DEPTHCLIPCOUNT + 1) > -+#define PA_CULLCOUNT (PA_TRIVIALREJCOUNT + 1) > -+ > -+#define SE_TRIANGLECOUNT 1 > -+#define SE_LINECOUNT (SE_TRIANGLECOUNT + 1) > -+ > -+#define RA_VALIDPIXCOUNT 1 > -+#define RA_TOTALQUADCOUNT (RA_VALIDPIXCOUNT + 1) > -+#define RA_VALIDQUADCOUNTEZ (RA_TOTALQUADCOUNT + 1) > -+#define RA_TOTALPRIMCOUNT (RA_VALIDQUADCOUNTEZ + 1) > -+#define RA_PIPECACHEMISSCOUNT (RA_TOTALPRIMCOUNT + 1) > -+#define RA_PREFCACHEMISSCOUNT (RA_PIPECACHEMISSCOUNT + 1) > -+#define RA_EEZCULLCOUNT (RA_PREFCACHEMISSCOUNT + 1) > -+ > -+#define TX_TOTBILINEARREQ 1 > -+#define TX_TOTTRILINEARREQ (TX_TOTBILINEARREQ + 1) > -+#define TX_TOTDISCARDTEXREQ (TX_TOTTRILINEARREQ + 1) > -+#define TX_TOTTEXREQ (TX_TOTDISCARDTEXREQ + 1) > -+#define TX_MEMREADCOUNT (TX_TOTTEXREQ + 1) > -+#define TX_MEMREADIN8BCOUNT (TX_MEMREADCOUNT + 1) > -+#define TX_CACHEMISSCOUNT (TX_MEMREADIN8BCOUNT + 1) > -+#define TX_CACHEHITTEXELCOUNT (TX_CACHEMISSCOUNT + 1) > -+#define TX_CACHEMISSTEXELCOUNT (TX_CACHEHITTEXELCOUNT + 1) > -+ > -+#define PE_KILLEDBYCOLOR 1 > -+#define PE_KILLEDBYDEPTH (PE_KILLEDBYCOLOR + 1) > -+#define PE_DRAWNBYCOLOR (PE_KILLEDBYDEPTH + 1) > -+#define PE_DRAWNBYDEPTH (PE_DRAWNBYCOLOR + 1) > -+ > -+#define MC_READREQ8BPIPE 1 > -+#define MC_READREQ8BIP (MC_READREQ8BPIPE + 1) > -+#define MC_WRITEREQ8BPIPE (MC_READREQ8BIP + 1) > -+ > -+#define AXI_READREQSTALLED 1 > -+#define AXI_WRITEREQSTALLED (AXI_READREQSTALLED + 1) > -+#define AXI_WRITEDATASTALLED (AXI_WRITEREQSTALLED + 1) > -+ > -+#define PVS_INSTRCOUNT 1 > -+#define PVS_ALUINSTRCOUNT (PVS_INSTRCOUNT + 1) > -+#define PVS_TEXINSTRCOUNT (PVS_ALUINSTRCOUNT + 1) > -+#define PVS_ATTRIBCOUNT (PVS_TEXINSTRCOUNT + 1) > -+#define PVS_UNIFORMCOUNT (PVS_ATTRIBCOUNT + 1) > -+#define PVS_FUNCTIONCOUNT (PVS_UNIFORMCOUNT + 1) > -+#define PVS_SOURCE (PVS_FUNCTIONCOUNT + 1) > -+ > -+#define PPS_INSTRCOUNT 1 > -+#define PPS_ALUINSTRCOUNT (PPS_INSTRCOUNT + 1) > -+#define PPS_TEXINSTRCOUNT (PPS_ALUINSTRCOUNT + 1) > -+#define PPS_ATTRIBCOUNT (PPS_TEXINSTRCOUNT + 1) > -+#define PPS_UNIFORMCOUNT (PPS_ATTRIBCOUNT + 1) > -+#define PPS_FUNCTIONCOUNT (PPS_UNIFORMCOUNT + 1) > -+#define PPS_SOURCE (PPS_FUNCTIONCOUNT + 1) > - /* End of MISC Counter IDs. */ > - > - #ifdef gcdNEW_PROFILER_FILE > -@@ -578,8 +184,8 @@ extern "C" { > - #define VPG_ES11_TIME 0x170000 > - #define VPG_ES20_TIME 0x180000 > - #define VPG_FRAME 0x190000 > --#define VPG_ES11_DRAW 0x200000 > --#define VPG_ES20_DRAW 0x210000 > -+#define VPG_ES11_DRAW 0x200000 > -+#define VPG_ES20_DRAW 0x210000 > - #define VPG_END 0xff0000 > - > - /* Info. */ > -@@ -592,7 +198,7 @@ extern "C" { > - #define VPC_INFOSCREENSIZE (VPC_INFODRIVERMODE + 1) > - > - /* Counter Constants. */ > --#define VPC_ELAPSETIME (VPG_TIME + 1) > -+#define VPC_ELAPSETIME (VPG_TIME + 1) > - #define VPC_CPUTIME (VPC_ELAPSETIME + 1) > - > - #define VPC_MEMMAXRES (VPG_MEM + 1) > -@@ -600,404 +206,28 @@ extern "C" { > - #define VPC_MEMUNSHAREDDATA (VPC_MEMSHARED + 1) > - #define VPC_MEMUNSHAREDSTACK (VPC_MEMUNSHAREDDATA + 1) > - > --/* OpenGL ES11 Counters. */ > --#define VPC_ES11ACTIVETEXTURE (VPG_ES11 + ES11_ACTIVETEXTURE) > --#define VPC_ES11ALPHAFUNC (VPG_ES11 + ES11_ALPHAFUNC) > --#define VPC_ES11ALPHAFUNCX (VPG_ES11 + ES11_ALPHAFUNCX) > --#define VPC_ES11BINDBUFFER (VPG_ES11 + ES11_BINDBUFFER) > --#define VPC_ES11BINDTEXTURE (VPG_ES11 + ES11_BINDTEXTURE) > --#define VPC_ES11BLENDFUNC (VPG_ES11 + ES11_BLENDFUNC) > --#define VPC_ES11BUFFERDATA (VPG_ES11 + ES11_BUFFERDATA) > --#define VPC_ES11BUFFERSUBDATA (VPG_ES11 + ES11_BUFFERSUBDATA) > --#define VPC_ES11CLEAR (VPG_ES11 + ES11_CLEAR) > --#define VPC_ES11CLEARCOLOR (VPG_ES11 + ES11_CLEARCOLOR) > --#define VPC_ES11CLEARCOLORX (VPG_ES11 + ES11_CLEARCOLORX) > --#define VPC_ES11CLEARDEPTHF (VPG_ES11 + ES11_CLEARDEPTHF) > --#define VPC_ES11CLEARDEPTHX (VPG_ES11 + ES11_CLEARDEPTHX) > --#define VPC_ES11CLEARSTENCIL (VPG_ES11 + ES11_CLEARSTENCIL) > --#define VPC_ES11CLIENTACTIVETEXTURE (VPG_ES11 + ES11_CLIENTACTIVETEXTURE) > --#define VPC_ES11CLIPPLANEF (VPG_ES11 + ES11_CLIPPLANEF) > --#define VPC_ES11CLIPPLANEX (VPG_ES11 + ES11_CLIPPLANEX) > --#define VPC_ES11COLOR4F (VPG_ES11 + ES11_COLOR4F) > --#define VPC_ES11COLOR4UB (VPG_ES11 + ES11_COLOR4UB) > --#define VPC_ES11COLOR4X (VPG_ES11 + ES11_COLOR4X) > --#define VPC_ES11COLORMASK (VPG_ES11 + ES11_COLORMASK) > --#define VPC_ES11COLORPOINTER (VPG_ES11 + ES11_COLORPOINTER) > --#define VPC_ES11COMPRESSEDTEXIMAGE2D (VPG_ES11 + ES11_COMPRESSEDTEXIMAGE2D) > --#define VPC_ES11COMPRESSEDTEXSUBIMAGE2D (VPG_ES11 + ES11_COMPRESSEDTEXSUBIMAGE2D) > --#define VPC_ES11COPYTEXIMAGE2D (VPG_ES11 + ES11_COPYTEXIMAGE2D) > --#define VPC_ES11COPYTEXSUBIMAGE2D (VPG_ES11 + ES11_COPYTEXSUBIMAGE2D) > --#define VPC_ES11CULLFACE (VPG_ES11 + ES11_CULLFACE) > --#define VPC_ES11DELETEBUFFERS (VPG_ES11 + ES11_DELETEBUFFERS) > --#define VPC_ES11DELETETEXTURES (VPG_ES11 + ES11_DELETETEXTURES) > --#define VPC_ES11DEPTHFUNC (VPG_ES11 + ES11_DEPTHFUNC) > --#define VPC_ES11DEPTHMASK (VPG_ES11 + ES11_DEPTHMASK) > --#define VPC_ES11DEPTHRANGEF (VPG_ES11 + ES11_DEPTHRANGEF) > --#define VPC_ES11DEPTHRANGEX (VPG_ES11 + ES11_DEPTHRANGEX) > --#define VPC_ES11DISABLE (VPG_ES11 + ES11_DISABLE) > --#define VPC_ES11DISABLECLIENTSTATE (VPG_ES11 + ES11_DISABLECLIENTSTATE) > --#define VPC_ES11DRAWARRAYS (VPG_ES11 + ES11_DRAWARRAYS) > --#define VPC_ES11DRAWELEMENTS (VPG_ES11 + ES11_DRAWELEMENTS) > --#define VPC_ES11ENABLE (VPG_ES11 + ES11_ENABLE) > --#define VPC_ES11ENABLECLIENTSTATE (VPG_ES11 + ES11_ENABLECLIENTSTATE) > --#define VPC_ES11FINISH (VPG_ES11 + ES11_FINISH) > --#define VPC_ES11FLUSH (VPG_ES11 + ES11_FLUSH) > --#define VPC_ES11FOGF (VPG_ES11 + ES11_FOGF) > --#define VPC_ES11FOGFV (VPG_ES11 + ES11_FOGFV) > --#define VPC_ES11FOGX (VPG_ES11 + ES11_FOGX) > --#define VPC_ES11FOGXV (VPG_ES11 + ES11_FOGXV) > --#define VPC_ES11FRONTFACE (VPG_ES11 + ES11_FRONTFACE) > --#define VPC_ES11FRUSTUMF (VPG_ES11 + ES11_FRUSTUMF) > --#define VPC_ES11FRUSTUMX (VPG_ES11 + ES11_FRUSTUMX) > --#define VPC_ES11GENBUFFERS (VPG_ES11 + ES11_GENBUFFERS) > --#define VPC_ES11GENTEXTURES (VPG_ES11 + ES11_GENTEXTURES) > --#define VPC_ES11GETBOOLEANV (VPG_ES11 + ES11_GETBOOLEANV) > --#define VPC_ES11GETBUFFERPARAMETERIV (VPG_ES11 + ES11_GETBUFFERPARAMETERIV) > --#define VPC_ES11GETCLIPPLANEF (VPG_ES11 + ES11_GETCLIPPLANEF) > --#define VPC_ES11GETCLIPPLANEX (VPG_ES11 + ES11_GETCLIPPLANEX) > --#define VPC_ES11GETERROR (VPG_ES11 + ES11_GETERROR) > --#define VPC_ES11GETFIXEDV (VPG_ES11 + ES11_GETFIXEDV) > --#define VPC_ES11GETFLOATV (VPG_ES11 + ES11_GETFLOATV) > --#define VPC_ES11GETINTEGERV (VPG_ES11 + ES11_GETINTEGERV) > --#define VPC_ES11GETLIGHTFV (VPG_ES11 + ES11_GETLIGHTFV) > --#define VPC_ES11GETLIGHTXV (VPG_ES11 + ES11_GETLIGHTXV) > --#define VPC_ES11GETMATERIALFV (VPG_ES11 + ES11_GETMATERIALFV) > --#define VPC_ES11GETMATERIALXV (VPG_ES11 + ES11_GETMATERIALXV) > --#define VPC_ES11GETPOINTERV (VPG_ES11 + ES11_GETPOINTERV) > --#define VPC_ES11GETSTRING (VPG_ES11 + ES11_GETSTRING) > --#define VPC_ES11GETTEXENVFV (VPG_ES11 + ES11_GETTEXENVFV) > --#define VPC_ES11GETTEXENVIV (VPG_ES11 + ES11_GETTEXENVIV) > --#define VPC_ES11GETTEXENVXV (VPG_ES11 + ES11_GETTEXENVXV) > --#define VPC_ES11GETTEXPARAMETERFV (VPG_ES11 + ES11_GETTEXPARAMETERFV) > --#define VPC_ES11GETTEXPARAMETERIV (VPG_ES11 + ES11_GETTEXPARAMETERIV) > --#define VPC_ES11GETTEXPARAMETERXV (VPG_ES11 + ES11_GETTEXPARAMETERXV) > --#define VPC_ES11HINT (VPG_ES11 + ES11_HINT) > --#define VPC_ES11ISBUFFER (VPG_ES11 + ES11_ISBUFFER) > --#define VPC_ES11ISENABLED (VPG_ES11 + ES11_ISENABLED) > --#define VPC_ES11ISTEXTURE (VPG_ES11 + ES11_ISTEXTURE) > --#define VPC_ES11LIGHTF (VPG_ES11 + ES11_LIGHTF) > --#define VPC_ES11LIGHTFV (VPG_ES11 + ES11_LIGHTFV) > --#define VPC_ES11LIGHTMODELF (VPG_ES11 + ES11_LIGHTMODELF) > --#define VPC_ES11LIGHTMODELFV (VPG_ES11 + ES11_LIGHTMODELFV) > --#define VPC_ES11LIGHTMODELX (VPG_ES11 + ES11_LIGHTMODELX) > --#define VPC_ES11LIGHTMODELXV (VPG_ES11 + ES11_LIGHTMODELXV) > --#define VPC_ES11LIGHTX (VPG_ES11 + ES11_LIGHTX) > --#define VPC_ES11LIGHTXV (VPG_ES11 + ES11_LIGHTXV) > --#define VPC_ES11LINEWIDTH (VPG_ES11 + ES11_LINEWIDTH) > --#define VPC_ES11LINEWIDTHX (VPG_ES11 + ES11_LINEWIDTHX) > --#define VPC_ES11LOADIDENTITY (VPG_ES11 + ES11_LOADIDENTITY) > --#define VPC_ES11LOADMATRIXF (VPG_ES11 + ES11_LOADMATRIXF) > --#define VPC_ES11LOADMATRIXX (VPG_ES11 + ES11_LOADMATRIXX) > --#define VPC_ES11LOGICOP (VPG_ES11 + ES11_LOGICOP) > --#define VPC_ES11MATERIALF (VPG_ES11 + ES11_MATERIALF) > --#define VPC_ES11MATERIALFV (VPG_ES11 + ES11_MATERIALFV) > --#define VPC_ES11MATERIALX (VPG_ES11 + ES11_MATERIALX) > --#define VPC_ES11MATERIALXV (VPG_ES11 + ES11_MATERIALXV) > --#define VPC_ES11MATRIXMODE (VPG_ES11 + ES11_MATRIXMODE) > --#define VPC_ES11MULTITEXCOORD4F (VPG_ES11 + ES11_MULTITEXCOORD4F) > --#define VPC_ES11MULTITEXCOORD4X (VPG_ES11 + ES11_MULTITEXCOORD4X) > --#define VPC_ES11MULTMATRIXF (VPG_ES11 + ES11_MULTMATRIXF) > --#define VPC_ES11MULTMATRIXX (VPG_ES11 + ES11_MULTMATRIXX) > --#define VPC_ES11NORMAL3F (VPG_ES11 + ES11_NORMAL3F) > --#define VPC_ES11NORMAL3X (VPG_ES11 + ES11_NORMAL3X) > --#define VPC_ES11NORMALPOINTER (VPG_ES11 + ES11_NORMALPOINTER) > --#define VPC_ES11ORTHOF (VPG_ES11 + ES11_ORTHOF) > --#define VPC_ES11ORTHOX (VPG_ES11 + ES11_ORTHOX) > --#define VPC_ES11PIXELSTOREI (VPG_ES11 + ES11_PIXELSTOREI) > --#define VPC_ES11POINTPARAMETERF (VPG_ES11 + ES11_POINTPARAMETERF) > --#define VPC_ES11POINTPARAMETERFV (VPG_ES11 + ES11_POINTPARAMETERFV) > --#define VPC_ES11POINTPARAMETERX (VPG_ES11 + ES11_POINTPARAMETERX) > --#define VPC_ES11POINTPARAMETERXV (VPG_ES11 + ES11_POINTPARAMETERXV) > --#define VPC_ES11POINTSIZE (VPG_ES11 + ES11_POINTSIZE) > --#define VPC_ES11POINTSIZEX (VPG_ES11 + ES11_POINTSIZEX) > --#define VPC_ES11POLYGONOFFSET (VPG_ES11 + ES11_POLYGONOFFSET) > --#define VPC_ES11POLYGONOFFSETX (VPG_ES11 + ES11_POLYGONOFFSETX) > --#define VPC_ES11POPMATRIX (VPG_ES11 + ES11_POPMATRIX) > --#define VPC_ES11PUSHMATRIX (VPG_ES11 + ES11_PUSHMATRIX) > --#define VPC_ES11READPIXELS (VPG_ES11 + ES11_READPIXELS) > --#define VPC_ES11ROTATEF (VPG_ES11 + ES11_ROTATEF) > --#define VPC_ES11ROTATEX (VPG_ES11 + ES11_ROTATEX) > --#define VPC_ES11SAMPLECOVERAGE (VPG_ES11 + ES11_SAMPLECOVERAGE) > --#define VPC_ES11SAMPLECOVERAGEX (VPG_ES11 + ES11_SAMPLECOVERAGEX) > --#define VPC_ES11SCALEF (VPG_ES11 + ES11_SCALEF) > --#define VPC_ES11SCALEX (VPG_ES11 + ES11_SCALEX) > --#define VPC_ES11SCISSOR (VPG_ES11 + ES11_SCISSOR) > --#define VPC_ES11SHADEMODEL (VPG_ES11 + ES11_SHADEMODEL) > --#define VPC_ES11STENCILFUNC (VPG_ES11 + ES11_STENCILFUNC) > --#define VPC_ES11STENCILMASK (VPG_ES11 + ES11_STENCILMASK) > --#define VPC_ES11STENCILOP (VPG_ES11 + ES11_STENCILOP) > --#define VPC_ES11TEXCOORDPOINTER (VPG_ES11 + ES11_TEXCOORDPOINTER) > --#define VPC_ES11TEXENVF (VPG_ES11 + ES11_TEXENVF) > --#define VPC_ES11TEXENVFV (VPG_ES11 + ES11_TEXENVFV) > --#define VPC_ES11TEXENVI (VPG_ES11 + ES11_TEXENVI) > --#define VPC_ES11TEXENVIV (VPG_ES11 + ES11_TEXENVIV) > --#define VPC_ES11TEXENVX (VPG_ES11 + ES11_TEXENVX) > --#define VPC_ES11TEXENVXV (VPG_ES11 + ES11_TEXENVXV) > --#define VPC_ES11TEXIMAGE2D (VPG_ES11 + ES11_TEXIMAGE2D) > --#define VPC_ES11TEXPARAMETERF (VPG_ES11 + ES11_TEXPARAMETERF) > --#define VPC_ES11TEXPARAMETERFV (VPG_ES11 + ES11_TEXPARAMETERFV) > --#define VPC_ES11TEXPARAMETERI (VPG_ES11 + ES11_TEXPARAMETERI) > --#define VPC_ES11TEXPARAMETERIV (VPG_ES11 + ES11_TEXPARAMETERIV) > --#define VPC_ES11TEXPARAMETERX (VPG_ES11 + ES11_TEXPARAMETERX) > --#define VPC_ES11TEXPARAMETERXV (VPG_ES11 + ES11_TEXPARAMETERXV) > --#define VPC_ES11TEXSUBIMAGE2D (VPG_ES11 + ES11_TEXSUBIMAGE2D) > --#define VPC_ES11TRANSLATEF (VPG_ES11 + ES11_TRANSLATEF) > --#define VPC_ES11TRANSLATEX (VPG_ES11 + ES11_TRANSLATEX) > --#define VPC_ES11VERTEXPOINTER (VPG_ES11 + ES11_VERTEXPOINTER) > --#define VPC_ES11VIEWPORT (VPG_ES11 + ES11_VIEWPORT) > - /* OpenGL ES11 Statics Counter IDs. */ > --#define VPC_ES11CALLS (VPG_ES11 + ES11_CALLS) > --#define VPC_ES11DRAWCALLS (VPG_ES11 + ES11_DRAWCALLS) > --#define VPC_ES11STATECHANGECALLS (VPG_ES11 + ES11_STATECHANGECALLS) > --#define VPC_ES11POINTCOUNT (VPG_ES11 + ES11_POINTCOUNT) > --#define VPC_ES11LINECOUNT (VPG_ES11 + ES11_LINECOUNT) > --#define VPC_ES11TRIANGLECOUNT (VPG_ES11 + ES11_TRIANGLECOUNT) > -- > --/* OpenGLES 2.x */ > --#define VPC_ES20ACTIVETEXTURE (VPG_ES20 + ES20_ACTIVETEXTURE) > --#define VPC_ES20ATTACHSHADER (VPG_ES20 + ES20_ATTACHSHADER) > --#define VPC_ES20BINDATTRIBLOCATION (VPG_ES20 + ES20_BINDATTRIBLOCATION) > --#define VPC_ES20BINDBUFFER (VPG_ES20 + ES20_BINDBUFFER) > --#define VPC_ES20BINDFRAMEBUFFER (VPG_ES20 + ES20_BINDFRAMEBUFFER) > --#define VPC_ES20BINDRENDERBUFFER (VPG_ES20 + ES20_BINDRENDERBUFFER) > --#define VPC_ES20BINDTEXTURE (VPG_ES20 + ES20_BINDTEXTURE) > --#define VPC_ES20BLENDCOLOR (VPG_ES20 + ES20_BLENDCOLOR) > --#define VPC_ES20BLENDEQUATION (VPG_ES20 + ES20_BLENDEQUATION) > --#define VPC_ES20BLENDEQUATIONSEPARATE (VPG_ES20 + ES20_BLENDEQUATIONSEPARATE) > --#define VPC_ES20BLENDFUNC (VPG_ES20 + ES20_BLENDFUNC) > --#define VPC_ES20BLENDFUNCSEPARATE (VPG_ES20 + ES20_BLENDFUNCSEPARATE) > --#define VPC_ES20BUFFERDATA (VPG_ES20 + ES20_BUFFERDATA) > --#define VPC_ES20BUFFERSUBDATA (VPG_ES20 + ES20_BUFFERSUBDATA) > --#define VPC_ES20CHECKFRAMEBUFFERSTATUS (VPG_ES20 + ES20_CHECKFRAMEBUFFERSTATUS) > --#define VPC_ES20CLEAR (VPG_ES20 + ES20_CLEAR) > --#define VPC_ES20CLEARCOLOR (VPG_ES20 + ES20_CLEARCOLOR) > --#define VPC_ES20CLEARDEPTHF (VPG_ES20 + ES20_CLEARDEPTHF) > --#define VPC_ES20CLEARSTENCIL (VPG_ES20 + ES20_CLEARSTENCIL) > --#define VPC_ES20COLORMASK (VPG_ES20 + ES20_COLORMASK) > --#define VPC_ES20COMPILESHADER (VPG_ES20 + ES20_COMPILESHADER) > --#define VPC_ES20COMPRESSEDTEXIMAGE2D (VPG_ES20 + ES20_COMPRESSEDTEXIMAGE2D) > --#define VPC_ES20COMPRESSEDTEXSUBIMAGE2D (VPG_ES20 + ES20_COMPRESSEDTEXSUBIMAGE2D) > --#define VPC_ES20COPYTEXIMAGE2D (VPG_ES20 + ES20_COPYTEXIMAGE2D) > --#define VPC_ES20COPYTEXSUBIMAGE2D (VPG_ES20 + ES20_COPYTEXSUBIMAGE2D) > --#define VPC_ES20CREATEPROGRAM (VPG_ES20 + ES20_CREATEPROGRAM) > --#define VPC_ES20CREATESHADER (VPG_ES20 + ES20_CREATESHADER) > --#define VPC_ES20CULLFACE (VPG_ES20 + ES20_CULLFACE) > --#define VPC_ES20DELETEBUFFERS (VPG_ES20 + ES20_DELETEBUFFERS) > --#define VPC_ES20DELETEFRAMEBUFFERS (VPG_ES20 + ES20_DELETEFRAMEBUFFERS) > --#define VPC_ES20DELETEPROGRAM (VPG_ES20 + ES20_DELETEPROGRAM) > --#define VPC_ES20DELETERENDERBUFFERS (VPG_ES20 + ES20_DELETERENDERBUFFERS) > --#define VPC_ES20DELETESHADER (VPG_ES20 + ES20_DELETESHADER) > --#define VPC_ES20DELETETEXTURES (VPG_ES20 + ES20_DELETETEXTURES) > --#define VPC_ES20DEPTHFUNC (VPG_ES20 + ES20_DEPTHFUNC) > --#define VPC_ES20DEPTHMASK (VPG_ES20 + ES20_DEPTHMASK) > --#define VPC_ES20DEPTHRANGEF (VPG_ES20 + ES20_DEPTHRANGEF) > --#define VPC_ES20DETACHSHADER (VPG_ES20 + ES20_DETACHSHADER) > --#define VPC_ES20DISABLE (VPG_ES20 + ES20_DISABLE) > --#define VPC_ES20DISABLEVERTEXATTRIBARRAY (VPG_ES20 + ES20_DISABLEVERTEXATTRIBARRAY) > --#define VPC_ES20DRAWARRAYS (VPG_ES20 + ES20_DRAWARRAYS) > --#define VPC_ES20DRAWELEMENTS (VPG_ES20 + ES20_DRAWELEMENTS) > --#define VPC_ES20ENABLE (VPG_ES20 + ES20_ENABLE) > --#define VPC_ES20ENABLEVERTEXATTRIBARRAY (VPG_ES20 + ES20_ENABLEVERTEXATTRIBARRAY) > --#define VPC_ES20FINISH (VPG_ES20 + ES20_FINISH) > --#define VPC_ES20FLUSH (VPG_ES20 + ES20_FLUSH) > --#define VPC_ES20FRAMEBUFFERRENDERBUFFER (VPG_ES20 + ES20_FRAMEBUFFERRENDERBUFFER) > --#define VPC_ES20FRAMEBUFFERTEXTURE2D (VPG_ES20 + ES20_FRAMEBUFFERTEXTURE2D) > --#define VPC_ES20FRONTFACE (VPG_ES20 + ES20_FRONTFACE) > --#define VPC_ES20GENBUFFERS (VPG_ES20 + ES20_GENBUFFERS) > --#define VPC_ES20GENERATEMIPMAP (VPG_ES20 + ES20_GENERATEMIPMAP) > --#define VPC_ES20GENFRAMEBUFFERS (VPG_ES20 + ES20_GENFRAMEBUFFERS) > --#define VPC_ES20GENRENDERBUFFERS (VPG_ES20 + ES20_GENRENDERBUFFERS) > --#define VPC_ES20GENTEXTURES (VPG_ES20 + ES20_GENTEXTURES) > --#define VPC_ES20GETACTIVEATTRIB (VPG_ES20 + ES20_GETACTIVEATTRIB) > --#define VPC_ES20GETACTIVEUNIFORM (VPG_ES20 + ES20_GETACTIVEUNIFORM) > --#define VPC_ES20GETATTACHEDSHADERS (VPG_ES20 + ES20_GETATTACHEDSHADERS) > --#define VPC_ES20GETATTRIBLOCATION (VPG_ES20 + ES20_GETATTRIBLOCATION) > --#define VPC_ES20GETBOOLEANV (VPG_ES20 + ES20_GETBOOLEANV) > --#define VPC_ES20GETBUFFERPARAMETERIV (VPG_ES20 + ES20_GETBUFFERPARAMETERIV) > --#define VPC_ES20GETERROR (VPG_ES20 + ES20_GETERROR) > --#define VPC_ES20GETFLOATV (VPG_ES20 + ES20_GETFLOATV) > --#define VPC_ES20GETFRAMEBUFFERATTACHMENTPARAMETERIV (VPG_ES20 + ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV) > --#define VPC_ES20GETINTEGERV (VPG_ES20 + ES20_GETINTEGERV) > --#define VPC_ES20GETPROGRAMIV (VPG_ES20 + ES20_GETPROGRAMIV) > --#define VPC_ES20GETPROGRAMINFOLOG (VPG_ES20 + ES20_GETPROGRAMINFOLOG) > --#define VPC_ES20GETRENDERBUFFERPARAMETERIV (VPG_ES20 + ES20_GETRENDERBUFFERPARAMETERIV) > --#define VPC_ES20GETSHADERIV (VPG_ES20 + ES20_GETSHADERIV) > --#define VPC_ES20GETSHADERINFOLOG (VPG_ES20 + ES20_GETSHADERINFOLOG) > --#define VPC_ES20GETSHADERPRECISIONFORMAT (VPG_ES20 + ES20_GETSHADERPRECISIONFORMAT) > --#define VPC_ES20GETSHADERSOURCE (VPG_ES20 + ES20_GETSHADERSOURCE) > --#define VPC_ES20GETSTRING (VPG_ES20 + ES20_GETSTRING) > --#define VPC_ES20GETTEXPARAMETERFV (VPG_ES20 + ES20_GETTEXPARAMETERFV) > --#define VPC_ES20GETTEXPARAMETERIV (VPG_ES20 + ES20_GETTEXPARAMETERIV) > --#define VPC_ES20GETUNIFORMFV (VPG_ES20 + ES20_GETUNIFORMFV) > --#define VPC_ES20GETUNIFORMIV (VPG_ES20 + ES20_GETUNIFORMIV) > --#define VPC_ES20GETUNIFORMLOCATION (VPG_ES20 + ES20_GETUNIFORMLOCATION) > --#define VPC_ES20GETVERTEXATTRIBFV (VPG_ES20 + ES20_GETVERTEXATTRIBFV) > --#define VPC_ES20GETVERTEXATTRIBIV (VPG_ES20 + ES20_GETVERTEXATTRIBIV) > --#define VPC_ES20GETVERTEXATTRIBPOINTERV (VPG_ES20 + ES20_GETVERTEXATTRIBPOINTERV) > --#define VPC_ES20HINT (VPG_ES20 + ES20_HINT) > --#define VPC_ES20ISBUFFER (VPG_ES20 + ES20_ISBUFFER) > --#define VPC_ES20ISENABLED (VPG_ES20 + ES20_ISENABLED) > --#define VPC_ES20ISFRAMEBUFFER (VPG_ES20 + ES20_ISFRAMEBUFFER) > --#define VPC_ES20ISPROGRAM (VPG_ES20 + ES20_ISPROGRAM) > --#define VPC_ES20ISRENDERBUFFER (VPG_ES20 + ES20_ISRENDERBUFFER) > --#define VPC_ES20ISSHADER (VPG_ES20 + ES20_ISSHADER) > --#define VPC_ES20ISTEXTURE (VPG_ES20 + ES20_ISTEXTURE) > --#define VPC_ES20LINEWIDTH (VPG_ES20 + ES20_LINEWIDTH) > --#define VPC_ES20LINKPROGRAM (VPG_ES20 + ES20_LINKPROGRAM) > --#define VPC_ES20PIXELSTOREI (VPG_ES20 + ES20_PIXELSTOREI) > --#define VPC_ES20POLYGONOFFSET (VPG_ES20 + ES20_POLYGONOFFSET) > --#define VPC_ES20READPIXELS (VPG_ES20 + ES20_READPIXELS) > --#define VPC_ES20RELEASESHADERCOMPILER (VPG_ES20 + ES20_RELEASESHADERCOMPILER) > --#define VPC_ES20RENDERBUFFERSTORAGE (VPG_ES20 + ES20_RENDERBUFFERSTORAGE) > --#define VPC_ES20SAMPLECOVERAGE (VPG_ES20 + ES20_SAMPLECOVERAGE) > --#define VPC_ES20SCISSOR (VPG_ES20 + ES20_SCISSOR) > --#define VPC_ES20SHADERBINARY (VPG_ES20 + ES20_SHADERBINARY) > --#define VPC_ES20SHADERSOURCE (VPG_ES20 + ES20_SHADERSOURCE) > --#define VPC_ES20STENCILFUNC (VPG_ES20 + ES20_STENCILFUNC) > --#define VPC_ES20STENCILFUNCSEPARATE (VPG_ES20 + ES20_STENCILFUNCSEPARATE) > --#define VPC_ES20STENCILMASK (VPG_ES20 + ES20_STENCILMASK) > --#define VPC_ES20STENCILMASKSEPARATE (VPG_ES20 + ES20_STENCILMASKSEPARATE) > --#define VPC_ES20STENCILOP (VPG_ES20 + ES20_STENCILOP) > --#define VPC_ES20STENCILOPSEPARATE (VPG_ES20 + ES20_STENCILOPSEPARATE) > --#define VPC_ES20TEXIMAGE2D (VPG_ES20 + ES20_TEXIMAGE2D) > --#define VPC_ES20TEXPARAMETERF (VPG_ES20 + ES20_TEXPARAMETERF) > --#define VPC_ES20TEXPARAMETERFV (VPG_ES20 + ES20_TEXPARAMETERFV) > --#define VPC_ES20TEXPARAMETERI (VPG_ES20 + ES20_TEXPARAMETERI) > --#define VPC_ES20TEXPARAMETERIV (VPG_ES20 + ES20_TEXPARAMETERIV) > --#define VPC_ES20TEXSUBIMAGE2D (VPG_ES20 + ES20_TEXSUBIMAGE2D) > --#define VPC_ES20UNIFORM1F (VPG_ES20 + ES20_UNIFORM1F) > --#define VPC_ES20UNIFORM1FV (VPG_ES20 + ES20_UNIFORM1FV) > --#define VPC_ES20UNIFORM1I (VPG_ES20 + ES20_UNIFORM1I) > --#define VPC_ES20UNIFORM1IV (VPG_ES20 + ES20_UNIFORM1IV) > --#define VPC_ES20UNIFORM2F (VPG_ES20 + ES20_UNIFORM2F) > --#define VPC_ES20UNIFORM2FV (VPG_ES20 + ES20_UNIFORM2FV) > --#define VPC_ES20UNIFORM2I (VPG_ES20 + ES20_UNIFORM2I) > --#define VPC_ES20UNIFORM2IV (VPG_ES20 + ES20_UNIFORM2IV) > --#define VPC_ES20UNIFORM3F (VPG_ES20 + ES20_UNIFORM3F) > --#define VPC_ES20UNIFORM3FV (VPG_ES20 + ES20_UNIFORM3FV) > --#define VPC_ES20UNIFORM3I (VPG_ES20 + ES20_UNIFORM3I) > --#define VPC_ES20UNIFORM3IV (VPG_ES20 + ES20_UNIFORM3IV) > --#define VPC_ES20UNIFORM4F (VPG_ES20 + ES20_UNIFORM4F) > --#define VPC_ES20UNIFORM4FV (VPG_ES20 + ES20_UNIFORM4FV) > --#define VPC_ES20UNIFORM4I (VPG_ES20 + ES20_UNIFORM4I) > --#define VPC_ES20UNIFORM4IV (VPG_ES20 + ES20_UNIFORM4IV) > --#define VPC_ES20UNIFORMMATRIX2FV (VPG_ES20 + ES20_UNIFORMMATRIX2FV) > --#define VPC_ES20UNIFORMMATRIX3FV (VPG_ES20 + ES20_UNIFORMMATRIX3FV) > --#define VPC_ES20UNIFORMMATRIX4FV (VPG_ES20 + ES20_UNIFORMMATRIX4FV) > --#define VPC_ES20USEPROGRAM (VPG_ES20 + ES20_USEPROGRAM) > --#define VPC_ES20VALIDATEPROGRAM (VPG_ES20 + ES20_VALIDATEPROGRAM) > --#define VPC_ES20VERTEXATTRIB1F (VPG_ES20 + ES20_VERTEXATTRIB1F) > --#define VPC_ES20VERTEXATTRIB1FV (VPG_ES20 + ES20_VERTEXATTRIB1FV) > --#define VPC_ES20VERTEXATTRIB2F (VPG_ES20 + ES20_VERTEXATTRIB2F) > --#define VPC_ES20VERTEXATTRIB2FV (VPG_ES20 + ES20_VERTEXATTRIB2FV) > --#define VPC_ES20VERTEXATTRIB3F (VPG_ES20 + ES20_VERTEXATTRIB3F) > --#define VPC_ES20VERTEXATTRIB3FV (VPG_ES20 + ES20_VERTEXATTRIB3FV) > --#define VPC_ES20VERTEXATTRIB4F (VPG_ES20 + ES20_VERTEXATTRIB4F) > --#define VPC_ES20VERTEXATTRIB4FV (VPG_ES20 + ES20_VERTEXATTRIB4FV) > --#define VPC_ES20VERTEXATTRIBPOINTER (VPG_ES20 + ES20_VERTEXATTRIBPOINTER) > --#define VPC_ES20VIEWPORT (VPG_ES20 + ES20_VIEWPORT) > -+#define VPC_ES11CALLS (VPG_ES11 + ES11_CALLS) > -+#define VPC_ES11DRAWCALLS (VPG_ES11 + ES11_DRAWCALLS) > -+#define VPC_ES11STATECHANGECALLS (VPG_ES11 + ES11_STATECHANGECALLS) > -+#define VPC_ES11POINTCOUNT (VPG_ES11 + ES11_POINTCOUNT) > -+#define VPC_ES11LINECOUNT (VPG_ES11 + ES11_LINECOUNT) > -+#define VPC_ES11TRIANGLECOUNT (VPG_ES11 + ES11_TRIANGLECOUNT) > -+ > - /* OpenGL ES20 Statistics Counter IDs. */ > --#define VPC_ES20CALLS (VPG_ES20 + ES20_CALLS) > --#define VPC_ES20DRAWCALLS (VPG_ES20 + ES20_DRAWCALLS) > --#define VPC_ES20STATECHANGECALLS (VPG_ES20 + ES20_STATECHANGECALLS) > --#define VPC_ES20POINTCOUNT (VPG_ES20 + ES20_POINTCOUNT) > --#define VPC_ES20LINECOUNT (VPG_ES20 + ES20_LINECOUNT) > --#define VPC_ES20TRIANGLECOUNT (VPG_ES20 + ES20_TRIANGLECOUNT) > -- > --/* VG11 Counters. */ > --#define VPC_VG11APPENDPATH (VPG_VG11 + VG11_APPENDPATH) > --#define VPC_VG11APPENDPATHDATA (VPG_VG11 + VG11_APPENDPATHDATA) > --#define VPC_VG11CHILDIMAGE (VPG_VG11 + VG11_CHILDIMAGE) > --#define VPC_VG11CLEAR (VPG_VG11 + VG11_CLEAR) > --#define VPC_VG11CLEARGLYPH (VPG_VG11 + VG11_CLEARGLYPH) > --#define VPC_VG11CLEARIMAGE (VPG_VG11 + VG11_CLEARIMAGE) > --#define VPC_VG11CLEARPATH (VPG_VG11 + VG11_CLEARPATH) > --#define VPC_VG11COLORMATRIX (VPG_VG11 + VG11_COLORMATRIX) > --#define VPC_VG11CONVOLVE (VPG_VG11 + VG11_CONVOLVE) > --#define VPC_VG11COPYIMAGE (VPG_VG11 + VG11_COPYIMAGE) > --#define VPC_VG11COPYMASK (VPG_VG11 + VG11_COPYMASK) > --#define VPC_VG11COPYPIXELS (VPG_VG11 + VG11_COPYPIXELS) > --#define VPC_VG11CREATEFONT (VPG_VG11 + VG11_CREATEFONT) > --#define VPC_VG11CREATEIMAGE (VPG_VG11 + VG11_CREATEIMAGE) > --#define VPC_VG11CREATEMASKLAYER (VPG_VG11 + VG11_CREATEMASKLAYER) > --#define VPC_VG11CREATEPAINT (VPG_VG11 + VG11_CREATEPAINT) > --#define VPC_VG11CREATEPATH (VPG_VG11 + VG11_CREATEPATH) > --#define VPC_VG11DESTROYFONT (VPG_VG11 + VG11_DESTROYFONT) > --#define VPC_VG11DESTROYIMAGE (VPG_VG11 + VG11_DESTROYIMAGE) > --#define VPC_VG11DESTROYMASKLAYER (VPG_VG11 + VG11_DESTROYMASKLAYER) > --#define VPC_VG11DESTROYPAINT (VPG_VG11 + VG11_DESTROYPAINT) > --#define VPC_VG11DESTROYPATH (VPG_VG11 + VG11_DESTROYPATH) > --#define VPC_VG11DRAWGLYPH (VPG_VG11 + VG11_DRAWGLYPH) > --#define VPC_VG11DRAWGLYPHS (VPG_VG11 + VG11_DRAWGLYPHS) > --#define VPC_VG11DRAWIMAGE (VPG_VG11 + VG11_DRAWIMAGE) > --#define VPC_VG11DRAWPATH (VPG_VG11 + VG11_DRAWPATH) > --#define VPC_VG11FILLMASKLAYER (VPG_VG11 + VG11_FILLMASKLAYER) > --#define VPC_VG11FINISH (VPG_VG11 + VG11_FINISH) > --#define VPC_VG11FLUSH (VPG_VG11 + VG11_FLUSH) > --#define VPC_VG11GAUSSIANBLUR (VPG_VG11 + VG11_GAUSSIANBLUR) > --#define VPC_VG11GETCOLOR (VPG_VG11 + VG11_GETCOLOR) > --#define VPC_VG11GETERROR (VPG_VG11 + VG11_GETERROR) > --#define VPC_VG11GETF (VPG_VG11 + VG11_GETF) > --#define VPC_VG11GETFV (VPG_VG11 + VG11_GETFV) > --#define VPC_VG11GETI (VPG_VG11 + VG11_GETI) > --#define VPC_VG11GETIMAGESUBDATA (VPG_VG11 + VG11_GETIMAGESUBDATA) > --#define VPC_VG11GETIV (VPG_VG11 + VG11_GETIV) > --#define VPC_VG11GETMATRIX (VPG_VG11 + VG11_GETMATRIX) > --#define VPC_VG11GETPAINT (VPG_VG11 + VG11_GETPAINT) > --#define VPC_VG11GETPARAMETERF (VPG_VG11 + VG11_GETPARAMETERF) > --#define VPC_VG11GETPARAMETERFV (VPG_VG11 + VG11_GETPARAMETERFV) > --#define VPC_VG11GETPARAMETERI (VPG_VG11 + VG11_GETPARAMETERI) > --#define VPC_VG11GETPARAMETERIV (VPG_VG11 + VG11_GETPARAMETERIV) > --#define VPC_VG11GETPARAMETERVECTORSIZE (VPG_VG11 + VG11_GETPARAMETERVECTORSIZE) > --#define VPC_VG11GETPARENT (VPG_VG11 + VG11_GETPARENT) > --#define VPC_VG11GETPATHCAPABILITIES (VPG_VG11 + VG11_GETPATHCAPABILITIES) > --#define VPC_VG11GETPIXELS (VPG_VG11 + VG11_GETPIXELS) > --#define VPC_VG11GETSTRING (VPG_VG11 + VG11_GETSTRING) > --#define VPC_VG11GETVECTORSIZE (VPG_VG11 + VG11_GETVECTORSIZE) > --#define VPC_VG11HARDWAREQUERY (VPG_VG11 + VG11_HARDWAREQUERY) > --#define VPC_VG11IMAGESUBDATA (VPG_VG11 + VG11_IMAGESUBDATA) > --#define VPC_VG11INTERPOLATEPATH (VPG_VG11 + VG11_INTERPOLATEPATH) > --#define VPC_VG11LOADIDENTITY (VPG_VG11 + VG11_LOADIDENTITY) > --#define VPC_VG11LOADMATRIX (VPG_VG11 + VG11_LOADMATRIX) > --#define VPC_VG11LOOKUP (VPG_VG11 + VG11_LOOKUP) > --#define VPC_VG11LOOKUPSINGLE (VPG_VG11 + VG11_LOOKUPSINGLE) > --#define VPC_VG11MASK (VPG_VG11 + VG11_MASK) > --#define VPC_VG11MODIFYPATHCOORDS (VPG_VG11 + VG11_MODIFYPATHCOORDS) > --#define VPC_VG11MULTMATRIX (VPG_VG11 + VG11_MULTMATRIX) > --#define VPC_VG11PAINTPATTERN (VPG_VG11 + VG11_PAINTPATTERN) > --#define VPC_VG11PATHBOUNDS (VPG_VG11 + VG11_PATHBOUNDS) > --#define VPC_VG11PATHLENGTH (VPG_VG11 + VG11_PATHLENGTH) > --#define VPC_VG11PATHTRANSFORMEDBOUNDS (VPG_VG11 + VG11_PATHTRANSFORMEDBOUNDS) > --#define VPC_VG11POINTALONGPATH (VPG_VG11 + VG11_POINTALONGPATH) > --#define VPC_VG11READPIXELS (VPG_VG11 + VG11_READPIXELS) > --#define VPC_VG11REMOVEPATHCAPABILITIES (VPG_VG11 + VG11_REMOVEPATHCAPABILITIES) > --#define VPC_VG11RENDERTOMASK (VPG_VG11 + VG11_RENDERTOMASK) > --#define VPC_VG11ROTATE (VPG_VG11 + VG11_ROTATE) > --#define VPC_VG11SCALE (VPG_VG11 + VG11_SCALE) > --#define VPC_VG11SEPARABLECONVOLVE (VPG_VG11 + VG11_SEPARABLECONVOLVE) > --#define VPC_VG11SETCOLOR (VPG_VG11 + VG11_SETCOLOR) > --#define VPC_VG11SETF (VPG_VG11 + VG11_SETF) > --#define VPC_VG11SETFV (VPG_VG11 + VG11_SETFV) > --#define VPC_VG11SETGLYPHTOIMAGE (VPG_VG11 + VG11_SETGLYPHTOIMAGE) > --#define VPC_VG11SETGLYPHTOPATH (VPG_VG11 + VG11_SETGLYPHTOPATH) > --#define VPC_VG11SETI (VPG_VG11 + VG11_SETI) > --#define VPC_VG11SETIV (VPG_VG11 + VG11_SETIV) > --#define VPC_VG11SETPAINT (VPG_VG11 + VG11_SETPAINT) > --#define VPC_VG11SETPARAMETERF (VPG_VG11 + VG11_SETPARAMETERF) > --#define VPC_VG11SETPARAMETERFV (VPG_VG11 + VG11_SETPARAMETERFV) > --#define VPC_VG11SETPARAMETERI (VPG_VG11 + VG11_SETPARAMETERI) > --#define VPC_VG11SETPARAMETERIV (VPG_VG11 + VG11_SETPARAMETERIV) > --#define VPC_VG11SETPIXELS (VPG_VG11 + VG11_SETPIXELS) > --#define VPC_VG11SHEAR (VPG_VG11 + VG11_SHEAR) > --#define VPC_VG11TRANSFORMPATH (VPG_VG11 + VG11_TRANSFORMPATH) > --#define VPC_VG11TRANSLATE (VPG_VG11 + VG11_TRANSLATE) > --#define VPC_VG11WRITEPIXELS (VPG_VG11 + VG11_WRITEPIXELS) > -+#define VPC_ES20CALLS (VPG_ES20 + ES20_CALLS) > -+#define VPC_ES20DRAWCALLS (VPG_ES20 + ES20_DRAWCALLS) > -+#define VPC_ES20STATECHANGECALLS (VPG_ES20 + ES20_STATECHANGECALLS) > -+#define VPC_ES20POINTCOUNT (VPG_ES20 + ES20_POINTCOUNT) > -+#define VPC_ES20LINECOUNT (VPG_ES20 + ES20_LINECOUNT) > -+#define VPC_ES20TRIANGLECOUNT (VPG_ES20 + ES20_TRIANGLECOUNT) > -+ > - /* OpenVG Statistics Counter IDs. */ > --#define VPC_VG11CALLS (VPG_VG11 + VG11_CALLS) > --#define VPC_VG11DRAWCALLS (VPG_VG11 + VG11_DRAWCALLS) > --#define VPC_VG11STATECHANGECALLS (VPG_VG11 + VG11_STATECHANGECALLS) > --#define VPC_VG11FILLCOUNT (VPG_VG11 + VG11_FILLCOUNT) > --#define VPC_VG11STROKECOUNT (VPG_VG11 + VG11_STROKECOUNT) > -+#define VPC_VG11CALLS (VPG_VG11 + VG11_CALLS) > -+#define VPC_VG11DRAWCALLS (VPG_VG11 + VG11_DRAWCALLS) > -+#define VPC_VG11STATECHANGECALLS (VPG_VG11 + VG11_STATECHANGECALLS) > -+#define VPC_VG11FILLCOUNT (VPG_VG11 + VG11_FILLCOUNT) > -+#define VPC_VG11STROKECOUNT (VPG_VG11 + VG11_STROKECOUNT) > - > - /* HAL Counters. */ > - #define VPC_HALVERTBUFNEWBYTEALLOC (VPG_HAL + HAL_VERTBUFNEWBYTEALLOC) > -@@ -1018,7 +248,7 @@ extern "C" { > - #define VPC_GPUREAD64BYTE (VPG_GPU + GPU_READ64BYTE) > - #define VPC_GPUWRITE64BYTE (VPG_GPU + GPU_WRITE64BYTE) > - #define VPC_GPUTOTALCYCLES (VPG_GPU + GPU_TOTALCYCLES) > --#define VPC_GPUIDLECYCLES (VPG_GPU + GPU_IDLECYCLES) > -+#define VPC_GPUIDLECYCLES (VPG_GPU + GPU_IDLECYCLES) > - > - /* HW: Shader Counters. */ > - #define VPC_VSINSTCOUNT (VPG_VS + VS_INSTCOUNT) > -@@ -1026,9 +256,9 @@ extern "C" { > - #define VPC_VSTEXLDINSTCOUNT (VPG_VS + VS_TEXLDINSTCOUNT) > - #define VPC_VSRENDEREDVERTCOUNT (VPG_VS + VS_RENDEREDVERTCOUNT) > - /* HW: PS Count. */ > --#define VPC_PSINSTCOUNT (VPG_PS + PS_INSTCOUNT) > --#define VPC_PSBRANCHINSTCOUNT (VPG_PS + PS_BRANCHINSTCOUNT) > --#define VPC_PSTEXLDINSTCOUNT (VPG_PS + PS_TEXLDINSTCOUNT) > -+#define VPC_PSINSTCOUNT (VPG_PS + PS_INSTCOUNT) > -+#define VPC_PSBRANCHINSTCOUNT (VPG_PS + PS_BRANCHINSTCOUNT) > -+#define VPC_PSTEXLDINSTCOUNT (VPG_PS + PS_TEXLDINSTCOUNT) > - #define VPC_PSRENDEREDPIXCOUNT (VPG_PS + PS_RENDEREDPIXCOUNT) > - > - > -@@ -1071,7 +301,7 @@ extern "C" { > - #define VPC_PEDRAWNBYDEPTH (VPG_PE + PE_DRAWNBYDEPTH) > - > - /* HW: MC Counters. */ > --#define VPC_MCREADREQ8BPIPE (VPG_MC + MC_READREQ8BPIPE) > -+#define VPC_MCREADREQ8BPIPE (VPG_MC + MC_READREQ8BPIPE) > - #define VPC_MCREADREQ8BIP (VPG_MC + MC_READREQ8BIP) > - #define VPC_MCWRITEREQ8BPIPE (VPG_MC + MC_WRITEREQ8BPIPE) > - > -@@ -1087,6 +317,7 @@ extern "C" { > - #define VPC_PVSATTRIBCOUNT (VPG_PVS + PVS_ATTRIBCOUNT) > - #define VPC_PVSUNIFORMCOUNT (VPG_PVS + PVS_UNIFORMCOUNT) > - #define VPC_PVSFUNCTIONCOUNT (VPG_PVS + PVS_FUNCTIONCOUNT) > -+#define VPC_PVSSOURCE (VPG_PVS + PVS_SOURCE) > - > - #define VPC_PPSINSTRCOUNT (VPG_PPS + PPS_INSTRCOUNT) > - #define VPC_PPSALUINSTRCOUNT (VPG_PPS + PPS_ALUINSTRCOUNT) > -@@ -1094,7 +325,9 @@ extern "C" { > - #define VPC_PPSATTRIBCOUNT (VPG_PPS + PPS_ATTRIBCOUNT) > - #define VPC_PPSUNIFORMCOUNT (VPG_PPS + PPS_UNIFORMCOUNT) > - #define VPC_PPSFUNCTIONCOUNT (VPG_PPS + PPS_FUNCTIONCOUNT) > -+#define VPC_PPSSOURCE (VPG_PPS + PPS_SOURCE) > - > -+#define VPC_PROGRAMHANDLE (VPG_PROG + 1) > - > - #define VPG_ES20_DRAW_NO (VPG_ES20_DRAW + 1) > - #define VPG_ES11_DRAW_NO (VPG_ES11_DRAW + 1) > -@@ -1118,8 +351,8 @@ typedef struct _gcsPROFILER_COUNTERS > - > - /* HW vairable counters. */ > - gctUINT32 gpuCyclesCounter; > -- gctUINT32 gpuTotalCyclesCounter; > -- gctUINT32 gpuIdleCyclesCounter; > -+ gctUINT32 gpuTotalCyclesCounter; > -+ gctUINT32 gpuIdleCyclesCounter; > - gctUINT32 gpuTotalRead64BytesPerFrame; > - gctUINT32 gpuTotalWrite64BytesPerFrame; > - > -@@ -1158,7 +391,7 @@ typedef struct _gcsPROFILER_COUNTERS > - gctUINT32 ra_total_primitive_count; > - gctUINT32 ra_pipe_cache_miss_counter; > - gctUINT32 ra_prefetch_cache_miss_counter; > -- gctUINT32 ra_eez_culled_counter; > -+ gctUINT32 ra_eez_culled_counter; > - > - /* TX */ > - gctUINT32 tx_total_bilinear_requests; > -@@ -1190,7 +423,7 @@ typedef struct _gcsPROFILER > - gctBOOL enableHal; > - gctBOOL enableHW; > - gctBOOL enableSH; > -- gctBOOL isSyncMode; > -+ gctBOOL isSyncMode; > - > - gctBOOL useSocket; > - gctINT sockFd; > -@@ -1234,14 +467,17 @@ typedef struct _gcsPROFILER > - gctUINT32 redundantStateChangeCalls; > - #endif > - > -- gctUINT32 prevVSInstCount; > -- gctUINT32 prevVSBranchInstCount; > -- gctUINT32 prevVSTexInstCount; > -- gctUINT32 prevVSVertexCount; > -- gctUINT32 prevPSInstCount; > -- gctUINT32 prevPSBranchInstCount; > -- gctUINT32 prevPSTexInstCount; > -- gctUINT32 prevPSPixelCount; > -+ gctUINT32 prevVSInstCount; > -+ gctUINT32 prevVSBranchInstCount; > -+ gctUINT32 prevVSTexInstCount; > -+ gctUINT32 prevVSVertexCount; > -+ gctUINT32 prevPSInstCount; > -+ gctUINT32 prevPSBranchInstCount; > -+ gctUINT32 prevPSTexInstCount; > -+ gctUINT32 prevPSPixelCount; > -+ > -+ char* psSource; > -+ char* vsSource; > - > - } > - gcsPROFILER; > -@@ -1315,6 +551,18 @@ gcoPROFILER_Count( > - IN gctINT Value > - ); > - > -+gceSTATUS > -+gcoPROFILER_ShaderSourceFS( > -+ IN gcoHAL Hal, > -+ IN char* source > -+ ); > -+ > -+gceSTATUS > -+gcoPROFILER_ShaderSourceVS( > -+ IN gcoHAL Hal, > -+ IN char* source > -+ ); > -+ > - /* Profile input vertex shader. */ > - gceSTATUS > - gcoPROFILER_ShaderVS( > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h > -index bc4171e..6e4d830 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h > -@@ -568,6 +568,23 @@ gco2D_MonoBlit( > - IN gceSURF_FORMAT DestFormat > - ); > - > -+gceSTATUS > -+gco2D_MonoBlitEx( > -+ IN gco2D Engine, > -+ IN gctPOINTER StreamBits, > -+ IN gctINT32 StreamStride, > -+ IN gctINT32 StreamWidth, > -+ IN gctINT32 StreamHeight, > -+ IN gctINT32 StreamX, > -+ IN gctINT32 StreamY, > -+ IN gctUINT32 FgColor, > -+ IN gctUINT32 BgColor, > -+ IN gcsRECT_PTR SrcRect, > -+ IN gcsRECT_PTR DstRect, > -+ IN gctUINT8 FgRop, > -+ IN gctUINT8 BgRop > -+ ); > -+ > - /* Set kernel size. */ > - gceSTATUS > - gco2D_SetKernelSize( > -@@ -942,6 +959,15 @@ gco2D_SetSourceTileStatus( > - ); > - > - gceSTATUS > -+gco2D_SetTargetTileStatus( > -+ IN gco2D Engine, > -+ IN gce2D_TILE_STATUS_CONFIG TileStatusConfig, > -+ IN gceSURF_FORMAT CompressedFormat, > -+ IN gctUINT32 ClearValue, > -+ IN gctUINT32 GpuAddress > -+ ); > -+ > -+gceSTATUS > - gco2D_QueryU32( > - IN gco2D Engine, > - IN gce2D_QUERY Item, > -@@ -955,6 +981,28 @@ gco2D_SetStateU32( > - IN gctUINT32 Value > - ); > - > -+gceSTATUS > -+gco2D_SetStateArrayI32( > -+ IN gco2D Engine, > -+ IN gce2D_STATE State, > -+ IN gctINT32_PTR Array, > -+ IN gctINT32 ArraySize > -+ ); > -+ > -+gceSTATUS > -+gco2D_SetStateArrayU32( > -+ IN gco2D Engine, > -+ IN gce2D_STATE State, > -+ IN gctUINT32_PTR Array, > -+ IN gctINT32 ArraySize > -+ ); > -+ > -+gceSTATUS > -+gco2D_SetTargetRect( > -+ IN gco2D Engine, > -+ IN gcsRECT_PTR Rect > -+ ); > -+ > - #ifdef __cplusplus > - } > - #endif > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h > -index 5c0877d..14801aa 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h > -@@ -128,6 +128,7 @@ typedef int gctBOOL; > - typedef gctBOOL * gctBOOL_PTR; > - > - typedef int gctINT; > -+typedef long gctLONG; > - typedef signed char gctINT8; > - typedef signed short gctINT16; > - typedef signed int gctINT32; > -@@ -171,6 +172,7 @@ typedef void * gctFILE; > - typedef void * gctSIGNAL; > - typedef void * gctWINDOW; > - typedef void * gctIMAGE; > -+typedef void * gctSYNC_POINT; > - > - typedef void * gctSEMAPHORE; > - > -@@ -941,12 +943,19 @@ typedef struct _gcsHAL_FRAME_INFO > - OUT gctUINT readRequests[8]; > - OUT gctUINT writeRequests[8]; > - > -+ /* FE counters. */ > -+ OUT gctUINT drawCount; > -+ OUT gctUINT vertexOutCount; > -+ OUT gctUINT vertexMissCount; > -+ > - /* 3D counters. */ > - OUT gctUINT vertexCount; > - OUT gctUINT primitiveCount; > - OUT gctUINT rejectedPrimitives; > - OUT gctUINT culledPrimitives; > - OUT gctUINT clippedPrimitives; > -+ OUT gctUINT droppedPrimitives; > -+ OUT gctUINT frustumClippedPrimitives; > - OUT gctUINT outPrimitives; > - OUT gctUINT inPrimitives; > - OUT gctUINT culledQuadCount; > -@@ -964,18 +973,86 @@ typedef struct _gcsHAL_FRAME_INFO > - OUT gctUINT shaderCycles; > - OUT gctUINT vsInstructionCount; > - OUT gctUINT vsTextureCount; > -+ OUT gctUINT vsBranchCount; > -+ OUT gctUINT vsVertices; > - OUT gctUINT psInstructionCount; > - OUT gctUINT psTextureCount; > -+ OUT gctUINT psBranchCount; > -+ OUT gctUINT psPixels; > - > - /* Texture counters. */ > - OUT gctUINT bilinearRequests; > - OUT gctUINT trilinearRequests; > -- OUT gctUINT txBytes8; > -+ OUT gctUINT txBytes8[2]; > - OUT gctUINT txHitCount; > - OUT gctUINT txMissCount; > - } > - gcsHAL_FRAME_INFO; > - > -+typedef enum _gcePATCH_ID > -+{ > -+ gcePATCH_UNKNOWN = 0xFFFFFFFF, > -+ > -+ /* Benchmark list*/ > -+ gcePATCH_GLB11 = 0x0, > -+ gcePATCH_GLB21, > -+ gcePATCH_GLB25, > -+ gcePATCH_GLB27, > -+ > -+ gcePATCH_BM21, > -+ gcePATCH_MM, > -+ gcePATCH_MM06, > -+ gcePATCH_MM07, > -+ gcePATCH_QUADRANT, > -+ gcePATCH_ANTUTU, > -+ gcePATCH_SMARTBENCH, > -+ gcePATCH_JPCT, > -+ gcePATCH_NENAMARK, > -+ gcePATCH_NENAMARK2, > -+ gcePATCH_NEOCORE, > -+ gcePATCH_GLB, > -+ gcePATCH_GB, > -+ gcePATCH_RTESTVA, > -+ gcePATCH_BMX, > -+ gcePATCH_BMGUI, > -+ > -+ /* Game list */ > -+ gcePATCH_NBA2013, > -+ gcePATCH_BARDTALE, > -+ gcePATCH_BUSPARKING3D, > -+ gcePATCH_FISHBOODLE, > -+ gcePATCH_SUBWAYSURFER, > -+ gcePATCH_HIGHWAYDRIVER, > -+ gcePATCH_PREMIUM, > -+ gcePATCH_RACEILLEGAL, > -+ gcePATCH_BLABLA, > -+ gcePATCH_MEGARUN, > -+ gcePATCH_GALAXYONFIRE2, > -+ gcePATCH_GLOFTR3HM, > -+ gcePATCH_GLOFTSXHM, > -+ gcePATCH_GLOFTF3HM, > -+ gcePATCH_GLOFTGANG, > -+ gcePATCH_XRUNNER, > -+ gcePATCH_WP, > -+ gcePATCH_DEVIL, > -+ gcePATCH_HOLYARCH, > -+ gcePATCH_MUSE, > -+ gcePATCH_SG, > -+ gcePATCH_SIEGECRAFT, > -+ gcePATCH_CARCHALLENGE, > -+ gcePATCH_HEROESCALL, > -+ gcePATCH_MONOPOLY, > -+ gcePATCH_CTGL20, > -+ gcePATCH_FIREFOX, > -+ gcePATCH_CHORME, > -+ gcePATCH_DUOKANTV, > -+ gcePATCH_TESTAPP, > -+ > -+ /* Count enum*/ > -+ gcePATCH_COUNT, > -+} > -+gcePATCH_ID; > -+ > - #if gcdLINK_QUEUE_SIZE > - typedef struct _gckLINKDATA * gckLINKDATA; > - struct _gckLINKDATA > -diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h > -index 03cb4d6..2eab666 100644 > ---- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h > -+++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h > -@@ -28,7 +28,7 @@ > - > - #define gcvVERSION_PATCH 9 > - > --#define gcvVERSION_BUILD 6622 > -+#define gcvVERSION_BUILD 9754 > - > - #define gcvVERSION_DATE __DATE__ > - > -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c > -index 4d48bd5..b029428 100644 > ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c > -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c > -@@ -25,7 +25,9 @@ > - #include <linux/mm.h> > - #include <linux/mman.h> > - #include <linux/slab.h> > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) > - #include <mach/hardware.h> > -+#endif > - #include <linux/pm_runtime.h> > - > - #define _GC_OBJ_ZONE gcvZONE_DEVICE > -@@ -305,6 +307,7 @@ gckGALDEVICE_Construct( > - IN gctUINT LogFileSize, > - IN struct device *pdev, > - IN gctINT PowerManagement, > -+ IN gctINT GpuProfiler, > - OUT gckGALDEVICE *Device > - ) > - { > -@@ -369,6 +372,10 @@ gckGALDEVICE_Construct( > - #if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) > - /*get gpu regulator*/ > - device->gpu_regulator = regulator_get(pdev, "cpu_vddgpu"); > -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ device->gpu_regulator = regulator_get(pdev, "vddpu"); > -+#endif > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > - if (IS_ERR(device->gpu_regulator)) { > - gcmkTRACE_ZONE(gcvLEVEL_ERROR, gcvZONE_DRIVER, > - "%s(%d): Failed to get gpu regulator %s/%s \n", > -@@ -541,6 +548,10 @@ gckGALDEVICE_Construct( > - device->kernels[gcvCORE_MAJOR]->hardware, PowerManagement > - )); > - > -+ gcmkONERROR(gckHARDWARE_SetGpuProfiler( > -+ device->kernels[gcvCORE_MAJOR]->hardware, GpuProfiler > -+ )); > -+ > - #if COMMAND_PROCESSOR_VERSION == 1 > - /* Start the command queue. */ > - gcmkONERROR(gckCOMMAND_Start(device->kernels[gcvCORE_MAJOR]->command)); > -@@ -599,6 +610,7 @@ gckGALDEVICE_Construct( > - device->kernels[gcvCORE_2D]->hardware, PowerManagement > - )); > - > -+ > - #if COMMAND_PROCESSOR_VERSION == 1 > - /* Start the command queue. */ > - gcmkONERROR(gckCOMMAND_Start(device->kernels[gcvCORE_2D]->command)); > -@@ -635,6 +647,7 @@ gckGALDEVICE_Construct( > - device->kernels[gcvCORE_VG]->vg->hardware, > - PowerManagement > - )); > -+ > - #endif > - } > - else > -@@ -849,6 +862,7 @@ gckGALDEVICE_Construct( > - } > - else > - { > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) > - mem_region = request_mem_region( > - ContiguousBase, ContiguousSize, "galcore managed memory" > - ); > -@@ -864,6 +878,7 @@ gckGALDEVICE_Construct( > - > - gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); > - } > -+#endif > - > - device->requestedContiguousBase = ContiguousBase; > - device->requestedContiguousSize = ContiguousSize; > -@@ -1107,7 +1122,7 @@ gckGALDEVICE_Destroy( > - pm_runtime_disable(Device->pmdev); > - #endif > - > --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > - if (Device->gpu_regulator) { > - regulator_put(Device->gpu_regulator); > - Device->gpu_regulator = NULL; > -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h > -index dde4f03..c51432f 100644 > ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h > -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h > -@@ -26,6 +26,15 @@ > - ******************************* gckGALDEVICE Structure ******************************* > - \******************************************************************************/ > - > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+struct contiguous_mem_pool { > -+ struct dma_attrs attrs; > -+ dma_addr_t phys; > -+ void *virt; > -+ size_t size; > -+}; > -+#endif > -+ > - typedef struct _gckGALDEVICE > - { > - /* Objects. */ > -@@ -91,12 +100,16 @@ typedef struct _gckGALDEVICE > - struct clk *clk_2d_axi; > - struct clk *clk_vg_axi; > - > --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > - /*Power management.*/ > - struct regulator *gpu_regulator; > - #endif > - /*Run time pm*/ > - struct device *pmdev; > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ struct contiguous_mem_pool *pool; > -+ struct reset_control *rstc[gcdMAX_GPU_COUNT]; > -+#endif > - } > - * gckGALDEVICE; > - > -@@ -171,6 +184,7 @@ gceSTATUS gckGALDEVICE_Construct( > - IN gctUINT LogFileSize, > - IN struct device *pdev, > - IN gctINT PowerManagement, > -+ IN gctINT GpuProfiler, > - OUT gckGALDEVICE *Device > - ); > - > -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c > -index bacd531..88a7e4e6 100644 > ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c > -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c > -@@ -1,7 +1,7 @@ > - /**************************************************************************** > - * > - * Copyright (C) 2005 - 2013 by Vivante Corp. > --* Copyright (C) 2011-2012 Freescale Semiconductor, Inc. > -+* Copyright (C) 2011-2013 Freescale Semiconductor, Inc. > - * > - * This program is free software; you can redistribute it and/or modify > - * it under the terms of the GNU General Public License as published by > -@@ -69,14 +69,26 @@ task_notify_func(struct notifier_block *self, unsigned long val, void *data) > - #include <mach/viv_gpu.h> > - #else > - #include <linux/pm_runtime.h> > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) > - #include <mach/busfreq.h> > -+#else > -+#include <linux/reset.h> > -+#endif > - #endif > - /* Zone used for header/footer. */ > - #define _GC_OBJ_ZONE gcvZONE_DRIVER > - > - #if gcdENABLE_FSCALE_VAL_ADJUST > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+#include <linux/device_cooling.h> > -+#define REG_THERMAL_NOTIFIER(a) register_devfreq_cooling_notifier(a); > -+#define UNREG_THERMAL_NOTIFIER(a) unregister_devfreq_cooling_notifier(a); > -+#else > - extern int register_thermal_notifier(struct notifier_block *nb); > - extern int unregister_thermal_notifier(struct notifier_block *nb); > -+#define REG_THERMAL_NOTIFIER(a) register_thermal_notifier(a); > -+#define UNREG_THERMAL_NOTIFIER(a) unregister_thermal_notifier(a); > -+#endif > - #endif > - > - MODULE_DESCRIPTION("Vivante Graphics Driver"); > -@@ -116,7 +128,11 @@ module_param(registerMemBaseVG, ulong, 0644); > - static ulong registerMemSizeVG = 2 << 10; > - module_param(registerMemSizeVG, ulong, 0644); > - > -+#if gcdENABLE_FSCALE_VAL_ADJUST > -+static ulong contiguousSize = 128 << 20; > -+#else > - static ulong contiguousSize = 4 << 20; > -+#endif > - module_param(contiguousSize, ulong, 0644); > - > - static ulong contiguousBase = 0; > -@@ -134,6 +150,9 @@ module_param(compression, int, 0644); > - static int powerManagement = 1; > - module_param(powerManagement, int, 0644); > - > -+static int gpuProfiler = 0; > -+module_param(gpuProfiler, int, 0644); > -+ > - static int signal = 48; > - module_param(signal, int, 0644); > - > -@@ -786,7 +805,9 @@ static int drv_init(struct device *pdev) > - > - printk(KERN_INFO "Galcore version %d.%d.%d.%d\n", > - gcvVERSION_MAJOR, gcvVERSION_MINOR, gcvVERSION_PATCH, gcvVERSION_BUILD); > -- > -+ /* when enable gpu profiler, we need to turn off gpu powerMangement */ > -+ if(gpuProfiler) > -+ powerManagement = 0; > - if (showArgs) > - { > - printk("galcore options:\n"); > -@@ -818,6 +839,7 @@ static int drv_init(struct device *pdev) > - printk(" physSize = 0x%08lX\n", physSize); > - printk(" logFileSize = %d KB \n", logFileSize); > - printk(" powerManagement = %d\n", powerManagement); > -+ printk(" gpuProfiler = %d\n", gpuProfiler); > - #if ENABLE_GPU_CLOCK_BY_DRIVER > - printk(" coreClock = %lu\n", coreClock); > - #endif > -@@ -841,9 +863,14 @@ static int drv_init(struct device *pdev) > - logFileSize, > - pdev, > - powerManagement, > -+ gpuProfiler, > - &device > - )); > - > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ device->pool = dev_get_drvdata(pdev); > -+#endif > -+ > - /* Start the GAL device. */ > - gcmkONERROR(gckGALDEVICE_Start(device)); > - > -@@ -1028,11 +1055,18 @@ static struct notifier_block thermal_hot_pm_notifier = { > - > - > - > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) > -+static int gpu_probe(struct platform_device *pdev) > -+#else > - static int __devinit gpu_probe(struct platform_device *pdev) > -+#endif > - { > - int ret = -ENODEV; > - struct resource* res; > --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ struct contiguous_mem_pool *pool; > -+ struct reset_control *rstc; > -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) > - struct device_node *dn =pdev->dev.of_node; > - const u32 *prop; > - #else > -@@ -1077,7 +1111,22 @@ static int __devinit gpu_probe(struct platform_device *pdev) > - registerMemSizeVG = res->end - res->start + 1; > - } > - > --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ pool = devm_kzalloc(&pdev->dev, sizeof(*pool), GFP_KERNEL); > -+ if (!pool) > -+ return -ENOMEM; > -+ pool->size = contiguousSize; > -+ init_dma_attrs(&pool->attrs); > -+ dma_set_attr(DMA_ATTR_WRITE_COMBINE, &pool->attrs); > -+ pool->virt = dma_alloc_attrs(&pdev->dev, pool->size, &pool->phys, > -+ GFP_KERNEL, &pool->attrs); > -+ if (!pool->virt) { > -+ dev_err(&pdev->dev, "Failed to allocate contiguous memory\n"); > -+ return -ENOMEM; > -+ } > -+ contiguousBase = pool->phys; > -+ dev_set_drvdata(&pdev->dev, pool); > -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) > - prop = of_get_property(dn, "contiguousbase", NULL); > - if(prop) > - contiguousBase = *prop; > -@@ -1095,30 +1144,56 @@ static int __devinit gpu_probe(struct platform_device *pdev) > - > - if (!ret) > - { > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ rstc = devm_reset_control_get(&pdev->dev, "gpu3d"); > -+ galDevice->rstc[gcvCORE_MAJOR] = IS_ERR(rstc) ? NULL : rstc; > -+ > -+ rstc = devm_reset_control_get(&pdev->dev, "gpu2d"); > -+ galDevice->rstc[gcvCORE_2D] = IS_ERR(rstc) ? NULL : rstc; > -+ > -+ rstc = devm_reset_control_get(&pdev->dev, "gpuvg"); > -+ galDevice->rstc[gcvCORE_VG] = IS_ERR(rstc) ? NULL : rstc; > -+#endif > - platform_set_drvdata(pdev, galDevice); > - > - #if gcdENABLE_FSCALE_VAL_ADJUST > -- if(galDevice->kernels[gcvCORE_MAJOR]) > -- register_thermal_notifier(&thermal_hot_pm_notifier); > -+ if (galDevice->kernels[gcvCORE_MAJOR]) > -+ REG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier); > - #endif > - gcmkFOOTER_NO(); > - return ret; > - } > - #if gcdENABLE_FSCALE_VAL_ADJUST > -- unregister_thermal_notifier(&thermal_hot_pm_notifier); > -+ UNREG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier); > -+#endif > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ dma_free_attrs(&pdev->dev, pool->size, pool->virt, pool->phys, > -+ &pool->attrs); > - #endif > - gcmkFOOTER_ARG(KERN_INFO "Failed to register gpu driver: %d\n", ret); > - return ret; > - } > - > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) > -+static int gpu_remove(struct platform_device *pdev) > -+#else > - static int __devexit gpu_remove(struct platform_device *pdev) > -+#endif > - { > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ gckGALDEVICE device = platform_get_drvdata(pdev); > -+ struct contiguous_mem_pool *pool = device->pool; > -+#endif > - gcmkHEADER(); > - #if gcdENABLE_FSCALE_VAL_ADJUST > - if(galDevice->kernels[gcvCORE_MAJOR]) > -- unregister_thermal_notifier(&thermal_hot_pm_notifier); > -+ UNREG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier); > - #endif > - drv_exit(); > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ dma_free_attrs(&pdev->dev, pool->size, pool->virt, pool->phys, > -+ &pool->attrs); > -+#endif > - gcmkFOOTER_NO(); > - return 0; > - } > -@@ -1254,13 +1329,17 @@ MODULE_DEVICE_TABLE(of, mxs_gpu_dt_ids); > - #ifdef CONFIG_PM > - static int gpu_runtime_suspend(struct device *dev) > - { > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) > - release_bus_freq(BUS_FREQ_HIGH); > -+#endif > - return 0; > - } > - > - static int gpu_runtime_resume(struct device *dev) > - { > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) > - request_bus_freq(BUS_FREQ_HIGH); > -+#endif > - return 0; > - } > - > -@@ -1284,7 +1363,11 @@ static const struct dev_pm_ops gpu_pm_ops = { > - > - static struct platform_driver gpu_driver = { > - .probe = gpu_probe, > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) > -+ .remove = gpu_remove, > -+#else > - .remove = __devexit_p(gpu_remove), > -+#endif > - > - .suspend = gpu_suspend, > - .resume = gpu_resume, > -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c > -index e7edc39..331c73f 100644 > ---- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c > -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c > -@@ -30,19 +30,30 @@ > - #include <linux/dma-mapping.h> > - #include <linux/slab.h> > - #include <linux/idr.h> > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) > - #include <mach/hardware.h> > -+#endif > - #include <linux/workqueue.h> > - #include <linux/idr.h> > - #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,23) > - #include <linux/math64.h> > - #endif > --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+#include <linux/reset.h> > -+static inline void imx_gpc_power_up_pu(bool flag) {} > -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) > - #include <mach/common.h> > - #endif > - #include <linux/delay.h> > - #include <linux/pm_runtime.h> > - > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+#include <linux/file.h> > -+#include "gc_hal_kernel_sync.h" > -+#endif > -+ > -+ > - #define _GC_OBJ_ZONE gcvZONE_OS > - > - /******************************************************************************* > -@@ -148,6 +159,7 @@ typedef struct _gcsINTEGER_DB > - { > - struct idr idr; > - spinlock_t lock; > -+ gctINT curr; > - } > - gcsINTEGER_DB; > - > -@@ -180,6 +192,14 @@ struct _gckOS > - /* signal id database. */ > - gcsINTEGER_DB signalDB; > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ /* Lock. */ > -+ gctPOINTER syncPointMutex; > -+ > -+ /* sync point id database. */ > -+ gcsINTEGER_DB syncPointDB; > -+#endif > -+ > - gcsUSER_MAPPING_PTR userMap; > - gctPOINTER debugLock; > - > -@@ -215,6 +235,25 @@ typedef struct _gcsSIGNAL > - } > - gcsSIGNAL; > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+typedef struct _gcsSYNC_POINT * gcsSYNC_POINT_PTR; > -+typedef struct _gcsSYNC_POINT > -+{ > -+ /* The reference counter. */ > -+ atomic_t ref; > -+ > -+ /* State. */ > -+ atomic_t state; > -+ > -+ /* timeline. */ > -+ struct sync_timeline * timeline; > -+ > -+ /* ID. */ > -+ gctUINT32 id; > -+} > -+gcsSYNC_POINT; > -+#endif > -+ > - typedef struct _gcsPageInfo * gcsPageInfo_PTR; > - typedef struct _gcsPageInfo > - { > -@@ -767,7 +806,32 @@ _AllocateIntegerId( > - ) > - { > - int result; > -+ gctINT next; > -+ > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) > -+ idr_preload(GFP_KERNEL | gcdNOWARN); > - > -+ spin_lock(&Database->lock); > -+ > -+ next = (Database->curr + 1 <= 0) ? 1 : Database->curr + 1; > -+ result = idr_alloc(&Database->idr, KernelPointer, next, 0, GFP_ATOMIC); > -+ > -+ if (!result) > -+ { > -+ Database->curr = *Id; > -+ } > -+ > -+ spin_unlock(&Database->lock); > -+ > -+ idr_preload_end(); > -+ > -+ if (result < 0) > -+ { > -+ return gcvSTATUS_OUT_OF_RESOURCES; > -+ } > -+ > -+ *Id = result; > -+#else > - again: > - if (idr_pre_get(&Database->idr, GFP_KERNEL | gcdNOWARN) == 0) > - { > -@@ -776,8 +840,15 @@ again: > - > - spin_lock(&Database->lock); > - > -- /* Try to get a id greater than 0. */ > -- result = idr_get_new_above(&Database->idr, KernelPointer, 1, Id); > -+ next = (Database->curr + 1 <= 0) ? 1 : Database->curr + 1; > -+ > -+ /* Try to get a id greater than current id. */ > -+ result = idr_get_new_above(&Database->idr, KernelPointer, next, Id); > -+ > -+ if (!result) > -+ { > -+ Database->curr = *Id; > -+ } > - > - spin_unlock(&Database->lock); > - > -@@ -790,6 +861,7 @@ again: > - { > - return gcvSTATUS_OUT_OF_RESOURCES; > - } > -+#endif > - > - return gcvSTATUS_OK; > - } > -@@ -1008,6 +1080,21 @@ gckOS_Construct( > - /* Initialize signal id database. */ > - idr_init(&os->signalDB.idr); > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ /* > -+ * Initialize the sync point manager. > -+ */ > -+ > -+ /* Initialize mutex. */ > -+ gcmkONERROR(gckOS_CreateMutex(os, &os->syncPointMutex)); > -+ > -+ /* Initialize sync point id database lock. */ > -+ spin_lock_init(&os->syncPointDB.lock); > -+ > -+ /* Initialize sync point id database. */ > -+ idr_init(&os->syncPointDB.idr); > -+#endif > -+ > - #if gcdUSE_NON_PAGED_MEMORY_CACHE > - os->cacheSize = 0; > - os->cacheHead = gcvNULL; > -@@ -1031,6 +1118,15 @@ gckOS_Construct( > - return gcvSTATUS_OK; > - > - OnError: > -+ > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ if (os->syncPointMutex != gcvNULL) > -+ { > -+ gcmkVERIFY_OK( > -+ gckOS_DeleteMutex(os, os->syncPointMutex)); > -+ } > -+#endif > -+ > - if (os->signalMutex != gcvNULL) > - { > - gcmkVERIFY_OK( > -@@ -1104,6 +1200,15 @@ gckOS_Destroy( > - _FreeAllNonPagedMemoryCache(Os); > - #endif > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ /* > -+ * Destroy the sync point manager. > -+ */ > -+ > -+ /* Destroy the mutex. */ > -+ gcmkVERIFY_OK(gckOS_DeleteMutex(Os, Os->syncPointMutex)); > -+#endif > -+ > - /* > - * Destroy the signal manager. > - */ > -@@ -1961,12 +2066,6 @@ gckOS_AllocateNonPagedMemory( > - gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); > - } > - > -- if ((Os->device->baseAddress & 0x80000000) != (mdl->dmaHandle & 0x80000000)) > -- { > -- mdl->dmaHandle = (mdl->dmaHandle & ~0x80000000) > -- | (Os->device->baseAddress & 0x80000000); > -- } > -- > - mdl->addr = addr; > - > - /* Return allocated memory. */ > -@@ -2307,6 +2406,7 @@ gckOS_ReadRegisterEx( > - > - /* Verify the arguments. */ > - gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); > -+ gcmkVERIFY_ARGUMENT(Address < Os->device->requestedRegisterMemSizes[Core]); > - gcmkVERIFY_ARGUMENT(Data != gcvNULL); > - > - *Data = readl((gctUINT8 *)Os->device->registerBases[Core] + Address); > -@@ -2357,6 +2457,8 @@ gckOS_WriteRegisterEx( > - { > - gcmkHEADER_ARG("Os=0x%X Core=%d Address=0x%X Data=0x%08x", Os, Core, Address, Data); > - > -+ gcmkVERIFY_ARGUMENT(Address < Os->device->requestedRegisterMemSizes[Core]); > -+ > - writel(Data, (gctUINT8 *)Os->device->registerBases[Core] + Address); > - > - /* Success. */ > -@@ -2799,16 +2901,25 @@ gckOS_MapPhysical( > - > - if (mdl == gcvNULL) > - { > -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ struct contiguous_mem_pool *pool = Os->device->pool; > -+ > -+ if (Physical >= pool->phys && Physical < pool->phys + pool->size) > -+ logical = (gctPOINTER)(Physical - pool->phys + pool->virt); > -+ else > -+ logical = gcvNULL; > -+#else > - /* Map memory as cached memory. */ > - request_mem_region(physical, Bytes, "MapRegion"); > - logical = (gctPOINTER) ioremap_nocache(physical, Bytes); > -+#endif > - > - if (logical == gcvNULL) > - { > - gcmkTRACE_ZONE( > - gcvLEVEL_INFO, gcvZONE_OS, > -- "%s(%d): Failed to ioremap", > -- __FUNCTION__, __LINE__ > -+ "%s(%d): Failed to map physical address 0x%08x", > -+ __FUNCTION__, __LINE__, Physical > - ); > - > - MEMORY_UNLOCK(Os); > -@@ -3621,7 +3732,7 @@ gckOS_Delay( > - if (Delay > 0) > - { > - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) > -- ktime_t delay = ktime_set(0, Delay * NSEC_PER_MSEC); > -+ ktime_t delay = ktime_set(Delay/1000, (Delay%1000) * NSEC_PER_MSEC); > - __set_current_state(TASK_UNINTERRUPTIBLE); > - schedule_hrtimeout(&delay, HRTIMER_MODE_REL); > - #else > -@@ -3881,8 +3992,13 @@ gckOS_AllocatePagedMemoryEx( > - > - if (Contiguous) > - { > -- /* Get contiguous pages, and suppress warning (stack dump) from kernel when > -- we run out of memory. */ > -+ gctUINT32 order = get_order(bytes); > -+ > -+ if (order >= MAX_ORDER) > -+ { > -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); > -+ } > -+ > - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) > - addr = > - alloc_pages_exact(numPages * PAGE_SIZE, GFP_KERNEL | gcdNOWARN | __GFP_NORETRY); > -@@ -3894,12 +4010,12 @@ gckOS_AllocatePagedMemoryEx( > - mdl->exact = gcvTRUE; > - #else > - mdl->u.contiguousPages = > -- alloc_pages(GFP_KERNEL | gcdNOWARN | __GFP_NORETRY, GetOrder(numPages)); > -+ alloc_pages(GFP_KERNEL | gcdNOWARN | __GFP_NORETRY, order); > - #endif > - if (mdl->u.contiguousPages == gcvNULL) > - { > - mdl->u.contiguousPages = > -- alloc_pages(GFP_KERNEL | __GFP_HIGHMEM | gcdNOWARN, GetOrder(numPages)); > -+ alloc_pages(GFP_KERNEL | __GFP_HIGHMEM | gcdNOWARN, order); > - > - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) > - mdl->exact = gcvFALSE; > -@@ -4239,13 +4355,13 @@ gckOS_LockPages( > - } > - > - mdlMap->vma->vm_flags |= gcdVM_FLAGS; > --#if !gcdPAGED_MEMORY_CACHEABLE > -+ > - if (Cacheable == gcvFALSE) > - { > - /* Make this mapping non-cached. */ > - mdlMap->vma->vm_page_prot = gcmkPAGED_MEMROY_PROT(mdlMap->vma->vm_page_prot); > - } > --#endif > -+ > - addr = mdl->addr; > - > - /* Now map all the vmalloc pages to this user address. */ > -@@ -5336,6 +5452,7 @@ OnError: > - { > - /* Get the user pages. */ > - down_read(¤t->mm->mmap_sem); > -+ > - result = get_user_pages(current, > - current->mm, > - memory & PAGE_MASK, > -@@ -5345,105 +5462,127 @@ OnError: > - pages, > - gcvNULL > - ); > -+ > - up_read(¤t->mm->mmap_sem); > - > - if (result <=0 || result < pageCount) > - { > - struct vm_area_struct *vma; > - > -- /* Free the page table. */ > -- if (pages != gcvNULL) > -+ /* Release the pages if any. */ > -+ if (result > 0) > - { > -- /* Release the pages if any. */ > -- if (result > 0) > -+ for (i = 0; i < result; i++) > - { > -- for (i = 0; i < result; i++) > -+ if (pages[i] == gcvNULL) > - { > -- if (pages[i] == gcvNULL) > -- { > -- break; > -- } > -- > -- page_cache_release(pages[i]); > -+ break; > - } > -+ > -+ page_cache_release(pages[i]); > -+ pages[i] = gcvNULL; > - } > - > -- kfree(pages); > -- pages = gcvNULL; > -+ result = 0; > - } > - > - vma = find_vma(current->mm, memory); > - > -- if (vma && (vma->vm_flags & VM_PFNMAP) ) > -+ if (vma && (vma->vm_flags & VM_PFNMAP)) > - { > - pte_t * pte; > - spinlock_t * ptl; > -- unsigned long pfn; > -+ gctUINTPTR_T logical = memory; > - > -- pgd_t * pgd = pgd_offset(current->mm, memory); > -- pud_t * pud = pud_offset(pgd, memory); > -- if (pud) > -+ for (i = 0; i < pageCount; i++) > - { > -- pmd_t * pmd = pmd_offset(pud, memory); > -- pte = pte_offset_map_lock(current->mm, pmd, memory, &ptl); > -- if (!pte) > -+ pgd_t * pgd = pgd_offset(current->mm, logical); > -+ pud_t * pud = pud_offset(pgd, logical); > -+ > -+ if (pud) > -+ { > -+ pmd_t * pmd = pmd_offset(pud, logical); > -+ pte = pte_offset_map_lock(current->mm, pmd, logical, &ptl); > -+ if (!pte) > -+ { > -+ gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); > -+ } > -+ } > -+ else > - { > - gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); > - } > -+ > -+ pages[i] = pte_page(*pte); > -+ pte_unmap_unlock(pte, ptl); > -+ > -+ /* Advance to next. */ > -+ logical += PAGE_SIZE; > - } > -- else > -+ } > -+ else > -+ { > -+ gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); > -+ } > -+ > -+ /* Check if this memory is contiguous for old mmu. */ > -+ if (Os->device->kernels[Core]->hardware->mmuVersion == 0) > -+ { > -+ for (i = 1; i < pageCount; i++) > - { > -- gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); > -+ if (pages[i] != nth_page(pages[0], i)) > -+ { > -+ /* Non-contiguous. */ > -+ break; > -+ } > - } > - > -- pfn = pte_pfn(*pte); > -- > -- physical = (pfn << PAGE_SHIFT) | (memory & ~PAGE_MASK); > -+ if (i == pageCount) > -+ { > -+ /* Contiguous memory. */ > -+ physical = page_to_phys(pages[0]) | (memory & ~PAGE_MASK); > - > -- pte_unmap_unlock(pte, ptl); > -+ if (!((physical - Os->device->baseAddress) & 0x80000000)) > -+ { > -+ kfree(pages); > -+ pages = gcvNULL; > - > -- if ((Os->device->kernels[Core]->hardware->mmuVersion == 0) > -- && !((physical - Os->device->baseAddress) & 0x80000000)) > -- { > -- info->pages = gcvNULL; > -- info->pageTable = gcvNULL; > -+ info->pages = gcvNULL; > -+ info->pageTable = gcvNULL; > - > -- MEMORY_MAP_UNLOCK(Os); > -+ MEMORY_MAP_UNLOCK(Os); > - > -- *Address = physical - Os->device->baseAddress; > -- *Info = info; > -+ *Address = physical - Os->device->baseAddress; > -+ *Info = info; > - > -- gcmkFOOTER_ARG("*Info=0x%X *Address=0x%08x", > -- *Info, *Address); > -+ gcmkFOOTER_ARG("*Info=0x%X *Address=0x%08x", > -+ *Info, *Address); > - > -- return gcvSTATUS_OK; > -+ return gcvSTATUS_OK; > -+ } > - } > - } > -- else > -+ > -+ /* Reference pages. */ > -+ for (i = 0; i < pageCount; i++) > - { > -- gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); > -+ get_page(pages[i]); > - } > - } > - } > - > -- if (pages) > -- { > -- for (i = 0; i < pageCount; i++) > -- { > -- /* Flush(clean) the data cache. */ > -- gcmkONERROR(gckOS_CacheFlush(Os, _GetProcessID(), gcvNULL, > -- (gctPOINTER)(gctUINTPTR_T)page_to_phys(pages[i]), > -- (gctPOINTER)(memory & PAGE_MASK) + i*PAGE_SIZE, > -- PAGE_SIZE)); > -- } > -- } > -- else > -+ for (i = 0; i < pageCount; i++) > - { > -+#ifdef CONFIG_ARM > -+ gctUINT32 data; > -+ get_user(data, (gctUINT32*)((memory & PAGE_MASK) + i * PAGE_SIZE)); > -+#endif > -+ > - /* Flush(clean) the data cache. */ > - gcmkONERROR(gckOS_CacheFlush(Os, _GetProcessID(), gcvNULL, > -- (gctPOINTER)(gctUINTPTR_T)(physical & PAGE_MASK), > -- (gctPOINTER)(memory & PAGE_MASK), > -- PAGE_SIZE * pageCount)); > -+ (gctPOINTER)(gctUINTPTR_T)page_to_phys(pages[i]), > -+ (gctPOINTER)(memory & PAGE_MASK) + i*PAGE_SIZE, > -+ PAGE_SIZE)); > - } > - > - #if gcdENABLE_VG > -@@ -5464,20 +5603,14 @@ OnError: > - (gctPOINTER *) &pageTable, > - &address)); > - } > -+ > - /* Fill the page table. */ > - for (i = 0; i < pageCount; i++) > - { > - gctUINT32 phys; > - gctUINT32_PTR tab = pageTable + i * (PAGE_SIZE/4096); > - > -- if (pages) > -- { > -- phys = page_to_phys(pages[i]); > -- } > -- else > -- { > -- phys = (physical & PAGE_MASK) + i * PAGE_SIZE; > -- } > -+ phys = page_to_phys(pages[i]); > - > - #if gcdENABLE_VG > - if (Core == gcvCORE_VG) > -@@ -6126,7 +6259,7 @@ gckOS_CacheClean( > - #else > - dma_sync_single_for_device( > - gcvNULL, > -- Physical, > -+ (dma_addr_t)Physical, > - Bytes, > - DMA_TO_DEVICE); > - #endif > -@@ -6205,7 +6338,7 @@ gckOS_CacheInvalidate( > - #else > - dma_sync_single_for_device( > - gcvNULL, > -- Physical, > -+ (dma_addr_t)Physical, > - Bytes, > - DMA_FROM_DEVICE); > - #endif > -@@ -6279,7 +6412,7 @@ gckOS_CacheFlush( > - #else > - dma_sync_single_for_device( > - gcvNULL, > -- Physical, > -+ (dma_addr_t)Physical, > - Bytes, > - DMA_BIDIRECTIONAL); > - #endif > -@@ -6827,6 +6960,9 @@ gckOS_SetGPUPower( > - struct clk *clk_2dcore = Os->device->clk_2d_core; > - struct clk *clk_2d_axi = Os->device->clk_2d_axi; > - struct clk *clk_vg_axi = Os->device->clk_vg_axi; > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ int ret; > -+#endif > - > - gctBOOL oldClockState = gcvFALSE; > - gctBOOL oldPowerState = gcvFALSE; > -@@ -6852,9 +6988,13 @@ gckOS_SetGPUPower( > - } > - if((Power == gcvTRUE) && (oldPowerState == gcvFALSE)) > - { > --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) > -- if(!IS_ERR(Os->device->gpu_regulator)) > -- regulator_enable(Os->device->gpu_regulator); > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ if(!IS_ERR(Os->device->gpu_regulator)) { > -+ ret = regulator_enable(Os->device->gpu_regulator); > -+ if (ret != 0) > -+ gckOS_Print("%s(%d): fail to enable pu regulator %d!\n", > -+ __FUNCTION__, __LINE__, ret); > -+ } > - #else > - imx_gpc_power_up_pu(true); > - #endif > -@@ -6969,7 +7109,7 @@ gckOS_SetGPUPower( > - pm_runtime_put_sync(Os->device->pmdev); > - #endif > - > --#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) > -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > - if(!IS_ERR(Os->device->gpu_regulator)) > - regulator_disable(Os->device->gpu_regulator); > - #else > -@@ -7033,6 +7173,10 @@ gckOS_ResetGPU( > - } > - > - gcmkFOOTER_NO(); > -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) > -+ struct reset_control *rstc = Os->device->rstc[Core]; > -+ if (rstc) > -+ reset_control_reset(rstc); > - #else > - imx_src_reset_gpu((int)Core); > - #endif > -@@ -8529,3 +8673,338 @@ gckOS_GetProcessNameByPid( > - return gcvSTATUS_OK; > - } > - > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ > -+gceSTATUS > -+gckOS_CreateSyncPoint( > -+ IN gckOS Os, > -+ OUT gctSYNC_POINT * SyncPoint > -+ ) > -+{ > -+ gceSTATUS status; > -+ gcsSYNC_POINT_PTR syncPoint; > -+ > -+ gcmkHEADER_ARG("Os=0x%X", Os); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); > -+ > -+ /* Create an sync point structure. */ > -+ syncPoint = (gcsSYNC_POINT_PTR) kmalloc( > -+ sizeof(gcsSYNC_POINT), GFP_KERNEL | gcdNOWARN); > -+ > -+ if (syncPoint == gcvNULL) > -+ { > -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); > -+ } > -+ > -+ /* Initialize the sync point. */ > -+ atomic_set(&syncPoint->ref, 1); > -+ atomic_set(&syncPoint->state, 0); > -+ > -+ gcmkONERROR(_AllocateIntegerId(&Os->syncPointDB, syncPoint, &syncPoint->id)); > -+ > -+ *SyncPoint = (gctSYNC_POINT)(gctUINTPTR_T)syncPoint->id; > -+ > -+ gcmkFOOTER_ARG("*SyncPonint=%d", syncPoint->id); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ if (syncPoint != gcvNULL) > -+ { > -+ kfree(syncPoint); > -+ } > -+ > -+ gcmkFOOTER(); > -+ return status; > -+} > -+ > -+gceSTATUS > -+gckOS_ReferenceSyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint > -+ ) > -+{ > -+ gceSTATUS status; > -+ gcsSYNC_POINT_PTR syncPoint; > -+ > -+ gcmkHEADER_ARG("Os=0x%X", Os); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); > -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); > -+ > -+ gcmkONERROR( > -+ _QueryIntegerId(&Os->syncPointDB, > -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, > -+ (gctPOINTER)&syncPoint)); > -+ > -+ /* Initialize the sync point. */ > -+ atomic_inc(&syncPoint->ref); > -+ > -+ gcmkFOOTER_NO(); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ gcmkFOOTER(); > -+ return status; > -+} > -+ > -+gceSTATUS > -+gckOS_DestroySyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint > -+ ) > -+{ > -+ gceSTATUS status; > -+ gcsSYNC_POINT_PTR syncPoint; > -+ gctBOOL acquired = gcvFALSE; > -+ > -+ gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); > -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); > -+ > -+ gcmkONERROR(gckOS_AcquireMutex(Os, Os->syncPointMutex, gcvINFINITE)); > -+ acquired = gcvTRUE; > -+ > -+ gcmkONERROR( > -+ _QueryIntegerId(&Os->syncPointDB, > -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, > -+ (gctPOINTER)&syncPoint)); > -+ > -+ gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint); > -+ > -+ if (atomic_dec_and_test(&syncPoint->ref)) > -+ { > -+ gcmkVERIFY_OK(_DestroyIntegerId(&Os->syncPointDB, syncPoint->id)); > -+ > -+ /* Free the sgianl. */ > -+ syncPoint->timeline = gcvNULL; > -+ kfree(syncPoint); > -+ } > -+ > -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); > -+ acquired = gcvFALSE; > -+ > -+ /* Success. */ > -+ gcmkFOOTER_NO(); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ if (acquired) > -+ { > -+ /* Release the mutex. */ > -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); > -+ } > -+ > -+ gcmkFOOTER(); > -+ return status; > -+} > -+ > -+gceSTATUS > -+gckOS_SignalSyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint > -+ ) > -+{ > -+ gceSTATUS status; > -+ gcsSYNC_POINT_PTR syncPoint; > -+ gctBOOL acquired = gcvFALSE; > -+ > -+ gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); > -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); > -+ > -+ gcmkONERROR(gckOS_AcquireMutex(Os, Os->syncPointMutex, gcvINFINITE)); > -+ acquired = gcvTRUE; > -+ > -+ gcmkONERROR( > -+ _QueryIntegerId(&Os->syncPointDB, > -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, > -+ (gctPOINTER)&syncPoint)); > -+ > -+ gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint); > -+ > -+ /* Get state. */ > -+ atomic_set(&syncPoint->state, gcvTRUE); > -+ > -+ /* Signal timeline. */ > -+ if (syncPoint->timeline) > -+ { > -+ sync_timeline_signal(syncPoint->timeline); > -+ } > -+ > -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); > -+ acquired = gcvFALSE; > -+ > -+ /* Success. */ > -+ gcmkFOOTER_NO(); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ if (acquired) > -+ { > -+ /* Release the mutex. */ > -+ gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex)); > -+ } > -+ > -+ gcmkFOOTER(); > -+ return status; > -+} > -+ > -+gceSTATUS > -+gckOS_QuerySyncPoint( > -+ IN gckOS Os, > -+ IN gctSYNC_POINT SyncPoint, > -+ OUT gctBOOL_PTR State > -+ ) > -+{ > -+ gceSTATUS status; > -+ gcsSYNC_POINT_PTR syncPoint; > -+ > -+ gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint); > -+ > -+ /* Verify the arguments. */ > -+ gcmkVERIFY_OBJECT(Os, gcvOBJ_OS); > -+ gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL); > -+ > -+ gcmkONERROR( > -+ _QueryIntegerId(&Os->syncPointDB, > -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, > -+ (gctPOINTER)&syncPoint)); > -+ > -+ gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint); > -+ > -+ /* Get state. */ > -+ *State = atomic_read(&syncPoint->state); > -+ > -+ /* Success. */ > -+ gcmkFOOTER_ARG("*State=%d", *State); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ gcmkFOOTER(); > -+ return status; > -+} > -+ > -+gceSTATUS > -+gckOS_CreateSyncTimeline( > -+ IN gckOS Os, > -+ OUT gctHANDLE * Timeline > -+ ) > -+{ > -+ struct viv_sync_timeline * timeline; > -+ > -+ /* Create viv sync timeline. */ > -+ timeline = viv_sync_timeline_create("viv timeline", Os); > -+ > -+ if (timeline == gcvNULL) > -+ { > -+ /* Out of memory. */ > -+ return gcvSTATUS_OUT_OF_MEMORY; > -+ } > -+ > -+ *Timeline = (gctHANDLE) timeline; > -+ return gcvSTATUS_OK; > -+} > -+ > -+gceSTATUS > -+gckOS_DestroySyncTimeline( > -+ IN gckOS Os, > -+ IN gctHANDLE Timeline > -+ ) > -+{ > -+ struct viv_sync_timeline * timeline; > -+ gcmkASSERT(Timeline != gcvNULL); > -+ > -+ /* Destroy timeline. */ > -+ timeline = (struct viv_sync_timeline *) Timeline; > -+ sync_timeline_destroy(&timeline->obj); > -+ > -+ return gcvSTATUS_OK; > -+} > -+ > -+gceSTATUS > -+gckOS_CreateNativeFence( > -+ IN gckOS Os, > -+ IN gctHANDLE Timeline, > -+ IN gctSYNC_POINT SyncPoint, > -+ OUT gctINT * FenceFD > -+ ) > -+{ > -+ int fd = -1; > -+ struct viv_sync_timeline *timeline; > -+ struct sync_pt * pt = gcvNULL; > -+ struct sync_fence * fence; > -+ char name[32]; > -+ gcsSYNC_POINT_PTR syncPoint; > -+ gceSTATUS status; > -+ > -+ gcmkHEADER_ARG("Os=0x%X Timeline=0x%X SyncPoint=%d", > -+ Os, Timeline, (gctUINT)(gctUINTPTR_T)SyncPoint); > -+ > -+ gcmkONERROR( > -+ _QueryIntegerId(&Os->syncPointDB, > -+ (gctUINT32)(gctUINTPTR_T)SyncPoint, > -+ (gctPOINTER)&syncPoint)); > -+ > -+ /* Cast timeline. */ > -+ timeline = (struct viv_sync_timeline *) Timeline; > -+ > -+ fd = get_unused_fd(); > -+ > -+ if (fd < 0) > -+ { > -+ /* Out of resources. */ > -+ gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES); > -+ } > -+ > -+ /* Create viv_sync_pt. */ > -+ pt = viv_sync_pt_create(timeline, SyncPoint); > -+ > -+ if (pt == gcvNULL) > -+ { > -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); > -+ } > -+ > -+ /* Reference sync_timeline. */ > -+ syncPoint->timeline = &timeline->obj; > -+ > -+ /* Build fence name. */ > -+ snprintf(name, 32, "viv sync_fence-%u", (gctUINT)(gctUINTPTR_T)SyncPoint); > -+ > -+ /* Create sync_fence. */ > -+ fence = sync_fence_create(name, pt); > -+ > -+ if (fence == NULL) > -+ { > -+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); > -+ } > -+ > -+ /* Install fence to fd. */ > -+ sync_fence_install(fence, fd); > -+ > -+ *FenceFD = fd; > -+ gcmkFOOTER_ARG("*FenceFD=%d", fd); > -+ return gcvSTATUS_OK; > -+ > -+OnError: > -+ /* Error roll back. */ > -+ if (pt) > -+ { > -+ sync_pt_free(pt); > -+ } > -+ > -+ if (fd > 0) > -+ { > -+ put_unused_fd(fd); > -+ } > -+ > -+ gcmkFOOTER(); > -+ return status; > -+} > -+#endif > -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c > -new file mode 100644 > -index 0000000..7efae1c > ---- /dev/null > -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c > -@@ -0,0 +1,174 @@ > -+/**************************************************************************** > -+* > -+* Copyright (C) 2005 - 2013 by Vivante Corp. > -+* > -+* This program is free software; you can redistribute it and/or modify > -+* it under the terms of the GNU General Public License as published by > -+* the Free Software Foundation; either version 2 of the license, or > -+* (at your option) any later version. > -+* > -+* This program is distributed in the hope that it will be useful, > -+* but WITHOUT ANY WARRANTY; without even the implied warranty of > -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > -+* GNU General Public License for more details. > -+* > -+* You should have received a copy of the GNU General Public License > -+* along with this program; if not write to the Free Software > -+* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > -+* > -+*****************************************************************************/ > -+ > -+ > -+#include <linux/kernel.h> > -+#include <linux/file.h> > -+#include <linux/fs.h> > -+#include <linux/miscdevice.h> > -+#include <linux/module.h> > -+#include <linux/syscalls.h> > -+#include <linux/uaccess.h> > -+ > -+#include "gc_hal_kernel_sync.h" > -+ > -+#if gcdANDROID_NATIVE_FENCE_SYNC > -+ > -+static struct sync_pt * > -+viv_sync_pt_dup( > -+ struct sync_pt * sync_pt > -+ ) > -+{ > -+ gceSTATUS status; > -+ struct viv_sync_pt *pt; > -+ struct viv_sync_pt *src; > -+ struct viv_sync_timeline *obj; > -+ > -+ src = (struct viv_sync_pt *) sync_pt; > -+ obj = (struct viv_sync_timeline *) sync_pt->parent; > -+ > -+ /* Create the new sync_pt. */ > -+ pt = (struct viv_sync_pt *) > -+ sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt)); > -+ > -+ pt->stamp = src->stamp; > -+ pt->sync = src->sync; > -+ > -+ /* Reference sync point. */ > -+ status = gckOS_ReferenceSyncPoint(obj->os, pt->sync); > -+ > -+ if (gcmIS_ERROR(status)) > -+ { > -+ sync_pt_free((struct sync_pt *)pt); > -+ return NULL; > -+ } > -+ > -+ return (struct sync_pt *)pt; > -+} > -+ > -+static int > -+viv_sync_pt_has_signaled( > -+ struct sync_pt * sync_pt > -+ ) > -+{ > -+ gceSTATUS status; > -+ gctBOOL state; > -+ struct viv_sync_pt * pt; > -+ struct viv_sync_timeline * obj; > -+ > -+ pt = (struct viv_sync_pt *)sync_pt; > -+ obj = (struct viv_sync_timeline *)sync_pt->parent; > -+ > -+ status = gckOS_QuerySyncPoint(obj->os, pt->sync, &state); > -+ > -+ if (gcmIS_ERROR(status)) > -+ { > -+ /* Error. */ > -+ return -1; > -+ } > -+ > -+ return state; > -+} > -+ > -+static int > -+viv_sync_pt_compare( > -+ struct sync_pt * a, > -+ struct sync_pt * b > -+ ) > -+{ > -+ int ret; > -+ struct viv_sync_pt * pt1 = (struct viv_sync_pt *) a; > -+ struct viv_sync_pt * pt2 = (struct viv_sync_pt *) b; > -+ > -+ ret = (pt1->stamp < pt2->stamp) ? -1 > -+ : (pt1->stamp == pt2->stamp) ? 0 > -+ : 1; > -+ > -+ return ret; > -+} > -+ > -+static void > -+viv_sync_pt_free( > -+ struct sync_pt * sync_pt > -+ ) > -+{ > -+ struct viv_sync_pt * pt; > -+ struct viv_sync_timeline * obj; > -+ > -+ pt = (struct viv_sync_pt *) sync_pt; > -+ obj = (struct viv_sync_timeline *) sync_pt->parent; > -+ > -+ gckOS_DestroySyncPoint(obj->os, pt->sync); > -+} > -+ > -+static struct sync_timeline_ops viv_timeline_ops = > -+{ > -+ .driver_name = "viv_sync", > -+ .dup = viv_sync_pt_dup, > -+ .has_signaled = viv_sync_pt_has_signaled, > -+ .compare = viv_sync_pt_compare, > -+ .free_pt = viv_sync_pt_free, > -+}; > -+ > -+struct viv_sync_timeline * > -+viv_sync_timeline_create( > -+ const char * name, > -+ gckOS os > -+ ) > -+{ > -+ struct viv_sync_timeline * obj; > -+ > -+ obj = (struct viv_sync_timeline *) > -+ sync_timeline_create(&viv_timeline_ops, sizeof(struct viv_sync_timeline), name); > -+ > -+ obj->os = os; > -+ obj->stamp = 0; > -+ > -+ return obj; > -+} > -+ > -+struct sync_pt * > -+viv_sync_pt_create( > -+ struct viv_sync_timeline * obj, > -+ gctSYNC_POINT SyncPoint > -+ ) > -+{ > -+ gceSTATUS status; > -+ struct viv_sync_pt * pt; > -+ > -+ pt = (struct viv_sync_pt *) > -+ sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt)); > -+ > -+ pt->stamp = obj->stamp++; > -+ pt->sync = SyncPoint; > -+ > -+ /* Dup signal. */ > -+ status = gckOS_ReferenceSyncPoint(obj->os, SyncPoint); > -+ > -+ if (gcmIS_ERROR(status)) > -+ { > -+ sync_pt_free((struct sync_pt *)pt); > -+ return NULL; > -+ } > -+ > -+ return (struct sync_pt *) pt; > -+} > -+ > -+#endif > -diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h > -new file mode 100644 > -index 0000000..6fc12e5 > ---- /dev/null > -+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h > -@@ -0,0 +1,71 @@ > -+/**************************************************************************** > -+* > -+* Copyright (C) 2005 - 2013 by Vivante Corp. > -+* > -+* This program is free software; you can redistribute it and/or modify > -+* it under the terms of the GNU General Public License as published by > -+* the Free Software Foundation; either version 2 of the license, or > -+* (at your option) any later version. > -+* > -+* This program is distributed in the hope that it will be useful, > -+* but WITHOUT ANY WARRANTY; without even the implied warranty of > -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > -+* GNU General Public License for more details. > -+* > -+* You should have received a copy of the GNU General Public License > -+* along with this program; if not write to the Free Software > -+* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > -+* > -+*****************************************************************************/ > -+ > -+ > -+#ifndef __gc_hal_kernel_sync_h_ > -+#define __gc_hal_kernel_sync_h_ > -+ > -+#include <linux/types.h> > -+ > -+#include <linux/sync.h> > -+ > -+#include <gc_hal.h> > -+#include <gc_hal_base.h> > -+ > -+struct viv_sync_timeline > -+{ > -+ /* Parent object. */ > -+ struct sync_timeline obj; > -+ > -+ /* Timestamp when sync_pt is created. */ > -+ gctUINT stamp; > -+ > -+ /* Pointer to os struct. */ > -+ gckOS os; > -+}; > -+ > -+ > -+struct viv_sync_pt > -+{ > -+ /* Parent object. */ > -+ struct sync_pt pt; > -+ > -+ /* Reference sync point*/ > -+ gctSYNC_POINT sync; > -+ > -+ /* Timestamp when sync_pt is created. */ > -+ gctUINT stamp; > -+}; > -+ > -+/* Create viv_sync_timeline object. */ > -+struct viv_sync_timeline * > -+viv_sync_timeline_create( > -+ const char * Name, > -+ gckOS Os > -+ ); > -+ > -+/* Create viv_sync_pt object. */ > -+struct sync_pt * > -+viv_sync_pt_create( > -+ struct viv_sync_timeline * Obj, > -+ gctSYNC_POINT SyncPoint > -+ ); > -+ > -+#endif /* __gc_hal_kernel_sync_h_ */ > --- > -1.7.9.5 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch b/recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch > deleted file mode 100644 > index 815d02c..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch > +++ /dev/null > @@ -1,31 +0,0 @@ > -From b37a944f55a5010bd08297a63db0275540922f32 Mon Sep 17 00:00:00 2001 > -From: Otavio Salvador <otavio@ossystems.com.br> > -Date: Thu, 22 Aug 2013 16:31:29 -0300 > -Subject: [PATCH] drm/vivante: Add ":00" sufix in returned bus Id > - > -This makes the 3.0.35 compatible with a Xorg driver build for 3.5.7 or > -newer kernels. > - > -Upstream-Status: Inapropriate [embedded specific] > - > -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> > ---- > - drivers/gpu/drm/vivante/vivante_drv.c | 2 +- > - 1 file changed, 1 insertion(+), 1 deletion(-) > - > -diff --git a/drivers/gpu/drm/vivante/vivante_drv.c b/drivers/gpu/drm/vivante/vivante_drv.c > -index 4224608..cea360d 100644 > ---- a/drivers/gpu/drm/vivante/vivante_drv.c > -+++ b/drivers/gpu/drm/vivante/vivante_drv.c > -@@ -55,7 +55,7 @@ > - > - #include "drm_pciids.h" > - > --static char platformdevicename[] = "Vivante GCCore"; > -+static char platformdevicename[] = "Vivante GCCore:00"; > - static struct platform_device *pplatformdev; > - > - static struct drm_driver driver = { > --- > -1.8.4.rc1 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch b/recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch > deleted file mode 100644 > index 0a20b3f..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch > +++ /dev/null > @@ -1,143 +0,0 @@ > -From 149545df26169d257b144ff78934ce9cb5b6818b Mon Sep 17 00:00:00 2001 > -From: Otavio Salvador <otavio@ossystems.com.br> > -Date: Sat, 19 Oct 2013 10:55:11 -0300 > -Subject: [PATCH] epdc: Rename mxcfb_epdc_kernel.h to mxc_epdc.h > -Organization: O.S. Systems Software LTDA. > - > -This allow for forward compatibility with imx-test >= 3.10.9-1.0.0. > - > -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> > ---- > - drivers/video/mxc/mxc_epdc_fb.c | 2 +- > - include/linux/mxcfb_epdc.h | 49 +++++++++++++++++++++++++++++++++++++++ > - include/linux/mxcfb_epdc_kernel.h | 49 --------------------------------------- > - 3 files changed, 50 insertions(+), 50 deletions(-) > - create mode 100644 include/linux/mxcfb_epdc.h > - delete mode 100644 include/linux/mxcfb_epdc_kernel.h > - > -diff --git a/drivers/video/mxc/mxc_epdc_fb.c b/drivers/video/mxc/mxc_epdc_fb.c > -index 4103498..b3ef8ea 100644 > ---- a/drivers/video/mxc/mxc_epdc_fb.c > -+++ b/drivers/video/mxc/mxc_epdc_fb.c > -@@ -43,7 +43,7 @@ > - #include <linux/dmaengine.h> > - #include <linux/pxp_dma.h> > - #include <linux/mxcfb.h> > --#include <linux/mxcfb_epdc_kernel.h> > -+#include <linux/mxcfb_epdc.h> > - #include <linux/gpio.h> > - #include <linux/regulator/driver.h> > - #include <linux/fsl_devices.h> > -diff --git a/include/linux/mxcfb_epdc.h b/include/linux/mxcfb_epdc.h > -new file mode 100644 > -index 0000000..06fea6f > ---- /dev/null > -+++ b/include/linux/mxcfb_epdc.h > -@@ -0,0 +1,49 @@ > -+/* > -+ * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved. > -+ * > -+ * This program is free software; you can redistribute it and/or modify > -+ * it under the terms of the GNU General Public License as published by > -+ * the Free Software Foundation; either version 2 of the License, or > -+ * (at your option) any later version. > -+ * > -+ * This program is distributed in the hope that it will be useful, > -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of > -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > -+ * GNU General Public License for more details. > -+ * > -+ * You should have received a copy of the GNU General Public License > -+ * along with this program; if not, write to the Free Software > -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > -+ * > -+ */ > -+#ifndef _MXCFB_EPDC_KERNEL > -+#define _MXCFB_EPDC_KERNEL > -+ > -+void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, > -+ struct fb_info *info); > -+int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info); > -+int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); > -+int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data, > -+ struct fb_info *info); > -+int mxc_epdc_fb_wait_update_complete( > -+ struct mxcfb_update_marker_data *marker_data, > -+ struct fb_info *info); > -+int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay, > -+ struct fb_info *info); > -+int mxc_epdc_get_pwrdown_delay(struct fb_info *info); > -+int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); > -+ > -+void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, > -+ struct fb_info *info); > -+int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info); > -+int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); > -+int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data, > -+ struct fb_info *info); > -+int mxc_spdc_fb_wait_update_complete( > -+ struct mxcfb_update_marker_data *marker_data, > -+ struct fb_info *info); > -+int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay, > -+ struct fb_info *info); > -+int mxc_spdc_get_pwrdown_delay(struct fb_info *info); > -+int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); > -+#endif > -diff --git a/include/linux/mxcfb_epdc_kernel.h b/include/linux/mxcfb_epdc_kernel.h > -deleted file mode 100644 > -index 06fea6f..0000000 > ---- a/include/linux/mxcfb_epdc_kernel.h > -+++ /dev/null > -@@ -1,49 +0,0 @@ > --/* > -- * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved. > -- * > -- * This program is free software; you can redistribute it and/or modify > -- * it under the terms of the GNU General Public License as published by > -- * the Free Software Foundation; either version 2 of the License, or > -- * (at your option) any later version. > -- * > -- * This program is distributed in the hope that it will be useful, > -- * but WITHOUT ANY WARRANTY; without even the implied warranty of > -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > -- * GNU General Public License for more details. > -- * > -- * You should have received a copy of the GNU General Public License > -- * along with this program; if not, write to the Free Software > -- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > -- * > -- */ > --#ifndef _MXCFB_EPDC_KERNEL > --#define _MXCFB_EPDC_KERNEL > -- > --void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, > -- struct fb_info *info); > --int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info); > --int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); > --int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data, > -- struct fb_info *info); > --int mxc_epdc_fb_wait_update_complete( > -- struct mxcfb_update_marker_data *marker_data, > -- struct fb_info *info); > --int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay, > -- struct fb_info *info); > --int mxc_epdc_get_pwrdown_delay(struct fb_info *info); > --int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); > -- > --void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, > -- struct fb_info *info); > --int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info); > --int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); > --int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data, > -- struct fb_info *info); > --int mxc_spdc_fb_wait_update_complete( > -- struct mxcfb_update_marker_data *marker_data, > -- struct fb_info *info); > --int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay, > -- struct fb_info *info); > --int mxc_spdc_get_pwrdown_delay(struct fb_info *info); > --int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); > --#endif > --- > -1.8.4.rc3 > - > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig > deleted file mode 100644 > index d709519..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig > +++ /dev/null > @@ -1,301 +0,0 @@ > -CONFIG_EXPERIMENTAL=y > -CONFIG_SYSVIPC=y > -CONFIG_IKCONFIG=y > -CONFIG_IKCONFIG_PROC=y > -CONFIG_LOG_BUF_SHIFT=14 > -CONFIG_CGROUPS=y > -CONFIG_EMBEDDED=y > -CONFIG_PERF_EVENTS=y > -CONFIG_KPROBES=y > -CONFIG_MODULES=y > -CONFIG_MODULE_UNLOAD=y > -CONFIG_MODULE_FORCE_UNLOAD=y > -CONFIG_MODVERSIONS=y > -# CONFIG_BLK_DEV_BSG is not set > -CONFIG_ARCH_MXC=y > -CONFIG_GPIO_PCA953X=y > -CONFIG_ARCH_MX6=y > -CONFIG_FORCE_MAX_ZONEORDER=14 > -CONFIG_MACH_MX6Q_ARM2=y > -CONFIG_MACH_MX6Q_SABRELITE=y > -CONFIG_MACH_MX6Q_SABRESD=y > -CONFIG_MACH_MX6Q_SABREAUTO=y > -CONFIG_MACH_MX6Q_HDMIDONGLE=y > -CONFIG_USB_EHCI_ARC_H1=y > -CONFIG_USB_FSL_ARC_OTG=y > -CONFIG_MXC_PWM=y > -CONFIG_MXC_REBOOT_MFGMODE=y > -CONFIG_CLK_DEBUG=y > -CONFIG_DMA_ZONE_SIZE=184 > -# CONFIG_SWP_EMULATE is not set > -CONFIG_ARM_ERRATA_743622=y > -CONFIG_ARM_ERRATA_751472=y > -CONFIG_ARM_ERRATA_754322=y > -CONFIG_ARM_ERRATA_764369=y > -CONFIG_NO_HZ=y > -CONFIG_HIGH_RES_TIMERS=y > -CONFIG_SMP=y > -CONFIG_VMSPLIT_2G=y > -CONFIG_PREEMPT=y > -CONFIG_AEABI=y > -# CONFIG_OABI_COMPAT is not set > -CONFIG_HIGHMEM=y > -CONFIG_COMPACTION=y > -CONFIG_KSM=y > -CONFIG_ZBOOT_ROM_TEXT=0x0 > -CONFIG_ZBOOT_ROM_BSS=0x0 > -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" > -CONFIG_CPU_FREQ=y > -CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y > -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y > -CONFIG_CPU_FREQ_GOV_POWERSAVE=y > -CONFIG_CPU_FREQ_GOV_USERSPACE=y > -CONFIG_CPU_FREQ_GOV_ONDEMAND=y > -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y > -CONFIG_CPU_FREQ_IMX=y > -CONFIG_VFP=y > -CONFIG_NEON=y > -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set > -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y > -CONFIG_PM_RUNTIME=y > -CONFIG_PM_DEBUG=y > -CONFIG_APM_EMULATION=y > -CONFIG_NET=y > -CONFIG_PACKET=y > -CONFIG_UNIX=y > -CONFIG_INET=y > -CONFIG_IP_MULTICAST=y > -CONFIG_IP_PNP=y > -CONFIG_IP_PNP_DHCP=y > -CONFIG_IP_PNP_BOOTP=y > -# CONFIG_INET_LRO is not set > -# CONFIG_IPV6 is not set > -CONFIG_NETFILTER=y > -CONFIG_LLC2=y > -CONFIG_CAN=y > -CONFIG_CAN_RAW=y > -CONFIG_CAN_BCM=y > -CONFIG_CAN_VCAN=y > -CONFIG_CAN_FLEXCAN=y > -CONFIG_BT=y > -CONFIG_BT_L2CAP=y > -CONFIG_BT_SCO=y > -CONFIG_BT_RFCOMM=y > -CONFIG_BT_RFCOMM_TTY=y > -CONFIG_BT_BNEP=y > -CONFIG_BT_BNEP_MC_FILTER=y > -CONFIG_BT_BNEP_PROTO_FILTER=y > -CONFIG_BT_HIDP=y > -CONFIG_BT_HCIBTUSB=y > -CONFIG_BT_HCIUART=y > -CONFIG_BT_HCIUART_ATH3K=y > -CONFIG_BT_HCIVHCI=y > -CONFIG_CFG80211=y > -CONFIG_RFKILL=y > -CONFIG_RFKILL_INPUT=y > -CONFIG_DEVTMPFS=y > -CONFIG_DEVTMPFS_MOUNT=y > -CONFIG_CONNECTOR=y > -CONFIG_MTD=y > -CONFIG_MTD_CHAR=y > -CONFIG_MTD_BLOCK=y > -CONFIG_MTD_CFI=y > -CONFIG_MTD_CFI_AMDSTD=y > -CONFIG_MTD_PHYSMAP=y > -CONFIG_MTD_M25P80=y > -CONFIG_MTD_NAND=y > -CONFIG_MTD_NAND_GPMI_NAND=y > -CONFIG_MTD_UBI=y > -CONFIG_BLK_DEV_LOOP=y > -CONFIG_MISC_DEVICES=y > -CONFIG_MXS_PERFMON=m > -CONFIG_BLK_DEV_SD=y > -CONFIG_SCSI_MULTI_LUN=y > -CONFIG_ATA=y > -# CONFIG_SATA_PMP is not set > -CONFIG_SATA_AHCI_PLATFORM=y > -CONFIG_NETDEVICES=y > -CONFIG_MICREL_PHY=y > -CONFIG_NET_ETHERNET=y > -CONFIG_SMSC911X=y > -CONFIG_FEC_NAPI=y > -# CONFIG_NETDEV_1000 is not set > -# CONFIG_NETDEV_10000 is not set > -CONFIG_ATH_COMMON=m > -CONFIG_ATH6KL=m > -CONFIG_HOSTAP=y > -CONFIG_INPUT_POLLDEV=y > -CONFIG_INPUT_EVDEV=y > -CONFIG_KEYBOARD_GPIO=y > -# CONFIG_INPUT_MOUSE is not set > -CONFIG_INPUT_TOUCHSCREEN=y > -CONFIG_TOUCHSCREEN_EGALAX=y > -CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH=y > -CONFIG_TOUCHSCREEN_ELAN=y > -CONFIG_TOUCHSCREEN_MAX11801=y > -CONFIG_INPUT_MISC=y > -CONFIG_INPUT_UINPUT=y > -CONFIG_INPUT_ISL29023=y > -CONFIG_VT_HW_CONSOLE_BINDING=y > -CONFIG_SERIAL_IMX=y > -CONFIG_SERIAL_IMX_CONSOLE=y > -CONFIG_FSL_OTP=y > -CONFIG_HW_RANDOM=y > -CONFIG_MXS_VIIM=y > -CONFIG_I2C=y > -CONFIG_I2C_CHARDEV=y > -CONFIG_I2C_IMX=y > -CONFIG_SPI=y > -CONFIG_SPI_IMX=y > -CONFIG_GPIO_SYSFS=y > -CONFIG_SABRESD_MAX8903=y > -CONFIG_SENSORS_MAX17135=y > -CONFIG_SENSORS_MAG3110=y > -# CONFIG_MXC_MMA8450 is not set > -CONFIG_WATCHDOG=y > -CONFIG_WATCHDOG_NOWAYOUT=y > -CONFIG_IMX2_WDT=y > -CONFIG_MFD_WM8994=y > -CONFIG_MFD_PFUZE=y > -CONFIG_MFD_MAX17135=y > -CONFIG_REGULATOR=y > -CONFIG_REGULATOR_FIXED_VOLTAGE=y > -CONFIG_REGULATOR_PFUZE100=y > -CONFIG_REGULATOR_MAX17135=y > -CONFIG_MEDIA_SUPPORT=y > -CONFIG_VIDEO_DEV=y > -# CONFIG_RC_CORE is not set > -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set > -CONFIG_VIDEO_MXC_CAMERA=m > -CONFIG_MXC_CAMERA_OV3640=m > -CONFIG_MXC_CAMERA_OV5640=m > -CONFIG_MXC_CAMERA_OV8820_MIPI=m > -CONFIG_MXC_CAMERA_OV5642=m > -CONFIG_MXC_TVIN_ADV7180=m > -CONFIG_MXC_CAMERA_OV5640_MIPI=m > -CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m > -CONFIG_USB_VIDEO_CLASS=m > -# CONFIG_RADIO_ADAPTERS is not set > -CONFIG_DRM=m > -CONFIG_DRM_VIVANTE=m > -CONFIG_FB=y > -CONFIG_BACKLIGHT_LCD_SUPPORT=y > -# CONFIG_LCD_CLASS_DEVICE is not set > -CONFIG_BACKLIGHT_CLASS_DEVICE=y > -# CONFIG_BACKLIGHT_GENERIC is not set > -CONFIG_BACKLIGHT_PWM=y > -CONFIG_FB_MXC_LDB=y > -CONFIG_FB_MXC_MIPI_DSI=y > -CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y > -CONFIG_FB_MXC_EINK_PANEL=y > -CONFIG_FB_MXC_HDMI=y > -CONFIG_FRAMEBUFFER_CONSOLE=y > -CONFIG_FONTS=y > -CONFIG_FONT_8x16=y > -CONFIG_LOGO=y > -CONFIG_SOUND=y > -CONFIG_SND=y > -CONFIG_SND_USB_AUDIO=y > -CONFIG_SND_SOC=y > -CONFIG_SND_IMX_SOC=y > -CONFIG_SND_SOC_IMX_SGTL5000=y > -CONFIG_SND_SOC_IMX_WM8962=y > -CONFIG_SND_SOC_IMX_CS42888=y > -CONFIG_SND_SOC_IMX_SPDIF=y > -CONFIG_SND_SOC_IMX_HDMI=y > -CONFIG_HIDRAW=y > -CONFIG_HID_A4TECH=m > -CONFIG_HID_APPLE=m > -CONFIG_HID_BELKIN=m > -CONFIG_HID_CHERRY=m > -CONFIG_HID_CHICONY=m > -CONFIG_HID_CYPRESS=m > -CONFIG_HID_EZKEY=m > -CONFIG_HID_GYRATION=m > -CONFIG_HID_LOGITECH=m > -CONFIG_HID_MICROSOFT=m > -CONFIG_HID_MONTEREY=m > -CONFIG_HID_PANTHERLORD=m > -CONFIG_HID_PETALYNX=m > -CONFIG_HID_SAMSUNG=m > -CONFIG_HID_SONY=m > -CONFIG_HID_SUNPLUS=m > -CONFIG_USB=y > -# CONFIG_USB_DEVICE_CLASS is not set > -CONFIG_USB_SUSPEND=y > -# CONFIG_USB_OTG_WHITELIST is not set > -CONFIG_USB_EHCI_HCD=y > -CONFIG_USB_EHCI_ARC=y > -CONFIG_USB_EHCI_ROOT_HUB_TT=y > -# CONFIG_USB_EHCI_TT_NEWSCHED is not set > -CONFIG_USB_STORAGE=y > -CONFIG_USB_GADGET=y > -CONFIG_USB_AUDIO=m > -CONFIG_USB_ETH=m > -CONFIG_USB_FILE_STORAGE=m > -CONFIG_USB_G_SERIAL=m > -CONFIG_MXC_OTG=y > -CONFIG_MMC=y > -CONFIG_MMC_UNSAFE_RESUME=y > -CONFIG_MMC_SDHCI=y > -CONFIG_MMC_SDHCI_PLTFM=y > -CONFIG_MMC_SDHCI_ESDHC_IMX=y > -CONFIG_NEW_LEDS=y > -CONFIG_LEDS_CLASS=y > -CONFIG_LEDS_GPIO=y > -CONFIG_LEDS_TRIGGERS=y > -CONFIG_LEDS_TRIGGER_GPIO=y > -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y > -CONFIG_RTC_CLASS=y > -CONFIG_RTC_INTF_DEV_UIE_EMUL=y > -CONFIG_RTC_DRV_SNVS=y > -CONFIG_DMADEVICES=y > -CONFIG_MXC_PXP_V2=y > -CONFIG_IMX_SDMA=y > -CONFIG_MXC_IPU=y > -# CONFIG_MXC_HMP4E is not set > -# CONFIG_MXC_HWEVENT is not set > -CONFIG_MXC_ASRC=y > -CONFIG_MXC_MLB150=m > -CONFIG_MXC_GPU_VIV=y > -CONFIG_MXC_MIPI_CSI2=y > -CONFIG_EXT2_FS=y > -CONFIG_EXT3_FS=y > -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > -CONFIG_EXT4_FS=y > -CONFIG_AUTOFS4_FS=m > -CONFIG_MSDOS_FS=y > -CONFIG_VFAT_FS=y > -CONFIG_TMPFS=y > -CONFIG_JFFS2_FS=y > -CONFIG_UBIFS_FS=y > -CONFIG_CRAMFS=y > -CONFIG_NFS_FS=y > -CONFIG_NFS_V3=y > -CONFIG_ROOT_NFS=y > -CONFIG_PARTITION_ADVANCED=y > -CONFIG_EFI_PARTITION=y > -CONFIG_NLS_CODEPAGE_437=y > -CONFIG_NLS_ASCII=m > -CONFIG_NLS_ISO8859_1=y > -CONFIG_NLS_UTF8=m > -CONFIG_MAGIC_SYSRQ=y > -CONFIG_SYSCTL_SYSCALL_CHECK=y > -# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set > -CONFIG_FTRACE=y > -# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set > -CONFIG_CRYPTO_TEST=m > -CONFIG_CRYPTO_CCM=y > -CONFIG_CRYPTO_GCM=y > -CONFIG_CRYPTO_CBC=y > -CONFIG_CRYPTO_CTS=y > -CONFIG_CRYPTO_LRW=y > -CONFIG_CRYPTO_PCBC=y > -CONFIG_CRYPTO_XTS=y > -CONFIG_CRYPTO_DES=y > -# CONFIG_CRYPTO_ANSI_CPRNG is not set > -CONFIG_CRYPTO_DEV_FSL_CAAM=y > -CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y > -CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y > -CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y > -CONFIG_CRC_CCITT=m > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig > deleted file mode 100644 > index 542e949..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig > +++ /dev/null > @@ -1,302 +0,0 @@ > -CONFIG_EXPERIMENTAL=y > -CONFIG_SYSVIPC=y > -CONFIG_IKCONFIG=y > -CONFIG_IKCONFIG_PROC=y > -CONFIG_LOG_BUF_SHIFT=14 > -CONFIG_CGROUPS=y > -CONFIG_EMBEDDED=y > -CONFIG_PERF_EVENTS=y > -CONFIG_KPROBES=y > -CONFIG_MODULES=y > -CONFIG_MODULE_UNLOAD=y > -CONFIG_MODULE_FORCE_UNLOAD=y > -CONFIG_MODVERSIONS=y > -# CONFIG_BLK_DEV_BSG is not set > -CONFIG_ARCH_MXC=y > -CONFIG_GPIO_PCA953X=y > -CONFIG_ARCH_MX6=y > -CONFIG_FORCE_MAX_ZONEORDER=14 > -CONFIG_MACH_MX6Q_ARM2=y > -CONFIG_MACH_MX6Q_SABRELITE=y > -CONFIG_MACH_MX6Q_SABRESD=y > -CONFIG_MACH_MX6Q_SABREAUTO=y > -CONFIG_MACH_MX6Q_HDMIDONGLE=y > -CONFIG_USB_EHCI_ARC_H1=y > -CONFIG_USB_FSL_ARC_OTG=y > -CONFIG_MXC_PWM=y > -CONFIG_MXC_REBOOT_MFGMODE=y > -CONFIG_CLK_DEBUG=y > -CONFIG_DMA_ZONE_SIZE=184 > -# CONFIG_SWP_EMULATE is not set > -CONFIG_ARM_ERRATA_743622=y > -CONFIG_ARM_ERRATA_751472=y > -CONFIG_ARM_ERRATA_754322=y > -CONFIG_ARM_ERRATA_764369=y > -CONFIG_NO_HZ=y > -CONFIG_HIGH_RES_TIMERS=y > -CONFIG_SMP=y > -CONFIG_VMSPLIT_2G=y > -CONFIG_PREEMPT=y > -CONFIG_AEABI=y > -# CONFIG_OABI_COMPAT is not set > -CONFIG_HIGHMEM=y > -CONFIG_COMPACTION=y > -CONFIG_KSM=y > -CONFIG_ZBOOT_ROM_TEXT=0x0 > -CONFIG_ZBOOT_ROM_BSS=0x0 > -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" > -CONFIG_CPU_FREQ=y > -CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y > -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y > -CONFIG_CPU_FREQ_GOV_POWERSAVE=y > -CONFIG_CPU_FREQ_GOV_USERSPACE=y > -CONFIG_CPU_FREQ_GOV_ONDEMAND=y > -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y > -CONFIG_CPU_FREQ_IMX=y > -CONFIG_VFP=y > -CONFIG_NEON=y > -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set > -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y > -CONFIG_PM_RUNTIME=y > -CONFIG_PM_DEBUG=y > -CONFIG_APM_EMULATION=y > -CONFIG_NET=y > -CONFIG_PACKET=y > -CONFIG_UNIX=y > -CONFIG_INET=y > -CONFIG_IP_MULTICAST=y > -CONFIG_IP_PNP=y > -CONFIG_IP_PNP_DHCP=y > -CONFIG_IP_PNP_BOOTP=y > -# CONFIG_INET_LRO is not set > -# CONFIG_IPV6 is not set > -CONFIG_NETFILTER=y > -CONFIG_LLC2=y > -CONFIG_CAN=y > -CONFIG_CAN_RAW=y > -CONFIG_CAN_BCM=y > -CONFIG_CAN_VCAN=y > -CONFIG_CAN_FLEXCAN=y > -CONFIG_BT=y > -CONFIG_BT_L2CAP=y > -CONFIG_BT_SCO=y > -CONFIG_BT_RFCOMM=y > -CONFIG_BT_RFCOMM_TTY=y > -CONFIG_BT_BNEP=y > -CONFIG_BT_BNEP_MC_FILTER=y > -CONFIG_BT_BNEP_PROTO_FILTER=y > -CONFIG_BT_HIDP=y > -CONFIG_BT_HCIBTUSB=y > -CONFIG_BT_HCIUART=y > -CONFIG_BT_HCIUART_ATH3K=y > -CONFIG_BT_HCIVHCI=y > -CONFIG_CFG80211=y > -CONFIG_RFKILL=y > -CONFIG_RFKILL_INPUT=y > -CONFIG_DEVTMPFS=y > -CONFIG_DEVTMPFS_MOUNT=y > -CONFIG_CONNECTOR=y > -CONFIG_MTD=y > -CONFIG_MTD_CHAR=y > -CONFIG_MTD_BLOCK=y > -CONFIG_MTD_CFI=y > -CONFIG_MTD_CFI_AMDSTD=y > -CONFIG_MTD_PHYSMAP=y > -CONFIG_MTD_M25P80=y > -CONFIG_MTD_NAND=y > -CONFIG_MTD_NAND_GPMI_NAND=y > -CONFIG_MTD_UBI=y > -CONFIG_BLK_DEV_LOOP=y > -CONFIG_MISC_DEVICES=y > -CONFIG_MXS_PERFMON=m > -CONFIG_BLK_DEV_SD=y > -CONFIG_SCSI_MULTI_LUN=y > -CONFIG_ATA=y > -# CONFIG_SATA_PMP is not set > -CONFIG_SATA_AHCI_PLATFORM=y > -CONFIG_NETDEVICES=y > -CONFIG_MICREL_PHY=y > -CONFIG_NET_ETHERNET=y > -CONFIG_SMSC911X=y > -CONFIG_FEC_NAPI=y > -# CONFIG_NETDEV_1000 is not set > -# CONFIG_NETDEV_10000 is not set > -CONFIG_ATH_COMMON=m > -CONFIG_ATH6KL=m > -CONFIG_HOSTAP=y > -CONFIG_INPUT_POLLDEV=y > -CONFIG_INPUT_EVDEV=y > -CONFIG_KEYBOARD_GPIO=y > -# CONFIG_INPUT_MOUSE is not set > -CONFIG_INPUT_TOUCHSCREEN=y > -CONFIG_TOUCHSCREEN_EGALAX=y > -CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH=y > -CONFIG_TOUCHSCREEN_ELAN=y > -CONFIG_TOUCHSCREEN_MAX11801=y > -CONFIG_INPUT_MISC=y > -CONFIG_INPUT_UINPUT=y > -CONFIG_INPUT_ISL29023=y > -CONFIG_VT_HW_CONSOLE_BINDING=y > -CONFIG_SERIAL_IMX=y > -CONFIG_SERIAL_IMX_CONSOLE=y > -CONFIG_FSL_OTP=y > -CONFIG_HW_RANDOM=y > -CONFIG_MXS_VIIM=y > -CONFIG_I2C=y > -CONFIG_I2C_CHARDEV=y > -CONFIG_I2C_IMX=y > -CONFIG_SPI=y > -CONFIG_SPI_IMX=y > -CONFIG_GPIO_SYSFS=y > -CONFIG_SABRESD_MAX8903=y > -CONFIG_SENSORS_MAX17135=y > -CONFIG_SENSORS_MAG3110=y > -# CONFIG_MXC_MMA8450 is not set > -CONFIG_WATCHDOG=y > -CONFIG_WATCHDOG_NOWAYOUT=y > -CONFIG_IMX2_WDT=y > -CONFIG_MFD_WM8994=y > -CONFIG_MFD_PFUZE=y > -CONFIG_MFD_MAX17135=y > -CONFIG_REGULATOR=y > -CONFIG_REGULATOR_FIXED_VOLTAGE=y > -CONFIG_REGULATOR_PFUZE100=y > -CONFIG_REGULATOR_MAX17135=y > -CONFIG_MEDIA_SUPPORT=y > -CONFIG_VIDEO_DEV=y > -# CONFIG_RC_CORE is not set > -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set > -CONFIG_VIDEO_MXC_CAMERA=m > -CONFIG_MXC_CAMERA_OV3640=m > -CONFIG_MXC_CAMERA_OV5640=m > -CONFIG_MXC_CAMERA_OV8820_MIPI=m > -CONFIG_MXC_CAMERA_OV5642=m > -CONFIG_MXC_TVIN_ADV7180=m > -CONFIG_MXC_CAMERA_OV5640_MIPI=m > -CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m > -CONFIG_USB_VIDEO_CLASS=m > -# CONFIG_RADIO_ADAPTERS is not set > -CONFIG_DRM=m > -CONFIG_DRM_VIVANTE=m > -CONFIG_FB=y > -CONFIG_BACKLIGHT_LCD_SUPPORT=y > -# CONFIG_LCD_CLASS_DEVICE is not set > -CONFIG_BACKLIGHT_CLASS_DEVICE=y > -# CONFIG_BACKLIGHT_GENERIC is not set > -CONFIG_BACKLIGHT_PWM=y > -CONFIG_FB_MXC_LDB=y > -CONFIG_FB_MXC_MIPI_DSI=y > -CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y > -CONFIG_FB_MXC_EINK_PANEL=y > -CONFIG_FB_MXC_HDMI=y > -CONFIG_FRAMEBUFFER_CONSOLE=y > -CONFIG_FONTS=y > -CONFIG_FONT_8x16=y > -CONFIG_LOGO=y > -CONFIG_SOUND=y > -CONFIG_SND=y > -CONFIG_SND_USB_AUDIO=y > -CONFIG_SND_SOC=y > -CONFIG_SND_IMX_SOC=y > -CONFIG_SND_SOC_IMX_SGTL5000=y > -CONFIG_SND_SOC_IMX_WM8962=y > -CONFIG_SND_SOC_IMX_CS42888=y > -CONFIG_SND_SOC_IMX_SPDIF=y > -CONFIG_SND_SOC_IMX_HDMI=y > -CONFIG_HIDRAW=y > -CONFIG_HID_A4TECH=m > -CONFIG_HID_APPLE=m > -CONFIG_HID_BELKIN=m > -CONFIG_HID_CHERRY=m > -CONFIG_HID_CHICONY=m > -CONFIG_HID_CYPRESS=m > -CONFIG_HID_EZKEY=m > -CONFIG_HID_GYRATION=m > -CONFIG_HID_LOGITECH=m > -CONFIG_HID_MICROSOFT=m > -CONFIG_HID_MONTEREY=m > -CONFIG_HID_PANTHERLORD=m > -CONFIG_HID_PETALYNX=m > -CONFIG_HID_SAMSUNG=m > -CONFIG_HID_SONY=m > -CONFIG_HID_SUNPLUS=m > -CONFIG_USB=y > -# CONFIG_USB_DEVICE_CLASS is not set > -CONFIG_USB_SUSPEND=y > -# CONFIG_USB_OTG_WHITELIST is not set > -CONFIG_USB_EHCI_HCD=y > -CONFIG_USB_EHCI_ARC=y > -CONFIG_USB_EHCI_ROOT_HUB_TT=y > -# CONFIG_USB_EHCI_TT_NEWSCHED is not set > -CONFIG_USB_STORAGE=y > -CONFIG_USB_GADGET=y > -CONFIG_USB_AUDIO=m > -CONFIG_USB_ETH=m > -CONFIG_USB_FILE_STORAGE=m > -CONFIG_USB_G_SERIAL=m > -CONFIG_MXC_OTG=y > -CONFIG_MMC=y > -CONFIG_MMC_UNSAFE_RESUME=y > -CONFIG_MMC_SDHCI=y > -CONFIG_MMC_SDHCI_PLTFM=y > -CONFIG_MMC_SDHCI_ESDHC_IMX=y > -CONFIG_NEW_LEDS=y > -CONFIG_LEDS_CLASS=y > -CONFIG_LEDS_GPIO=y > -CONFIG_LEDS_TRIGGERS=y > -CONFIG_LEDS_TRIGGER_GPIO=y > -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y > -CONFIG_RTC_CLASS=y > -CONFIG_RTC_INTF_DEV_UIE_EMUL=y > -CONFIG_RTC_DRV_SNVS=y > -CONFIG_DMADEVICES=y > -CONFIG_MXC_PXP_V2=y > -CONFIG_IMX_SDMA=y > -CONFIG_MXC_IPU=y > -# CONFIG_MXC_HMP4E is not set > -# CONFIG_MXC_HWEVENT is not set > -CONFIG_MXC_ASRC=y > -CONFIG_MXC_MLB150=m > -CONFIG_MXC_GPU_VIV=y > -CONFIG_MXC_MIPI_CSI2=y > -CONFIG_EXT2_FS=y > -CONFIG_EXT3_FS=y > -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > -CONFIG_EXT4_FS=y > -CONFIG_AUTOFS4_FS=m > -CONFIG_MSDOS_FS=y > -CONFIG_VFAT_FS=y > -CONFIG_TMPFS=y > -CONFIG_JFFS2_FS=y > -CONFIG_UBIFS_FS=y > -CONFIG_CRAMFS=y > -CONFIG_NFS_FS=y > -CONFIG_NFS_V3=y > -CONFIG_ROOT_NFS=y > -CONFIG_PARTITION_ADVANCED=y > -CONFIG_EFI_PARTITION=y > -CONFIG_NLS_CODEPAGE_437=y > -CONFIG_NLS_ASCII=m > -CONFIG_NLS_ISO8859_1=y > -CONFIG_NLS_UTF8=m > -CONFIG_MAGIC_SYSRQ=y > -CONFIG_DEBUG_FS=y > -CONFIG_SYSCTL_SYSCALL_CHECK=y > -# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set > -CONFIG_FTRACE=y > -# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set > -CONFIG_CRYPTO_TEST=m > -CONFIG_CRYPTO_CCM=y > -CONFIG_CRYPTO_GCM=y > -CONFIG_CRYPTO_CBC=y > -CONFIG_CRYPTO_CTS=y > -CONFIG_CRYPTO_LRW=y > -CONFIG_CRYPTO_PCBC=y > -CONFIG_CRYPTO_XTS=y > -CONFIG_CRYPTO_DES=y > -# CONFIG_CRYPTO_ANSI_CPRNG is not set > -CONFIG_CRYPTO_DEV_FSL_CAAM=y > -CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y > -CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y > -CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y > -CONFIG_CRC_CCITT=m > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig > deleted file mode 100644 > index b8f88f7..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig > +++ /dev/null > @@ -1,267 +0,0 @@ > -CONFIG_ARM_PATCH_PHYS_VIRT=y > -CONFIG_EXPERIMENTAL=y > -CONFIG_SYSVIPC=y > -CONFIG_IKCONFIG=y > -CONFIG_IKCONFIG_PROC=y > -CONFIG_LOG_BUF_SHIFT=14 > -CONFIG_CGROUPS=y > -CONFIG_EMBEDDED=y > -CONFIG_PERF_EVENTS=y > -CONFIG_KPROBES=y > -CONFIG_MODULES=y > -CONFIG_MODULE_UNLOAD=y > -CONFIG_MODULE_FORCE_UNLOAD=y > -CONFIG_MODVERSIONS=y > -# CONFIG_BLK_DEV_BSG is not set > -CONFIG_ARCH_MXC=y > -CONFIG_GPIO_PCA953X=y > -CONFIG_ARCH_MX6=y > -CONFIG_FORCE_MAX_ZONEORDER=14 > -CONFIG_MACH_MX6Q_ARM2=y > -CONFIG_MACH_MX6SL_ARM2=y > -CONFIG_MACH_MX6SL_EVK=y > -CONFIG_MACH_MX6Q_SABRESD=y > -CONFIG_USB_EHCI_ARC_H1=y > -CONFIG_MX6_INTER_LDO_BYPASS=y > -CONFIG_MXC_PWM=y > -CONFIG_CLK_DEBUG=y > -CONFIG_DMA_ZONE_SIZE=184 > -CONFIG_ARM_ERRATA_743622=y > -CONFIG_ARM_ERRATA_754322=y > -CONFIG_NO_HZ=y > -CONFIG_HIGH_RES_TIMERS=y > -CONFIG_VMSPLIT_2G=y > -CONFIG_PREEMPT=y > -CONFIG_AEABI=y > -# CONFIG_OABI_COMPAT is not set > -CONFIG_HIGHMEM=y > -CONFIG_COMPACTION=y > -CONFIG_KSM=y > -CONFIG_ZBOOT_ROM_TEXT=0x0 > -CONFIG_ZBOOT_ROM_BSS=0x0 > -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" > -CONFIG_AUTO_ZRELADDR=y > -CONFIG_CPU_FREQ=y > -CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y > -CONFIG_CPU_FREQ_GOV_POWERSAVE=y > -CONFIG_CPU_FREQ_GOV_USERSPACE=y > -# CONFIG_CPU_FREQ_IMX is not set > -CONFIG_VFP=y > -CONFIG_NEON=y > -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set > -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y > -CONFIG_PM_RUNTIME=y > -CONFIG_PM_DEBUG=y > -CONFIG_APM_EMULATION=y > -CONFIG_NET=y > -CONFIG_PACKET=y > -CONFIG_UNIX=y > -CONFIG_INET=y > -CONFIG_IP_MULTICAST=y > -CONFIG_IP_PNP=y > -CONFIG_IP_PNP_DHCP=y > -CONFIG_IP_PNP_BOOTP=y > -# CONFIG_INET_LRO is not set > -# CONFIG_IPV6 is not set > -CONFIG_NETFILTER=y > -CONFIG_LLC2=y > -CONFIG_CAN=y > -CONFIG_CAN_RAW=y > -CONFIG_CAN_BCM=y > -CONFIG_CAN_VCAN=y > -CONFIG_CAN_FLEXCAN=y > -CONFIG_BT=y > -CONFIG_BT_L2CAP=y > -CONFIG_BT_SCO=y > -CONFIG_BT_RFCOMM=y > -CONFIG_BT_RFCOMM_TTY=y > -CONFIG_BT_BNEP=y > -CONFIG_BT_BNEP_MC_FILTER=y > -CONFIG_BT_BNEP_PROTO_FILTER=y > -CONFIG_BT_HIDP=y > -CONFIG_BT_HCIBTUSB=y > -CONFIG_BT_HCIUART=y > -CONFIG_BT_HCIUART_ATH3K=y > -CONFIG_BT_HCIVHCI=y > -CONFIG_CFG80211=y > -CONFIG_RFKILL=y > -CONFIG_RFKILL_INPUT=y > -CONFIG_UEVENT_HELPER_PATH="" > -CONFIG_DEVTMPFS=y > -CONFIG_DEVTMPFS_MOUNT=y > -CONFIG_CONNECTOR=y > -CONFIG_MTD=y > -CONFIG_MTD_CMDLINE_PARTS=y > -CONFIG_MTD_CHAR=y > -CONFIG_MTD_BLOCK=y > -CONFIG_MTD_M25P80=y > -CONFIG_MTD_NAND=y > -CONFIG_MTD_UBI=y > -CONFIG_BLK_DEV_LOOP=y > -CONFIG_MISC_DEVICES=y > -CONFIG_MXS_PERFMON=m > -CONFIG_BLK_DEV_SD=y > -CONFIG_SCSI_MULTI_LUN=y > -CONFIG_ATA=y > -# CONFIG_SATA_PMP is not set > -CONFIG_SATA_AHCI_PLATFORM=y > -CONFIG_NETDEVICES=y > -CONFIG_MICREL_PHY=y > -CONFIG_NET_ETHERNET=y > -CONFIG_SMSC911X=y > -# CONFIG_NETDEV_1000 is not set > -# CONFIG_NETDEV_10000 is not set > -CONFIG_ATH_COMMON=m > -CONFIG_ATH6KL=m > -CONFIG_HOSTAP=y > -CONFIG_INPUT_POLLDEV=y > -CONFIG_INPUT_EVDEV=y > -CONFIG_KEYBOARD_GPIO=y > -CONFIG_KEYBOARD_IMX=y > -# CONFIG_INPUT_MOUSE is not set > -CONFIG_INPUT_TOUCHSCREEN=y > -CONFIG_TOUCHSCREEN_EGALAX=y > -CONFIG_TOUCHSCREEN_ELAN=y > -CONFIG_INPUT_MISC=y > -CONFIG_INPUT_UINPUT=y > -CONFIG_INPUT_ISL29023=y > -CONFIG_SERIAL_IMX=y > -CONFIG_SERIAL_IMX_CONSOLE=y > -CONFIG_FSL_OTP=y > -CONFIG_HW_RANDOM=y > -CONFIG_HW_RANDOM_FSL_RNGC=y > -CONFIG_MXS_VIIM=y > -CONFIG_I2C=y > -CONFIG_I2C_CHARDEV=y > -CONFIG_I2C_IMX=y > -CONFIG_SPI=y > -CONFIG_SPI_IMX=y > -CONFIG_GPIO_SYSFS=y > -CONFIG_SABRESD_MAX8903=y > -CONFIG_SENSORS_MAX17135=y > -CONFIG_SENSORS_MAG3110=y > -# CONFIG_MXC_MMA8451 is not set > -CONFIG_WATCHDOG=y > -CONFIG_WATCHDOG_NOWAYOUT=y > -CONFIG_IMX2_WDT=y > -CONFIG_MFD_WM8994=y > -CONFIG_MFD_PFUZE=y > -CONFIG_MFD_MAX17135=y > -CONFIG_REGULATOR=y > -CONFIG_REGULATOR_FIXED_VOLTAGE=y > -CONFIG_REGULATOR_PFUZE100=y > -CONFIG_REGULATOR_MAX17135=y > -CONFIG_MEDIA_SUPPORT=y > -CONFIG_VIDEO_DEV=y > -# CONFIG_RC_CORE is not set > -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set > -CONFIG_VIDEO_MXC_CSI_CAMERA=y > -CONFIG_MXC_CAMERA_OV5640=y > -CONFIG_VIDEO_MXC_PXP_V4L2=y > -CONFIG_USB_VIDEO_CLASS=m > -# CONFIG_RADIO_ADAPTERS is not set > -CONFIG_FB=y > -CONFIG_BACKLIGHT_LCD_SUPPORT=y > -# CONFIG_LCD_CLASS_DEVICE is not set > -CONFIG_BACKLIGHT_CLASS_DEVICE=y > -# CONFIG_BACKLIGHT_GENERIC is not set > -CONFIG_BACKLIGHT_PWM=y > -CONFIG_FB_MXC_SEIKO_WVGA_SYNC_PANEL=y > -CONFIG_FB_MXC_SII902X_ELCDIF=y > -CONFIG_FB_MXC_EINK_PANEL=y > -CONFIG_FB_MXC_ELCDIF_FB=y > -CONFIG_FRAMEBUFFER_CONSOLE=y > -CONFIG_FONTS=y > -CONFIG_FONT_8x16=y > -CONFIG_LOGO=y > -CONFIG_SOUND=y > -CONFIG_SND=y > -CONFIG_SND_USB_AUDIO=y > -CONFIG_SND_SOC=y > -CONFIG_SND_IMX_SOC=y > -CONFIG_SND_SOC_IMX_SGTL5000=y > -CONFIG_SND_SOC_IMX_WM8958=y > -CONFIG_SND_SOC_IMX_WM8962=y > -CONFIG_SND_SOC_IMX_CS42888=y > -CONFIG_SND_SOC_IMX_SPDIF=y > -CONFIG_SND_SOC_IMX_HDMI=y > -CONFIG_HIDRAW=y > -CONFIG_HID_A4TECH=m > -CONFIG_HID_APPLE=m > -CONFIG_HID_BELKIN=m > -CONFIG_HID_CHERRY=m > -CONFIG_HID_CHICONY=m > -CONFIG_HID_CYPRESS=m > -CONFIG_HID_EZKEY=m > -CONFIG_HID_GYRATION=m > -CONFIG_HID_LOGITECH=m > -CONFIG_HID_MICROSOFT=m > -CONFIG_HID_MONTEREY=m > -CONFIG_HID_PANTHERLORD=m > -CONFIG_HID_PETALYNX=m > -CONFIG_HID_SAMSUNG=m > -CONFIG_HID_SONY=m > -CONFIG_HID_SUNPLUS=m > -CONFIG_USB=y > -# CONFIG_USB_DEVICE_CLASS is not set > -CONFIG_USB_SUSPEND=y > -# CONFIG_USB_OTG_WHITELIST is not set > -CONFIG_USB_EHCI_HCD=y > -CONFIG_USB_EHCI_ARC=y > -CONFIG_USB_EHCI_ROOT_HUB_TT=y > -# CONFIG_USB_EHCI_TT_NEWSCHED is not set > -CONFIG_USB_STORAGE=y > -CONFIG_USB_GADGET=y > -CONFIG_USB_AUDIO=m > -CONFIG_USB_ETH=m > -CONFIG_USB_FILE_STORAGE=m > -CONFIG_USB_G_SERIAL=m > -CONFIG_MXC_OTG=y > -CONFIG_MMC=y > -CONFIG_MMC_UNSAFE_RESUME=y > -CONFIG_MMC_SDHCI=y > -CONFIG_MMC_SDHCI_PLTFM=y > -CONFIG_MMC_SDHCI_ESDHC_IMX=y > -CONFIG_NEW_LEDS=y > -CONFIG_LEDS_CLASS=y > -CONFIG_RTC_CLASS=y > -CONFIG_RTC_INTF_DEV_UIE_EMUL=y > -CONFIG_RTC_DRV_SNVS=y > -CONFIG_DMADEVICES=y > -CONFIG_MXC_PXP_V2=y > -CONFIG_IMX_SDMA=y > -# CONFIG_MXC_HMP4E is not set > -# CONFIG_MXC_HWEVENT is not set > -CONFIG_MXC_ASRC=y > -CONFIG_MXC_MLB150=m > -CONFIG_MXC_GPU_VIV=y > -CONFIG_MXC_MIPI_CSI2=y > -CONFIG_EXT2_FS=y > -CONFIG_EXT3_FS=y > -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > -CONFIG_EXT4_FS=y > -CONFIG_AUTOFS4_FS=m > -CONFIG_MSDOS_FS=y > -CONFIG_VFAT_FS=y > -CONFIG_TMPFS=y > -CONFIG_JFFS2_FS=y > -CONFIG_UBIFS_FS=y > -CONFIG_CRAMFS=y > -CONFIG_NFS_FS=y > -CONFIG_NFS_V3=y > -CONFIG_ROOT_NFS=y > -CONFIG_PARTITION_ADVANCED=y > -CONFIG_EFI_PARTITION=y > -CONFIG_NLS_CODEPAGE_437=y > -CONFIG_NLS_ASCII=m > -CONFIG_NLS_ISO8859_1=y > -CONFIG_NLS_UTF8=m > -CONFIG_DEBUG_FS=y > -CONFIG_SYSCTL_SYSCALL_CHECK=y > -CONFIG_FTRACE=y > -CONFIG_CRYPTO_AUTHENC=m > -CONFIG_CRYPTO_TEST=m > -CONFIG_CRYPTO_CBC=y > -# CONFIG_CRYPTO_ANSI_CPRNG is not set > -CONFIG_CRYPTO_DEV_DCP=y > -CONFIG_CRC_CCITT=m > diff --git a/recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig > deleted file mode 100644 > index b8f88f7..0000000 > --- a/recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig > +++ /dev/null > @@ -1,267 +0,0 @@ > -CONFIG_ARM_PATCH_PHYS_VIRT=y > -CONFIG_EXPERIMENTAL=y > -CONFIG_SYSVIPC=y > -CONFIG_IKCONFIG=y > -CONFIG_IKCONFIG_PROC=y > -CONFIG_LOG_BUF_SHIFT=14 > -CONFIG_CGROUPS=y > -CONFIG_EMBEDDED=y > -CONFIG_PERF_EVENTS=y > -CONFIG_KPROBES=y > -CONFIG_MODULES=y > -CONFIG_MODULE_UNLOAD=y > -CONFIG_MODULE_FORCE_UNLOAD=y > -CONFIG_MODVERSIONS=y > -# CONFIG_BLK_DEV_BSG is not set > -CONFIG_ARCH_MXC=y > -CONFIG_GPIO_PCA953X=y > -CONFIG_ARCH_MX6=y > -CONFIG_FORCE_MAX_ZONEORDER=14 > -CONFIG_MACH_MX6Q_ARM2=y > -CONFIG_MACH_MX6SL_ARM2=y > -CONFIG_MACH_MX6SL_EVK=y > -CONFIG_MACH_MX6Q_SABRESD=y > -CONFIG_USB_EHCI_ARC_H1=y > -CONFIG_MX6_INTER_LDO_BYPASS=y > -CONFIG_MXC_PWM=y > -CONFIG_CLK_DEBUG=y > -CONFIG_DMA_ZONE_SIZE=184 > -CONFIG_ARM_ERRATA_743622=y > -CONFIG_ARM_ERRATA_754322=y > -CONFIG_NO_HZ=y > -CONFIG_HIGH_RES_TIMERS=y > -CONFIG_VMSPLIT_2G=y > -CONFIG_PREEMPT=y > -CONFIG_AEABI=y > -# CONFIG_OABI_COMPAT is not set > -CONFIG_HIGHMEM=y > -CONFIG_COMPACTION=y > -CONFIG_KSM=y > -CONFIG_ZBOOT_ROM_TEXT=0x0 > -CONFIG_ZBOOT_ROM_BSS=0x0 > -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off" > -CONFIG_AUTO_ZRELADDR=y > -CONFIG_CPU_FREQ=y > -CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y > -CONFIG_CPU_FREQ_GOV_POWERSAVE=y > -CONFIG_CPU_FREQ_GOV_USERSPACE=y > -# CONFIG_CPU_FREQ_IMX is not set > -CONFIG_VFP=y > -CONFIG_NEON=y > -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set > -CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y > -CONFIG_PM_RUNTIME=y > -CONFIG_PM_DEBUG=y > -CONFIG_APM_EMULATION=y > -CONFIG_NET=y > -CONFIG_PACKET=y > -CONFIG_UNIX=y > -CONFIG_INET=y > -CONFIG_IP_MULTICAST=y > -CONFIG_IP_PNP=y > -CONFIG_IP_PNP_DHCP=y > -CONFIG_IP_PNP_BOOTP=y > -# CONFIG_INET_LRO is not set > -# CONFIG_IPV6 is not set > -CONFIG_NETFILTER=y > -CONFIG_LLC2=y > -CONFIG_CAN=y > -CONFIG_CAN_RAW=y > -CONFIG_CAN_BCM=y > -CONFIG_CAN_VCAN=y > -CONFIG_CAN_FLEXCAN=y > -CONFIG_BT=y > -CONFIG_BT_L2CAP=y > -CONFIG_BT_SCO=y > -CONFIG_BT_RFCOMM=y > -CONFIG_BT_RFCOMM_TTY=y > -CONFIG_BT_BNEP=y > -CONFIG_BT_BNEP_MC_FILTER=y > -CONFIG_BT_BNEP_PROTO_FILTER=y > -CONFIG_BT_HIDP=y > -CONFIG_BT_HCIBTUSB=y > -CONFIG_BT_HCIUART=y > -CONFIG_BT_HCIUART_ATH3K=y > -CONFIG_BT_HCIVHCI=y > -CONFIG_CFG80211=y > -CONFIG_RFKILL=y > -CONFIG_RFKILL_INPUT=y > -CONFIG_UEVENT_HELPER_PATH="" > -CONFIG_DEVTMPFS=y > -CONFIG_DEVTMPFS_MOUNT=y > -CONFIG_CONNECTOR=y > -CONFIG_MTD=y > -CONFIG_MTD_CMDLINE_PARTS=y > -CONFIG_MTD_CHAR=y > -CONFIG_MTD_BLOCK=y > -CONFIG_MTD_M25P80=y > -CONFIG_MTD_NAND=y > -CONFIG_MTD_UBI=y > -CONFIG_BLK_DEV_LOOP=y > -CONFIG_MISC_DEVICES=y > -CONFIG_MXS_PERFMON=m > -CONFIG_BLK_DEV_SD=y > -CONFIG_SCSI_MULTI_LUN=y > -CONFIG_ATA=y > -# CONFIG_SATA_PMP is not set > -CONFIG_SATA_AHCI_PLATFORM=y > -CONFIG_NETDEVICES=y > -CONFIG_MICREL_PHY=y > -CONFIG_NET_ETHERNET=y > -CONFIG_SMSC911X=y > -# CONFIG_NETDEV_1000 is not set > -# CONFIG_NETDEV_10000 is not set > -CONFIG_ATH_COMMON=m > -CONFIG_ATH6KL=m > -CONFIG_HOSTAP=y > -CONFIG_INPUT_POLLDEV=y > -CONFIG_INPUT_EVDEV=y > -CONFIG_KEYBOARD_GPIO=y > -CONFIG_KEYBOARD_IMX=y > -# CONFIG_INPUT_MOUSE is not set > -CONFIG_INPUT_TOUCHSCREEN=y > -CONFIG_TOUCHSCREEN_EGALAX=y > -CONFIG_TOUCHSCREEN_ELAN=y > -CONFIG_INPUT_MISC=y > -CONFIG_INPUT_UINPUT=y > -CONFIG_INPUT_ISL29023=y > -CONFIG_SERIAL_IMX=y > -CONFIG_SERIAL_IMX_CONSOLE=y > -CONFIG_FSL_OTP=y > -CONFIG_HW_RANDOM=y > -CONFIG_HW_RANDOM_FSL_RNGC=y > -CONFIG_MXS_VIIM=y > -CONFIG_I2C=y > -CONFIG_I2C_CHARDEV=y > -CONFIG_I2C_IMX=y > -CONFIG_SPI=y > -CONFIG_SPI_IMX=y > -CONFIG_GPIO_SYSFS=y > -CONFIG_SABRESD_MAX8903=y > -CONFIG_SENSORS_MAX17135=y > -CONFIG_SENSORS_MAG3110=y > -# CONFIG_MXC_MMA8451 is not set > -CONFIG_WATCHDOG=y > -CONFIG_WATCHDOG_NOWAYOUT=y > -CONFIG_IMX2_WDT=y > -CONFIG_MFD_WM8994=y > -CONFIG_MFD_PFUZE=y > -CONFIG_MFD_MAX17135=y > -CONFIG_REGULATOR=y > -CONFIG_REGULATOR_FIXED_VOLTAGE=y > -CONFIG_REGULATOR_PFUZE100=y > -CONFIG_REGULATOR_MAX17135=y > -CONFIG_MEDIA_SUPPORT=y > -CONFIG_VIDEO_DEV=y > -# CONFIG_RC_CORE is not set > -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set > -CONFIG_VIDEO_MXC_CSI_CAMERA=y > -CONFIG_MXC_CAMERA_OV5640=y > -CONFIG_VIDEO_MXC_PXP_V4L2=y > -CONFIG_USB_VIDEO_CLASS=m > -# CONFIG_RADIO_ADAPTERS is not set > -CONFIG_FB=y > -CONFIG_BACKLIGHT_LCD_SUPPORT=y > -# CONFIG_LCD_CLASS_DEVICE is not set > -CONFIG_BACKLIGHT_CLASS_DEVICE=y > -# CONFIG_BACKLIGHT_GENERIC is not set > -CONFIG_BACKLIGHT_PWM=y > -CONFIG_FB_MXC_SEIKO_WVGA_SYNC_PANEL=y > -CONFIG_FB_MXC_SII902X_ELCDIF=y > -CONFIG_FB_MXC_EINK_PANEL=y > -CONFIG_FB_MXC_ELCDIF_FB=y > -CONFIG_FRAMEBUFFER_CONSOLE=y > -CONFIG_FONTS=y > -CONFIG_FONT_8x16=y > -CONFIG_LOGO=y > -CONFIG_SOUND=y > -CONFIG_SND=y > -CONFIG_SND_USB_AUDIO=y > -CONFIG_SND_SOC=y > -CONFIG_SND_IMX_SOC=y > -CONFIG_SND_SOC_IMX_SGTL5000=y > -CONFIG_SND_SOC_IMX_WM8958=y > -CONFIG_SND_SOC_IMX_WM8962=y > -CONFIG_SND_SOC_IMX_CS42888=y > -CONFIG_SND_SOC_IMX_SPDIF=y > -CONFIG_SND_SOC_IMX_HDMI=y > -CONFIG_HIDRAW=y > -CONFIG_HID_A4TECH=m > -CONFIG_HID_APPLE=m > -CONFIG_HID_BELKIN=m > -CONFIG_HID_CHERRY=m > -CONFIG_HID_CHICONY=m > -CONFIG_HID_CYPRESS=m > -CONFIG_HID_EZKEY=m > -CONFIG_HID_GYRATION=m > -CONFIG_HID_LOGITECH=m > -CONFIG_HID_MICROSOFT=m > -CONFIG_HID_MONTEREY=m > -CONFIG_HID_PANTHERLORD=m > -CONFIG_HID_PETALYNX=m > -CONFIG_HID_SAMSUNG=m > -CONFIG_HID_SONY=m > -CONFIG_HID_SUNPLUS=m > -CONFIG_USB=y > -# CONFIG_USB_DEVICE_CLASS is not set > -CONFIG_USB_SUSPEND=y > -# CONFIG_USB_OTG_WHITELIST is not set > -CONFIG_USB_EHCI_HCD=y > -CONFIG_USB_EHCI_ARC=y > -CONFIG_USB_EHCI_ROOT_HUB_TT=y > -# CONFIG_USB_EHCI_TT_NEWSCHED is not set > -CONFIG_USB_STORAGE=y > -CONFIG_USB_GADGET=y > -CONFIG_USB_AUDIO=m > -CONFIG_USB_ETH=m > -CONFIG_USB_FILE_STORAGE=m > -CONFIG_USB_G_SERIAL=m > -CONFIG_MXC_OTG=y > -CONFIG_MMC=y > -CONFIG_MMC_UNSAFE_RESUME=y > -CONFIG_MMC_SDHCI=y > -CONFIG_MMC_SDHCI_PLTFM=y > -CONFIG_MMC_SDHCI_ESDHC_IMX=y > -CONFIG_NEW_LEDS=y > -CONFIG_LEDS_CLASS=y > -CONFIG_RTC_CLASS=y > -CONFIG_RTC_INTF_DEV_UIE_EMUL=y > -CONFIG_RTC_DRV_SNVS=y > -CONFIG_DMADEVICES=y > -CONFIG_MXC_PXP_V2=y > -CONFIG_IMX_SDMA=y > -# CONFIG_MXC_HMP4E is not set > -# CONFIG_MXC_HWEVENT is not set > -CONFIG_MXC_ASRC=y > -CONFIG_MXC_MLB150=m > -CONFIG_MXC_GPU_VIV=y > -CONFIG_MXC_MIPI_CSI2=y > -CONFIG_EXT2_FS=y > -CONFIG_EXT3_FS=y > -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > -CONFIG_EXT4_FS=y > -CONFIG_AUTOFS4_FS=m > -CONFIG_MSDOS_FS=y > -CONFIG_VFAT_FS=y > -CONFIG_TMPFS=y > -CONFIG_JFFS2_FS=y > -CONFIG_UBIFS_FS=y > -CONFIG_CRAMFS=y > -CONFIG_NFS_FS=y > -CONFIG_NFS_V3=y > -CONFIG_ROOT_NFS=y > -CONFIG_PARTITION_ADVANCED=y > -CONFIG_EFI_PARTITION=y > -CONFIG_NLS_CODEPAGE_437=y > -CONFIG_NLS_ASCII=m > -CONFIG_NLS_ISO8859_1=y > -CONFIG_NLS_UTF8=m > -CONFIG_DEBUG_FS=y > -CONFIG_SYSCTL_SYSCALL_CHECK=y > -CONFIG_FTRACE=y > -CONFIG_CRYPTO_AUTHENC=m > -CONFIG_CRYPTO_TEST=m > -CONFIG_CRYPTO_CBC=y > -# CONFIG_CRYPTO_ANSI_CPRNG is not set > -CONFIG_CRYPTO_DEV_DCP=y > -CONFIG_CRC_CCITT=m > diff --git a/recipes-kernel/linux/linux-imx_3.0.35.bb b/recipes-kernel/linux/linux-imx_3.0.35.bb > deleted file mode 100644 > index e2d808e..0000000 > --- a/recipes-kernel/linux/linux-imx_3.0.35.bb > +++ /dev/null > @@ -1,26 +0,0 @@ > -# Copyright (C) 2011-2013 Freescale Semiconductor > -# Released under the MIT license (see COPYING.MIT for the terms) > - > -include linux-imx.inc > - > -PR = "r38" > - > -COMPATIBLE_MACHINE = "(mx6)" > - > -# Revision of 4.1.0 branch > -SRCREV = "bdde708ebfde4a8c1d3829578d3f6481a343533a" > -LOCALVERSION = "-4.1.0+yocto" > -SRCBRANCH = "imx_3.0.35_4.1.0" > - > -# Patches need for Yocto and not applied by Freescale when doing 4.1.0 branch > -SRC_URI += "file://drm-vivante-Add-00-sufix-in-returned-bus-Id.patch \ > - file://epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch \ > - file://0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch \ > - file://0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch \ > - file://0003-ARM-7670-1-fix-the-memset-fix.patch \ > - file://0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch \ > - file://0005-ENGR00271359-Add-Multi-touch-support.patch \ > - file://0006-Add-support-for-DVI-monitors.patch \ > - file://0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch \ > - file://ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch \ > -" > -- Daiane ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP 2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP Otavio Salvador 2014-03-13 14:10 ` Daiane Angolini @ 2014-03-13 14:15 ` Daiane Angolini 2014-03-13 14:33 ` Otavio Salvador 1 sibling, 1 reply; 8+ messages in thread From: Daiane Angolini @ 2014-03-13 14:15 UTC (permalink / raw) To: Otavio Salvador, meta-freescale Mailing List On 13-03-2014 11:04, Otavio Salvador wrote: > The 1.6 release cycle is focused in the 3.10.17-1.0.0 BSP and has no > compromise in test and maintain the 3.0.35 compatibility. This does > not mean the support as a whole will be dropped but no board in > meta-fsl-arm BSP ought to use it. > > Users which need to use Freescale reference designs with 3.0.35 ought > to keep using the Dora branch. > > Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> > --- > > Changes in v2: > - new patch > > ...Fix-getrusage-related-build-failure-on-gl.patch | 43 - > ...fix-memset-related-crashes-caused-by-rece.patch | 259 - > .../0003-ARM-7670-1-fix-the-memset-fix.patch | 87 - > ...6-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch | 43 - > ...0005-ENGR00271359-Add-Multi-touch-support.patch | 98 - > .../0006-Add-support-for-DVI-monitors.patch | 227 - > ...6-board-mx6q_sabresd-Register-SDHC3-first.patch | 38 - > ...0-gpu-viante-4.6.9p13-kernel-part-integra.patch | 6261 -------------------- > ...m-vivante-Add-00-sufix-in-returned-bus-Id.patch | 31 - > ...-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch | 143 - > .../linux/linux-imx-3.0.35/mx6dl/defconfig | 301 - > .../linux/linux-imx-3.0.35/mx6q/defconfig | 302 - > .../linux/linux-imx-3.0.35/mx6s/defconfig | 267 - > .../linux/linux-imx-3.0.35/mx6sl/defconfig | 267 - > recipes-kernel/linux/linux-imx_3.0.35.bb | 26 - > 15 files changed, 8393 deletions(-) > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig > delete mode 100644 recipes-kernel/linux/linux-imx_3.0.35.bb I'm OK with this patch, and I think it's the way to go now. Could you, please, confirm any board from meta-fsl-arm-extra depends on this kernel anymore? (as I remember, its OK). I'm sorry, I have already replied this email but I did not drop the diff, so my last email was blocked in moderation. Please, ignore that other one. -- Daiane ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP 2014-03-13 14:15 ` Daiane Angolini @ 2014-03-13 14:33 ` Otavio Salvador 0 siblings, 0 replies; 8+ messages in thread From: Otavio Salvador @ 2014-03-13 14:33 UTC (permalink / raw) To: Daiane Angolini; +Cc: meta-freescale Mailing List On Thu, Mar 13, 2014 at 11:15 AM, Daiane Angolini <daiane.angolini@freescale.com> wrote: > On 13-03-2014 11:04, Otavio Salvador wrote: >> >> The 1.6 release cycle is focused in the 3.10.17-1.0.0 BSP and has no >> compromise in test and maintain the 3.0.35 compatibility. This does >> not mean the support as a whole will be dropped but no board in >> meta-fsl-arm BSP ought to use it. >> >> Users which need to use Freescale reference designs with 3.0.35 ought >> to keep using the Dora branch. >> >> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> >> --- >> >> Changes in v2: >> - new patch >> >> ...Fix-getrusage-related-build-failure-on-gl.patch | 43 - >> ...fix-memset-related-crashes-caused-by-rece.patch | 259 - >> .../0003-ARM-7670-1-fix-the-memset-fix.patch | 87 - >> ...6-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch | 43 - >> ...0005-ENGR00271359-Add-Multi-touch-support.patch | 98 - >> .../0006-Add-support-for-DVI-monitors.patch | 227 - >> ...6-board-mx6q_sabresd-Register-SDHC3-first.patch | 38 - >> ...0-gpu-viante-4.6.9p13-kernel-part-integra.patch | 6261 >> -------------------- >> ...m-vivante-Add-00-sufix-in-returned-bus-Id.patch | 31 - >> ...-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch | 143 - >> .../linux/linux-imx-3.0.35/mx6dl/defconfig | 301 - >> .../linux/linux-imx-3.0.35/mx6q/defconfig | 302 - >> .../linux/linux-imx-3.0.35/mx6s/defconfig | 267 - >> .../linux/linux-imx-3.0.35/mx6sl/defconfig | 267 - >> recipes-kernel/linux/linux-imx_3.0.35.bb | 26 - >> 15 files changed, 8393 deletions(-) >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch >> delete mode 100644 >> recipes-kernel/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch >> delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6dl/defconfig >> delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6q/defconfig >> delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6s/defconfig >> delete mode 100644 recipes-kernel/linux/linux-imx-3.0.35/mx6sl/defconfig >> delete mode 100644 recipes-kernel/linux/linux-imx_3.0.35.bb > > > > I'm OK with this patch, and I think it's the way to go now. Great. > Could you, please, confirm any board from meta-fsl-arm-extra depends on this > kernel anymore? (as I remember, its OK). Yes; last one was Congatec which I sent a patch to address it yesterday. > I'm sorry, I have already replied this email but I did not drop the diff, so > my last email was blocked in moderation. Please, ignore that other one. Ooops; my fault and I ended accepting it. -- Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-03-13 14:33 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-03-13 14:04 [meta-fsl-arm PATCH v2 1/3] linux-fslc: Update to 3.14-rc6 Otavio Salvador 2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 2/3] linux-imx: Use 3.10.17 as default Otavio Salvador 2014-03-13 14:05 ` Daiane Angolini 2014-03-13 14:25 ` Otavio Salvador 2014-03-13 14:04 ` [meta-fsl-arm PATCH v2 3/3] linux-imx (3.0.35): Drop recipe from base BSP Otavio Salvador 2014-03-13 14:10 ` Daiane Angolini 2014-03-13 14:15 ` Daiane Angolini 2014-03-13 14:33 ` Otavio Salvador
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.