From bfc21f035cb0e27bff21bba1ec2861c3944804ec Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Thu, 7 Jun 2018 16:47:34 +0300 Subject: MGS-3969 [#imx-879] Fix reading HW counters values using old profiling method for GC7000 Adapted from 7a3d1096aa0cc77e258. This brings back the ability for gputop to read HW counter values. Signed-off-by: Marius Vlad --- drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c | 19 ++++++++++++++++++- .../mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c | 13 ------------- 2 files changed, 18 insertions(+), 14 deletions(-) (limited to 'drivers/mxc') 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 efb015993a57..2cdc21f92930 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c +++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c @@ -2486,6 +2486,7 @@ gckKERNEL_Dispatch( } else { + gctUINT32 i; if (Interface->u.Commit.count > 1 && Interface->engine == gcvENGINE_RENDER) { gctUINT32 i; @@ -2530,7 +2531,6 @@ gckKERNEL_Dispatch( if (Interface->u.Commit.count > 1 && Interface->engine == gcvENGINE_RENDER) { - gctUINT32 i; for (i = 1; i < Interface->u.Commit.count; i++) { @@ -2567,6 +2567,23 @@ gckKERNEL_Dispatch( } } } + + for (i = 0; i < Interface->u.Commit.count; i++) { + gceHARDWARE_TYPE type = Interface->hardwareType; + gckKERNEL kernel = Device->map[type].kernels[i]; + + if ((kernel->hardware->options.gpuProfiler == gcvTRUE) && + (kernel->profileEnable == gcvTRUE)) { + gcmkONERROR(gckCOMMAND_Stall(kernel->command, gcvTRUE)); + + if (kernel->command->currContext) { + gcmkONERROR(gckHARDWARE_UpdateContextProfile( + kernel->hardware, + kernel->command->currContext)); + } + } + } + } gcmkONERROR(gckOS_ReleaseMutex(Kernel->os, Kernel->device->commitMutex)); commitMutexAcquired = gcvFALSE; 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 7a6511828b18..a9cb300c72e1 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 @@ -2538,19 +2538,6 @@ gckCOMMAND_Commit( gcmkONERROR(gckCOMMAND_ExitCommit(Command, gcvFALSE)); commitEntered = gcvFALSE; - if ((Command->kernel->hardware->options.gpuProfiler == gcvTRUE) && - (Command->kernel->profileEnable == gcvTRUE)) - { - gcmkONERROR(gckCOMMAND_Stall(Command, gcvTRUE)); - - if (Command->currContext) - { - gcmkONERROR(gckHARDWARE_UpdateContextProfile( - hardware, - Command->currContext)); - } - } - if (status == gcvSTATUS_INTERRUPTED) { gcmkTRACE( -- cgit v1.2.3