diff options
author | Elaine Wang <elaine.wang@intel.com> | 2014-04-09 22:43:55 +0800 |
---|---|---|
committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:06:36 -0700 |
commit | 80512b077abec95c25376542d58e1ee4cb1a34ee (patch) | |
tree | 8daae794e7aaf6d539d81f8201c5f582d6142138 | |
parent | 98be9b15fdf9dd710170f4d47d9be9ad754614b8 (diff) | |
download | android_hardware_intel_img_psb_video-80512b077abec95c25376542d58e1ee4cb1a34ee.tar.gz android_hardware_intel_img_psb_video-80512b077abec95c25376542d58e1ee4cb1a34ee.tar.bz2 android_hardware_intel_img_psb_video-80512b077abec95c25376542d58e1ee4cb1a34ee.zip |
Change the value of PSB_MAX_BUFFERTYPES from 1007 to 64
BZ: 185572
VABufferTypeMax is large(1000+) because there is big blank space between common libva buffer
type and Intel specific buffer types(for GEN usage only). If use VABufferTypeMax as
PSB_MAX_BUFFERTYPES to define the size of buffer type related arrays in context object,
we will waste about 16K memory. Currently, the max value of buffer type used in psb_video is
VAParseSliceHeaderGroupBufferType(44). So change the value of PSB_MAX_BUFFERTYPES from 1007 to 64.
Change-Id: I0d9ff14e6a1b3ecc8b34a7a73005c462141b8c4d
Signed-off-by: Elaine Wang <elaine.wang@intel.com>
-rwxr-xr-x | src/psb_drv_video.c | 18 | ||||
-rw-r--r-- | src/psb_drv_video.h | 9 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/psb_drv_video.c b/src/psb_drv_video.c index 5b2bdc6..12ef4de 100755 --- a/src/psb_drv_video.c +++ b/src/psb_drv_video.c @@ -1507,6 +1507,11 @@ void psb__suspend_buffer(psb_driver_data_p driver_data, object_buffer_p obj_buff VABufferType type = obj_buffer->type; object_context_p obj_context = obj_buffer->context; + if (type >= PSB_MAX_BUFFERTYPES) { + drv_debug_msg(VIDEO_DEBUG_ERROR, "Invalid buffer type %d\n", type); + return; + } + /* Remove buffer from active list */ *obj_buffer->pptr_prev_next = obj_buffer->ptr_next; @@ -1655,9 +1660,18 @@ VAStatus psb__CreateBuffer( DEBUG_FUNC_ENTER VAStatus vaStatus = VA_STATUS_SUCCESS; int bufferID; - object_buffer_p obj_buffer = obj_context ? obj_context->buffers_unused[type] : NULL; - int unused_count = obj_context ? obj_context->buffers_unused_count[type] : 0; + object_buffer_p obj_buffer; + int unused_count; + + /*PSB_MAX_BUFFERTYPES is the size of array buffers_unused*/ + if (type >= PSB_MAX_BUFFERTYPES) { + drv_debug_msg(VIDEO_DEBUG_ERROR, "Invalid buffer type %d\n", type); + return VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE; + } + + obj_buffer = obj_context ? obj_context->buffers_unused[type] : NULL; + unused_count = obj_context ? obj_context->buffers_unused_count[type] : 0; /* * Buffer Management diff --git a/src/psb_drv_video.h b/src/psb_drv_video.h index 6cbad42..4797c66 100644 --- a/src/psb_drv_video.h +++ b/src/psb_drv_video.h @@ -96,7 +96,14 @@ #define PSB_MAX_PROFILES 32 #define PSB_MAX_ENTRYPOINTS 32 #define PSB_MAX_CONFIG_ATTRIBUTES VAConfigAttribTypeMax -#define PSB_MAX_BUFFERTYPES VABufferTypeMax + +/* VABufferTypeMax is large(1000+) because there is big blank space between common libva buffer + * type and Intel specific buffer types(for GEN usage only). If use VABufferTypeMax as + * PSB_MAX_BUFFERTYPES to define the size of buffer type related arrays in context object, + * we will waste about 16K memory. Currently, the max value of buffer type used in psb_video is + * VAParseSliceHeaderGroupBufferType(44). + */ +#define PSB_MAX_BUFFERTYPES 64 /* Max # of command submission buffers */ #define PSB_MAX_CMDBUFS 10 |