diff mbox

[v3,03/19] drm: add msm compressed format modifiers

Message ID 20180720204315.19054-4-seanpaul@chromium.org (mailing list archive)
State New, archived
Headers show

Commit Message

Sean Paul July 20, 2018, 8:42 p.m. UTC
From: Jeykumar Sankaran <jsanka@codeaurora.org>

Qualcomm Snapdragon chipsets uses compressed format
to optimize BW across multiple IP's. This change adds
needed modifier support in drm for a simple 4x4 tile
based compressed variants of base formats.

Changes in v3:
- Removed duplicate entry for DRM_FORMAT_MOD_QCOM_COMPRESSED (Rob Clark)

Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 include/uapi/drm/drm_fourcc.h | 37 +++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

Comments

Stanimir Varbanov July 25, 2018, 2:09 p.m. UTC | #1
Hi,

On 07/20/2018 11:42 PM, Sean Paul wrote:
> From: Jeykumar Sankaran <jsanka@codeaurora.org>
> 
> Qualcomm Snapdragon chipsets uses compressed format
> to optimize BW across multiple IP's. This change adds
> needed modifier support in drm for a simple 4x4 tile
> based compressed variants of base formats.
> 
> Changes in v3:
> - Removed duplicate entry for DRM_FORMAT_MOD_QCOM_COMPRESSED (Rob Clark)
> 
> Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
> Signed-off-by: Sean Paul <seanpaul@chromium.org>
> ---
>  include/uapi/drm/drm_fourcc.h | 37 +++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
> 
> diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
> index e04613d30a13..1c9a6bf8c81e 100644
> --- a/include/uapi/drm/drm_fourcc.h
> +++ b/include/uapi/drm/drm_fourcc.h
> @@ -298,6 +298,43 @@ extern "C" {
>   */
>  #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE	fourcc_mod_code(SAMSUNG, 1)
>  
> +/*
> + * Qualcomm Compressed Format
> + *
> + * Refers to a compressed variant of the base format that is compressed.
> + * Implementation may be platform and base-format specific.
> + *
> + * Each macrotile consists of m x n (mostly 4 x 4) tiles.
> + * Pixel data pitch/stride is aligned with macrotile width.
> + * Pixel data height is aligned with macrotile height.
> + * Entire pixel data buffer is aligned with 4k(bytes).
> + */
> +#define DRM_FORMAT_MOD_QCOM_COMPRESSED	fourcc_mod_code(QCOM, 1)
> +
> +/*
> + * QTI DX Format
> + *
> + * Refers to a DX variant of the base format.
> + * Implementation may be platform and base-format specific.
> + */
> +#define DRM_FORMAT_MOD_QCOM_DX	fourcc_mod_code(QCOM, 0x2)

What DX stands for?
Jeykumar Sankaran July 25, 2018, 11:09 p.m. UTC | #2
On 2018-07-25 07:09, Stanimir Varbanov wrote:
> Hi,
> 
> On 07/20/2018 11:42 PM, Sean Paul wrote:
>> From: Jeykumar Sankaran <jsanka@codeaurora.org>
>> 
>> Qualcomm Snapdragon chipsets uses compressed format
>> to optimize BW across multiple IP's. This change adds
>> needed modifier support in drm for a simple 4x4 tile
>> based compressed variants of base formats.
>> 
>> Changes in v3:
>> - Removed duplicate entry for DRM_FORMAT_MOD_QCOM_COMPRESSED (Rob 
>> Clark)
>> 
>> Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
>> Signed-off-by: Sean Paul <seanpaul@chromium.org>
>> ---
>>  include/uapi/drm/drm_fourcc.h | 37 
>> +++++++++++++++++++++++++++++++++++
>>  1 file changed, 37 insertions(+)
>> 
>> diff --git a/include/uapi/drm/drm_fourcc.h 
>> b/include/uapi/drm/drm_fourcc.h
>> index e04613d30a13..1c9a6bf8c81e 100644
>> --- a/include/uapi/drm/drm_fourcc.h
>> +++ b/include/uapi/drm/drm_fourcc.h
>> @@ -298,6 +298,43 @@ extern "C" {
>>   */
>>  #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE	fourcc_mod_code(SAMSUNG, 1)
>> 
>> +/*
>> + * Qualcomm Compressed Format
>> + *
>> + * Refers to a compressed variant of the base format that is 
>> compressed.
>> + * Implementation may be platform and base-format specific.
>> + *
>> + * Each macrotile consists of m x n (mostly 4 x 4) tiles.
>> + * Pixel data pitch/stride is aligned with macrotile width.
>> + * Pixel data height is aligned with macrotile height.
>> + * Entire pixel data buffer is aligned with 4k(bytes).
>> + */
>> +#define DRM_FORMAT_MOD_QCOM_COMPRESSED	fourcc_mod_code(QCOM, 1)
>> +
>> +/*
>> + * QTI DX Format
>> + *
>> + * Refers to a DX variant of the base format.
>> + * Implementation may be platform and base-format specific.
>> + */
>> +#define DRM_FORMAT_MOD_QCOM_DX	fourcc_mod_code(QCOM, 0x2)
> 
> What DX stands for?

_DX is QCOM modifier for identifying 10bit version of NV12 format since 
there is no fourcc_code for the same.
Stanimir Varbanov July 26, 2018, 9:37 a.m. UTC | #3
On 07/26/2018 02:09 AM, Jeykumar Sankaran wrote:
> On 2018-07-25 07:09, Stanimir Varbanov wrote:
>> Hi,
>>
>> On 07/20/2018 11:42 PM, Sean Paul wrote:
>>> From: Jeykumar Sankaran <jsanka@codeaurora.org>
>>>
>>> Qualcomm Snapdragon chipsets uses compressed format
>>> to optimize BW across multiple IP's. This change adds
>>> needed modifier support in drm for a simple 4x4 tile
>>> based compressed variants of base formats.
>>>
>>> Changes in v3:
>>> - Removed duplicate entry for DRM_FORMAT_MOD_QCOM_COMPRESSED (Rob Clark)
>>>
>>> Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
>>> Signed-off-by: Sean Paul <seanpaul@chromium.org>
>>> ---
>>>  include/uapi/drm/drm_fourcc.h | 37 +++++++++++++++++++++++++++++++++++
>>>  1 file changed, 37 insertions(+)
>>>
>>> diff --git a/include/uapi/drm/drm_fourcc.h
>>> b/include/uapi/drm/drm_fourcc.h
>>> index e04613d30a13..1c9a6bf8c81e 100644
>>> --- a/include/uapi/drm/drm_fourcc.h
>>> +++ b/include/uapi/drm/drm_fourcc.h
>>> @@ -298,6 +298,43 @@ extern "C" {
>>>   */
>>>  #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE   
>>> fourcc_mod_code(SAMSUNG, 1)
>>>
>>> +/*
>>> + * Qualcomm Compressed Format
>>> + *
>>> + * Refers to a compressed variant of the base format that is
>>> compressed.
>>> + * Implementation may be platform and base-format specific.
>>> + *
>>> + * Each macrotile consists of m x n (mostly 4 x 4) tiles.
>>> + * Pixel data pitch/stride is aligned with macrotile width.
>>> + * Pixel data height is aligned with macrotile height.
>>> + * Entire pixel data buffer is aligned with 4k(bytes).
>>> + */
>>> +#define DRM_FORMAT_MOD_QCOM_COMPRESSED    fourcc_mod_code(QCOM, 1)
>>> +
>>> +/*
>>> + * QTI DX Format
>>> + *
>>> + * Refers to a DX variant of the base format.
>>> + * Implementation may be platform and base-format specific.
>>> + */
>>> +#define DRM_FORMAT_MOD_QCOM_DX    fourcc_mod_code(QCOM, 0x2)
>>
>> What DX stands for?
> 
> _DX is QCOM modifier for identifying 10bit version of NV12 format since
> there is no fourcc_code for the same.
> 

Did you mean such as COLOR_FMT_P010? And how DX is translated to ?
Rob Clark July 26, 2018, 11:45 a.m. UTC | #4
On Wed, Jul 25, 2018 at 7:09 PM, Jeykumar Sankaran
<jsanka@codeaurora.org> wrote:
> On 2018-07-25 07:09, Stanimir Varbanov wrote:
>>
>> Hi,
>>
>> On 07/20/2018 11:42 PM, Sean Paul wrote:
>>>
>>> From: Jeykumar Sankaran <jsanka@codeaurora.org>
>>>
>>> Qualcomm Snapdragon chipsets uses compressed format
>>> to optimize BW across multiple IP's. This change adds
>>> needed modifier support in drm for a simple 4x4 tile
>>> based compressed variants of base formats.
>>>
>>> Changes in v3:
>>> - Removed duplicate entry for DRM_FORMAT_MOD_QCOM_COMPRESSED (Rob Clark)
>>>
>>> Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
>>> Signed-off-by: Sean Paul <seanpaul@chromium.org>
>>> ---
>>>  include/uapi/drm/drm_fourcc.h | 37 +++++++++++++++++++++++++++++++++++
>>>  1 file changed, 37 insertions(+)
>>>
>>> diff --git a/include/uapi/drm/drm_fourcc.h
>>> b/include/uapi/drm/drm_fourcc.h
>>> index e04613d30a13..1c9a6bf8c81e 100644
>>> --- a/include/uapi/drm/drm_fourcc.h
>>> +++ b/include/uapi/drm/drm_fourcc.h
>>> @@ -298,6 +298,43 @@ extern "C" {
>>>   */
>>>  #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE      fourcc_mod_code(SAMSUNG,
>>> 1)
>>>
>>> +/*
>>> + * Qualcomm Compressed Format
>>> + *
>>> + * Refers to a compressed variant of the base format that is compressed.
>>> + * Implementation may be platform and base-format specific.
>>> + *
>>> + * Each macrotile consists of m x n (mostly 4 x 4) tiles.
>>> + * Pixel data pitch/stride is aligned with macrotile width.
>>> + * Pixel data height is aligned with macrotile height.
>>> + * Entire pixel data buffer is aligned with 4k(bytes).
>>> + */
>>> +#define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
>>> +
>>> +/*
>>> + * QTI DX Format
>>> + *
>>> + * Refers to a DX variant of the base format.
>>> + * Implementation may be platform and base-format specific.
>>> + */
>>> +#define DRM_FORMAT_MOD_QCOM_DX fourcc_mod_code(QCOM, 0x2)
>>
>>
>> What DX stands for?
>
>
> _DX is QCOM modifier for identifying 10bit version of NV12 format since
> there is no fourcc_code for the same.
>

this sounds like it should actually be P010 then.. not a modifier.. I
think we should remove the modifier before it ends up in a release..

See: https://patchwork.freedesktop.org/patch/141342/

from a quick look, it seems like we just need a driver that supports
it to land the new fourcc's

BR,
-R


> --
> Jeykumar S
diff mbox

Patch

diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
index e04613d30a13..1c9a6bf8c81e 100644
--- a/include/uapi/drm/drm_fourcc.h
+++ b/include/uapi/drm/drm_fourcc.h
@@ -298,6 +298,43 @@  extern "C" {
  */
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE	fourcc_mod_code(SAMSUNG, 1)
 
+/*
+ * Qualcomm Compressed Format
+ *
+ * Refers to a compressed variant of the base format that is compressed.
+ * Implementation may be platform and base-format specific.
+ *
+ * Each macrotile consists of m x n (mostly 4 x 4) tiles.
+ * Pixel data pitch/stride is aligned with macrotile width.
+ * Pixel data height is aligned with macrotile height.
+ * Entire pixel data buffer is aligned with 4k(bytes).
+ */
+#define DRM_FORMAT_MOD_QCOM_COMPRESSED	fourcc_mod_code(QCOM, 1)
+
+/*
+ * QTI DX Format
+ *
+ * Refers to a DX variant of the base format.
+ * Implementation may be platform and base-format specific.
+ */
+#define DRM_FORMAT_MOD_QCOM_DX	fourcc_mod_code(QCOM, 0x2)
+
+/*
+ * QTI Tight Format
+ *
+ * Refers to a tightly packed variant of the base format.
+ * Implementation may be platform and base-format specific.
+ */
+#define DRM_FORMAT_MOD_QCOM_TIGHT	fourcc_mod_code(QCOM, 0x4)
+
+/*
+ * QTI Tile Format
+ *
+ * Refers to a tile variant of the base format.
+ * Implementation may be platform and base-format specific.
+ */
+#define DRM_FORMAT_MOD_QCOM_TILE	fourcc_mod_code(QCOM, 0x8)
+
 /* Vivante framebuffer modifiers */
 
 /*