diff --git a/kernels/include/TI/video_io_display.h b/kernels/include/TI/video_io_display.h
index f7c22ca..62182b5 100755
--- a/kernels/include/TI/video_io_display.h
+++ b/kernels/include/TI/video_io_display.h
@@ -118,6 +118,15 @@ extern "C" {
  */
 #define TIVX_DISPLAY_SET_CROP_PARAMS        (0x30000001u)
 
+/*! \brief Control Command to get Display status.
+ *
+ *         This control command uses pointer to structure
+ *         tivx_display_current_status_t as an input argument.
+ *
+ *  \ingroup group_vision_function_display
+ */
+#define TIVX_DISPLAY_GET_CURRENT_STATUS        (0x30000002u)
+
 /*********************************
  *      Display Defines
  *********************************/
@@ -158,6 +167,34 @@ typedef struct
     uint32_t  height; /*!< Height of crop window */
 } tivx_display_crop_params_t;
 
+/**
+ *  \brief Structure containing current status of the display driver.
+ */
+typedef struct
+{
+    uint32_t queueCount;
+    /**< Counter to keep track of how many requests are queued to the driver.
+     *   Note: This counter will be reset at the time of driver create */
+    uint32_t dequeueCount;
+    /**< Counter to keep track of how many requests are dequeued from the
+     *   driver.
+     *   Note: This counter will be reset at the time of driver create */
+    uint32_t dispFrmCount;
+    /**< Counter to keep track of how many frames are displayed.
+     *   For interlaced display, this is half of the actual field display.
+     *   Note: This counter will be reset at the time of display start */
+    uint32_t repeatFrmCount;
+    /**< Counter to keep track of how many frames are repeated when the
+     *   application fails to queue buffer at the display rate.
+     *   Note: This counter will be reset at the time of display start */
+    uint32_t underflowCount;
+    /**< Counter to keep track of number of underflows
+     *   Note: This counter will be reset at the time of driver create */
+    uint32_t safetyViolationCount;
+    /**< Counter to keep track of number of safety violations
+     *   Note: This counter will be reset at the time of driver create */
+} tivx_display_current_status_t;
+
 /*!
  * \brief The configuration data structure used by the TIVX_KERNEL_DISPLAY kernel.
  *
diff --git a/kernels/video_io/display/vx_display_target.c b/kernels/video_io/display/vx_display_target.c
index 68f398a..5639ddc 100755
--- a/kernels/video_io/display/vx_display_target.c
+++ b/kernels/video_io/display/vx_display_target.c
@@ -60,6 +60,7 @@
  *
  */
 
+#include <stdio.h>
 #include "TI/tivx.h"
 #include "TI/video_io_display.h"
 #include "TI/tivx_event.h"
@@ -131,6 +132,7 @@ typedef struct
     uint32_t offset0;
     uint32_t offset1;
     tivx_display_crop_params_t cropPrms;
+    tivx_display_current_status_t currStatus;
     uint32_t bpp;
 
     uint32_t isRtPrmsUpdated;
@@ -173,6 +175,8 @@ static vx_status tivxDisplaySwitchChannel(tivxDisplayParams *dispPrms,
     const tivx_obj_desc_user_data_object_t *usr_data_obj);
 static vx_status tivxDisplaySetCropParams(tivxDisplayParams *dispPrms,
     const tivx_obj_desc_user_data_object_t *usr_data_obj);
+static vx_status tivxDisplayGetCurrentStatus(tivxDisplayParams *dispPrms,
+    const tivx_obj_desc_user_data_object_t *usr_data_obj);
 
 static vx_status tivxDisplaySwitchChannel(tivxDisplayParams *dispPrms,
     const tivx_obj_desc_user_data_object_t *usr_data_obj)
@@ -251,6 +255,35 @@ static vx_status tivxDisplaySetCropParams(tivxDisplayParams *dispPrms,
     return (status);
 }
 
+static vx_status tivxDisplayGetCurrentStatus(tivxDisplayParams *dispPrms,
+    const tivx_obj_desc_user_data_object_t *usr_data_obj)
+{
+    vx_status                     status       = (vx_status)VX_SUCCESS;
+    int32_t                       fvid2_status = FVID2_SOK;
+    tivx_display_current_status_t currStatus;
+
+    fvid2_status = Fvid2_control(dispPrms->drvHandle, IOCTL_DSS_DISP_GET_CURRENT_STATUS, &currStatus, NULL);
+    if (FVID2_SOK == fvid2_status)
+    {
+        printf(   "==========================================================\r\n");
+        printf(   " Display Status: \n");
+        printf(   "==========================================================\r\n");
+        printf(   " queueCount: %d\r\n", currStatus.queueCount);
+        printf(   " dequeueCount: %d\r\n", currStatus.dequeueCount);
+        printf(   " dispFrmCount: %d\r\n", currStatus.dispFrmCount);
+        printf(   " repeatFrmCount: %d\r\n", currStatus.repeatFrmCount);
+        printf(   " underflowCount: %d\r\n", currStatus.underflowCount);
+        printf(   " safetyViolationCount: %d\r\n", currStatus.safetyViolationCount);
+    }
+    else
+    {
+        VX_PRINT(VX_ZONE_ERROR, " DISPLAY: ERROR: FVID2 Control failed !!!\n");
+        status = (vx_status)VX_FAILURE;
+    }
+
+    return (status);
+}
+
 static vx_status tivxDisplayExtractFvid2Format(
     tivxDisplayParams *dispPrms, tivx_display_params_t *inDispPrms,
     const tivx_obj_desc_image_t *obj_desc_img, Fvid2_Format *format)
@@ -843,6 +876,12 @@ static vx_status VX_CALLBACK tivxDisplayControl(
                     (tivx_obj_desc_user_data_object_t *)obj_desc[0U]);
                 break;
             }
+            case TIVX_DISPLAY_GET_CURRENT_STATUS:
+            {
+                status = tivxDisplayGetCurrentStatus(dispPrms,
+                    (tivx_obj_desc_user_data_object_t *)obj_desc[0U]);
+                break;
+            }
             default:
             {
                 VX_PRINT(VX_ZONE_ERROR, "Invalid Command Id\n");
