Commit Graph

91 Commits

Author SHA1 Message Date
Ajay Dudani
4dc06493ae gralloc: Remove unsupported formats
- Remove RAW_SENSOR in favor of RAW16
- Remove use of sRGB format enums

Change-Id: I189a168f75a5573648aebdde3bbacb90f4cdc354
2015-08-04 16:55:57 -07:00
Arun Kumar K.R
7f0b24b427 gralloc: Use new secure display heap id and flags
Add support to use new heap id and flags for secure
display use case

Change-Id: Icca91a1aa60fab0eda5ff0396c0ae1b5f76f9151
2015-07-20 10:42:49 -07:00
Sushil Chauhan
e7acc3c916 sdm: Add support for LINEAR_FORMAT metadata operation
1. Define LINEAR_FORMAT operation in MetaData.
2. VENUS ouput buffer is linear for NV12_UBWC Interlaced video playback.
   So Video module performs LINEAR_FORMAT operation to set "linearFormat"
   metadata member to NV12 linear format in case of Interlaced video.
3. Handle LINEAR_FORMAT metadata operation in HWC wrapper and gralloc.

CRs-Fixed: 855474

Change-Id: I77dd72bec26f225de75adb6c214ccd90db239e3e
2015-06-29 15:21:58 -07:00
Ramkumar Radhakrishnan
29a36a54bc sdm: Remove unused libraries, files and functions
1. Remove unused libraries libhdmi, liboverlay and libhwcomposer.
2. Remove unused functions and files from libqdutils.
2. Add querySDEInfo() function in qdutisl to query SDE capability.

Change-Id: Ibea2dd2d22fecb420079e3b7cbbcc57d10f75d49
2015-06-22 12:14:53 -07:00
Linux Build Service Account
9aa25d5806 Merge "gralloc: Fix RAW16 stride" 2015-05-08 14:19:10 -07:00
Linux Build Service Account
4613ff9183 Merge "gralloc: UBWC aligned buffers are Macro Tiled" 2015-05-06 15:47:23 -07:00
Linux Build Service Account
7648232a7e Merge "hwc: Add support for YCrCb_420_SP_VENUS(NV21_VENUS)" 2015-05-06 11:38:07 -07:00
Shuzhen Wang
2a000b2f99 gralloc: Fix RAW16 stride
RAW16 stride should be multiple of 16 pixels, not 32.

Change-Id: Ic5f6920402ba9600b983e457cfc6863888345fe8
2015-05-06 09:54:06 -07:00
Sushil Chauhan
e61fac5be4 gralloc: UBWC aligned buffers are Macro Tiled
All UBWC aligned buffers are Macro tiled.

Change-Id: I71bb0269d337d1ca2017ce9665010f738674f1a8
2015-05-01 10:17:29 -07:00
Sushil Chauhan
c85b65b46e gralloc: Fix UBWC related issues
1. Fix the missed ALIGN in getUBwcMetaBufferSize api.
2. Fix de-reference of data address pointer in getRgbDataAddress api.

Change-Id: I5dae2b6f449bb9a5b0dcc23110a2efce36060a42
2015-04-30 11:05:36 -07:00
Linux Build Service Account
3eac1c3cd9 Merge "gralloc: Make all secure heaps and flags backward compatible" 2015-04-29 08:20:37 -07:00
Linux Build Service Account
0d269a4991 Merge "gralloc: Add gralloc perform api to query RGB data address" 2015-04-26 02:29:53 -07:00
Linux Build Service Account
0350e3e6a0 Merge "gralloc: Add debug.gralloc.gfx_ubwc_disable" 2015-04-24 23:48:25 -07:00
Shalaj Jain
3c49041532 gralloc: Make all secure heaps and flags backward compatible
Make all content protection and secure display heaps and flags
backward compatible. Honor the different requirements for master
side and slave side content protection and secure display.

Change-Id: I21a5170f2ae7ffd9c447e8af795e3665e673248f
2015-04-24 11:52:48 -07:00
Mohan Maiya
cbeab9e705 gralloc: Add debug.gralloc.gfx_ubwc_disable
This patch adds a new debug property
that can be used to disable UBWC compilant
allocations for graphics stack by gralloc.

Change-Id: I59e5994700730c73d62eec9f74ab6ded60c2d256
2015-04-20 10:17:50 -07:00
Sushil Chauhan
7dd3a4368f gralloc: Add gralloc perform api to query RGB data address
A client can call GRALLOC_MODULE_PERFORM_GET_RGB_DATA_ADDRESS api
to get RGB data address for any linear or UBWC aligned RGB buffer.

Change-Id: I3a7d25f504b7ba1dec79cc872cafbb38ddbb6bd2
2015-04-16 10:41:14 -07:00
Raj Kamal
8bb3b8f79a hwc: Add support for YCrCb_420_SP_VENUS(NV21_VENUS)
* Earlier, camera preview buffers were of NV21(YCrCb_420_SP)
  and the video buffers were of NV12_VENUS(YCbCr_420_SP_VENUS)
  format. Now that the video encoder has support for NV21,
  both the camera and video buffers can be of
  NV21_VENUS(YCrCb_420_SP_VENUS) format.

* If the preview and video buffer sizes are the same,
  CPP double pass to generate video and preview buffers can be
  avoided and the buffers can now be generated within a single pass
  with CPP duplication thereby saving power.

* Add support in gralloc for NV12_VENUS format to achieve
  the same.

Change-Id: I7001f975f2cafa21c893e7384ddbddd5f2788b1d
2015-04-16 18:28:45 +05:30
Sushil Chauhan
6686c80f64 sde: Add support for RGBX_8888 UBWC format
1. Add support for RGBX_8888 UBWC in display engine and gralloc APIs.
2. Set the appropriate rotator output format for RGB* UBWC formats.
3. Move the UBWC aligned format enums in their appropriate range.

Change-Id: I0107f10894f9edbe657fce29b99f6e909c675150
2015-04-15 18:22:24 -07:00
Linux Build Service Account
6fc33505bd Merge "gralloc: App support for new secure system heap and flags" 2015-04-14 03:25:44 -07:00
Shalaj Jain
1f9725a296 gralloc: App support for new secure system heap and flags
Add support for new secure system heap and corresponding flags
for all pixel buffers. Keep the old mm heap for secure display
buffers.

Change-Id: Ic0ee7783a2d1ff420c34396f7cc4bd5ac3058c44
2015-03-30 14:41:36 -07:00
Mansoor Aftab
e9912a6857 gralloc: Add Raw10 support in allocator
CRs-Fixed: 810651
Change-Id: I231979626e073887ae42d5bec2d25138c3dd763f
2015-03-23 11:26:20 -07:00
Naseer Ahmed
8d0d72ad40 gralloc: Deprecate old stuff.
1. Reclaim some old gralloc flags.
2. System heap allocation happens by default.
3. Remove some unused private flags.
4. Add heapid member to alloc_data to better line up with ion
   header
5. Remove check for MDSS_TARGET

Change-Id: I37be0a2fcd5fd4a14bb9ca235fcae41f6f3ec19e
2015-03-19 13:39:21 -04:00
Sushil Chauhan
4686c97328 gralloc: Add support for NV12_UBWC in getYUVPlaneInfo api
Add support for NV12_UBWC HAL pixel format in getYUVPlaneInfo api to
enable GRALLOC_MODULE_PERFORM_GET_YUV_PLANE_INFO for this format.

Change-Id: I94389ddc45cba94124b36fb3ecb0b947250c0681
2015-03-11 18:15:28 -07:00
Sushil Chauhan
a9d47001c9 gralloc: Change private usage flags from enums to defines
1. It helps in checking gralloc private usage flags at compile time.
2. Define GRALLOC_MODULE_PERFORM_GET_UBWC_FLAG to enable client to
   query the value of "PRIV_FLAGS_UBWC_ALIGNED" flag at run time.
3. Add ADRENO_PIXELFORMAT_NV12_EXT in defined Adreno Pixel formats
   to fix NV12_UBWC HAL pixel format conversion to Adreno format.

Change-Id: I78ccac98f1bd1bfbd2aa596ceb7a293f3d2e5f6e
2015-02-23 13:12:22 -08:00
Linux Build Service Account
09ca40a8d3 Merge "gralloc: Allow UBWC for explicitly defined UBWC HAL pixel format" 2015-02-01 14:29:37 -08:00
Sushil Chauhan
81594f6d66 gralloc: Allow UBWC for explicitly defined UBWC HAL pixel format
1. Allow UBWC allocation, if client is using an explicitly defined
UBWC HAL pixel format OR if client sets UBWC gralloc usage flag and
GPU supports the format.

2. EGL wants gralloc to set PRIV_FLAGS_UBWC_ALIGNED bit in private
handle flags, only if GPU supports UBWC for that format.

Change-Id: I4194a046217cbc4c0a8ac2b2fb4b73ebd5076fc2
2015-01-30 10:21:19 -08:00
Kaushik Kanetkar
071aca66e2 gralloc: Modify getYUVPlaneInfo
Modify getYUVPlaneInfo to return data from metadata
as well, if the geometry has changed, and align it
according to the format.

Change-Id: I119a1719c214c87e542b471c9cd9a20b01e2bf5e
2015-01-27 12:58:16 -07:00
Sushil Chauhan
082acd66c4 gralloc: Add adreno_utils header
Add adreno_utils header to define Adreno pixel formats, which are
needed by gralloc to map HAL format to corresponding Adreno format.

Change-Id: I6d38f34583955e3990393801f1dca0dd9aa2013b
2015-01-16 16:10:14 -08:00
Sushil Chauhan
65e26307e6 display: Add support for UBWC in display hal
1. Add support for UBWC allocation in the Gralloc APIs for aligned
width, aligned height and buffer size. A client can request for UBWC
allocation by sending UBWC specific HAL pixel format or by setting
GRALLOC_USAGE_PRIVATE_ALLOC_UBWC flag in the usage flags.

2. Gralloc allocates UBWC aligned buffer, only if format is supported
by GPU and MDP and no CPU usage flags are set. Otherwise it allocates
linear buffer.

3. If UBWC conditions are met, gralloc sets PRIV_FLAGS_UBWC_ALIGNED
in private handle flags to tell client that allocated buffer has UBWC
alignment. This flag remains unset by default.

4. Add helper functions in gralloc to calculate UBWC meta buffer size
for RGB* formats.

5. Add UBWC HAL pixel format HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC
which has been defined by Video module.

6. Add AdrenoMemInfo api to query, if GPU supports UBWC for a format.

7.MDP driver expects UBWC specific pixel format defined by MDP header.

Change-Id: I5b4344bc90aa498dbdb7bb8100e70ed7728e6ea5
2015-01-16 11:00:01 -08:00
Sushil Chauhan
c8da337f63 gralloc: Deprecate GRALLOC_USAGE_PRIVATE_UI_CONTIG_HEAP flag
Remove the unused gralloc flag: GRALLOC_USAGE_PRIVATE_UI_CONTIG_HEAP.
It was only used when we had ION carveout allocations for UI. It is
not needed anymore and no module is using it.

Change-Id: I46ec5758ec3c753ee20426c258aa2a0a46f6a4ac
2014-12-30 10:30:38 -08:00
Saurabh Shah
1adcafe634 gralloc: Allocate cached by default, don't use bitops on SW flags
Allocate gralloc buffers cached by default unless clients specify
uncached using PRIVATE_UNCACHED or READ_RARELY or WRITE_RARELY at
allocation time. Some clients could use gralloc for allocation but
later won't use lock()/unlock() for CPU operations and likely use
their own caching methods. Cached by default helps such clients.

SW usage flags are not defined as bit values, so do not use bitops
on those flags.

Change-Id: Id371de2ec6efbfa0ed84172b3540f3ebc8f5d459
2014-12-19 18:30:00 -08:00
Shalaj Jain
13cdf813ab gralloc: Allow non-contiguous allocations for secure buffers
Pass a flag to ion to allow non-contiguous allocations with a sg
(scatter gather) list of 1MB chunks for all secure buffers except
secure display.

Change-Id: Ife2709e94571ab7603b29da17805a857ba73fd72
2014-12-11 10:54:35 -08:00
Linux Build Service Account
e98a3d6b04 Merge "libhwcomposer: libgralloc Set MDP_SMP_FORCE_ALLOC flag" 2014-11-09 23:41:33 -08:00
Ramkumar Radhakrishnan
964395241b Revert "get rid of HAL pixelformats 5551 and 4444"
This reverts commit e4001e736d.

Change-Id: Ic09ba8bc5b0784bce07e8800f6276b3290bc0e7a
2014-10-29 17:23:41 -07:00
Justin Philip
d616660fe6 libhwcomposer: libgralloc Set MDP_SMP_FORCE_ALLOC flag
For PROTECTED but NON SECURE layers set MDP_SMP_FORCE_ALLOC flag
to allow SMP allocation and prevent GPU fallback
In Such cases if video resolution changes dynamically
it fails to display layer due to GPU fallback.
Use this flag for FB layer composition and depricate
MDP_BACKEND_COMPOSITION flag.

Change-Id: I9ab7cbdd2e12b56dfa67d5b4b3ff6b2dcd0096be
2014-10-21 21:34:30 -07:00
Saurabh Shah
9ff53a9d9f gralloc: Optimize ION cache clean and invalidate calls
-Clients not having WRITE_OFTEN or READ_OFTEN are uncached.
-Invalidate cache on lock only if CPU needs to read and there
are non-CPU writers in system (camera,gpu etc)
-Flush cache on unlock only if CPU writes. Since all buffers will be
read in HWC(MDP) there is no need to check if readers exist.

Change-Id: Icd114e60b7456bd71592b81016892e806c37cb22
2014-09-24 16:02:21 -07:00
Arun Kumar K.R
6e3324827f gralloc: fix getYUVPlaneInfo for YV12 format
- Use proper alignment for cstride while calculating the
  ycbcr info for YV12 format
- This fixes the corruption issue when the video is composed
  using GPU

CRs-fixed: 711696
Change-Id: I776cc6c5ce781ea3de25b5d8427345b512a8305a
2014-08-21 13:23:57 -07:00
Linux Build Service Account
8f4e1a68ba Merge "gralloc: Align NV21 to 32 pixels" 2014-06-06 06:07:17 -07:00
Naseer Ahmed
0415b73fdf gralloc: Align NV21 to 32 pixels
Graphics requires 32 pixel alignment and camera driver is being
updated to this.

Change-Id: I00fe659f7a16abeb8f65d9bbf41a24a7c8113bfb
CRs-fixed: 476475
2014-05-29 16:59:02 -04:00
Naseer Ahmed
a28d31c01c gralloc: Fix NV12 and NV21 stride
NV12 spec says that the chroma stride is the same as the luma
stride. The camera hardware produces YUV data per this spec.
NV21 has the same behaviour with the chroma samples reversed.
Venus also conforms to this.

Change-Id: I6e107b2a3ba6f51e135348bd147a9c26be003bb2
2014-05-29 15:46:29 -04:00
Saurabh Shah
8f0ea6ff81 gralloc: Remove opaque types
Remove opaque types like size_t, uintptr_t, intptr_t to support
32bit and 64bit processes together.

When a 64bit process creates a handle and a 32bit process validates
the incoming ints against expected ints, opaque types lead to
different and mismatching values.

Always use unit64_t for base address for 32bit and 64bit SF.
Use unsigned int for offset and size, since ION uses that.

Change-Id: I7db5544556a8924f98010b965f837592e9f0b4ca
2014-05-22 12:14:30 -07:00
Praveena Pachipulusu
2005e8f612 hwc: Fix klockwork errors
Resolving klockwork errors to avoid memory leaks,
improper assignments in liboverlay.

Change-Id: I82ac6ae782c7b783e89999b832bbd1d361376b9f
2014-05-16 08:45:03 +05:30
Naseer Ahmed
b29fdfdd84 gralloc: Report YUV plane info
The android_ycbcr structure in graphics.h is populated to give
the luma and chroma addresses. Use the same structure to give
this information to graphics via a gralloc perform call.

Change-Id: Ib42866a9ea90873886dcb60a1aac6cb375292642
2014-04-25 09:56:38 -07:00
Arun Kumar K.R
6c85f050b2 libgralloc: use proper types and type casts
- Use proper types for pointers
- Resolve compiler errors
- handle proper type casts
- remove unused variables

Change-Id: I628ebe174485d30abadea4ca40b67f9aab1a0652
2014-03-28 15:14:58 -07:00
Jeykumar Sankaran
2ba20513e4 libgralloc: Invoke adreno for ASTC format padding.
Invoke adreno util API to calculate padding bytes for ASTC
formats.

Change-Id: I96af0199a0029786fd2975a7c002d5414c797521
2014-03-07 10:02:13 -08:00
Manoj Kumar AVM
5a5529b817 hqd: Add support for 565 macro tile format
Extend macro tile feature support to rgb565 format.

Change-Id: I3d696d1ec66bfd95fcf3d243a1d669cb074da77f
2014-02-25 10:56:04 -08:00
Ramkumar Radhakrishnan
36bd527bc8 display: Remove klockwork warnings and errors.
Remove all klockwork warnings and errors for libgralloc,
libhwcomposer, liboverlay, libqdutils, libqservice, libvirtual,
libexternal libraries to avoid buffer overflow and memory leaks.

Change-Id: I078143bcbcf5e4b342156bd8305a644566f7cc4b
2014-02-18 12:39:21 -08:00
Linux Build Service Account
a6976555a1 Merge "h/q/d: Add missing ASTC format" 2014-02-09 19:08:39 -08:00
Jeykumar Sankaran
8f4585fc6f h/q/d: Add missing ASTC format
Adds support for Khronos format COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR

Change-Id: I2ca2c548cbcca0c56f28d2158cb5a0d01a326f0f
2014-02-05 15:23:40 -08:00
Saurabh Shah
d0b0d8f055 gralloc: Fix getSize and getAlignedWidthAndHeight
getSize was incorrectly modifying aligned height and allocating
a buffer of lesser than expected size.

All alignments should be done in getAlignedWidthAndHeight so as not
to break the GRALLOC_PERFORM functions.

getSize()'s return type is unsigned, but a signed value is returned.
Instead on error, a size of 0 should be reported.

Change-Id: Ifae5e758de8e689701cd43892324ccc0140675cd
2014-02-04 13:22:38 -08:00