blob: 6f3631ec77dd6f13925bf3da749c644065cd5cc6 [file] [log] [blame]
Saurabh Shah66c941b2016-07-06 17:34:05 -07001/*
2* Copyright (c) 2017, The Linux Foundation. All rights reserved.
3*
4* Redistribution and use in source and binary forms, with or without
5* modification, are permitted provided that the following conditions are
6* met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above
10* copyright notice, this list of conditions and the following
11* disclaimer in the documentation and/or other materials provided
12* with the distribution.
13* * Neither the name of The Linux Foundation nor the names of its
14* contributors may be used to endorse or promote products derived
15* from this software without specific prior written permission.
16*
17* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*/
29
30#ifndef __DRM_INTERFACE_H__
31#define __DRM_INTERFACE_H__
32
33#include <map>
34#include <string>
35#include <utility>
36#include <vector>
37
38#include "xf86drm.h"
39#include "xf86drmMode.h"
Sushil Chauhan80e58432017-07-06 11:39:17 -070040#include <drm/msm_drm.h>
Saurabh Shah66c941b2016-07-06 17:34:05 -070041
42namespace sde_drm {
Ramkumar Radhakrishnan9ed1fd82017-03-09 18:46:41 -080043
44typedef std::map<std::pair<uint32_t, uint64_t>, float> CompRatioMap;
45
Saurabh Shah66c941b2016-07-06 17:34:05 -070046/*
47 * Drm Atomic Operation Codes
48 */
49enum struct DRMOps {
50 /*
51 * Op: Sets plane source crop
52 * Arg: uint32_t - Plane ID
53 * DRMRect - Source Rectangle
54 */
55 PLANE_SET_SRC_RECT,
56 /*
57 * Op: Sets plane destination rect
58 * Arg: uint32_t - Plane ID
59 * DRMRect - Dst Rectangle
60 */
61 PLANE_SET_DST_RECT,
62 /*
63 * Op: Sets plane zorder
64 * Arg: uint32_t - Plane ID
65 * uint32_t - zorder
66 */
67 PLANE_SET_ZORDER,
68 /*
69 * Op: Sets plane rotation flags
70 * Arg: uint32_t - Plane ID
71 * uint32_t - bit mask of rotation flags (See drm_mode.h for enums)
72 */
73 PLANE_SET_ROTATION,
74 /*
75 * Op: Sets plane alpha
76 * Arg: uint32_t - Plane ID
77 * uint32_t - alpha value
78 */
79 PLANE_SET_ALPHA,
80 /*
81 * Op: Sets the blend type
82 * Arg: uint32_t - Plane ID
83 * uint32_t - blend type (see DRMBlendType)
84 */
85 PLANE_SET_BLEND_TYPE,
86 /*
87 * Op: Sets horizontal decimation
88 * Arg: uint32_t - Plane ID
89 * uint32_t - decimation factor
90 */
91 PLANE_SET_H_DECIMATION,
92 /*
93 * Op: Sets vertical decimation
94 * Arg: uint32_t - Plane ID
95 * uint32_t - decimation factor
96 */
97 PLANE_SET_V_DECIMATION,
98 /*
Prabhanjan Kandula585aa652017-01-26 18:39:11 -080099 * Op: Sets source config flags
100 * Arg: uint32_t - Plane ID
101 * uint32_t - flags to enable or disable a specific op. E.g. deinterlacing
102 */
103 PLANE_SET_SRC_CONFIG,
104 /*
Saurabh Shah66c941b2016-07-06 17:34:05 -0700105 * Op: Sets frame buffer ID for plane. Set together with CRTC.
106 * Arg: uint32_t - Plane ID
107 * uint32_t - Framebuffer ID
108 */
109 PLANE_SET_FB_ID,
110 /*
111 * Op: Sets the crtc for this plane. Set together with FB_ID.
112 * Arg: uint32_t - Plane ID
113 * uint32_t - CRTC ID
114 */
115 PLANE_SET_CRTC,
116 /*
117 * Op: Sets acquire fence for this plane's buffer. Set together with FB_ID, CRTC.
118 * Arg: uint32_t - Plane ID
119 * uint32_t - Input fence
120 */
121 PLANE_SET_INPUT_FENCE,
122 /*
Saurabh Shah0ffee302016-11-22 10:42:11 -0800123 * Op: Sets scaler config on this plane.
124 * Arg: uint32_t - Plane ID
125 * uint64_t - Address of the scaler config object (version based)
126 */
127 PLANE_SET_SCALER_CONFIG,
128 /*
Rohit Kulkarni8622e362017-01-30 18:14:10 -0800129 * Op: Sets plane rotation destination rect
130 * Arg: uint32_t - Plane ID
131 * DRMRect - rotator dst Rectangle
132 */
133 PLANE_SET_ROTATION_DST_RECT,
134 /*
Saurabh Shah66c941b2016-07-06 17:34:05 -0700135 * Op: Activate or deactivate a CRTC
136 * Arg: uint32_t - CRTC ID
137 * uint32_t - 1 to enable, 0 to disable
138 */
139 CRTC_SET_ACTIVE,
140 /*
141 * Op: Sets display mode
142 * Arg: uint32_t - CRTC ID
143 * drmModeModeInfo* - Pointer to display mode
144 */
145 CRTC_SET_MODE,
146 /*
147 * Op: Sets an offset indicating when a release fence should be signalled.
148 * Arg: uint32_t - offset
149 * 0: non-speculative, default
150 * 1: speculative
151 */
152 CRTC_SET_OUTPUT_FENCE_OFFSET,
153 /*
Ramkumar Radhakrishnan9ed1fd82017-03-09 18:46:41 -0800154 * Op: Sets overall SDE core clock
155 * Arg: uint32_t - CRTC ID
156 * uint32_t - core_clk
157 */
158 CRTC_SET_CORE_CLK,
Ramkumar Radhakrishnan3c4de112017-05-24 22:38:30 -0700159 /*
160 * Op: Sets MNOC bus average bandwidth
Ramkumar Radhakrishnan9ed1fd82017-03-09 18:46:41 -0800161 * Arg: uint32_t - CRTC ID
162 * uint32_t - core_ab
163 */
164 CRTC_SET_CORE_AB,
165 /*
Ramkumar Radhakrishnan3c4de112017-05-24 22:38:30 -0700166 * Op: Sets MNOC bus instantaneous bandwidth
Ramkumar Radhakrishnan9ed1fd82017-03-09 18:46:41 -0800167 * Arg: uint32_t - CRTC ID
168 * uint32_t - core_ib
169 */
170 CRTC_SET_CORE_IB,
171 /*
Ramkumar Radhakrishnan3c4de112017-05-24 22:38:30 -0700172 * Op: Sets LLCC Bus average bandwidth
173 * Arg: uint32_t - CRTC ID
174 * uint32_t - llcc_ab
175 */
176 CRTC_SET_LLCC_AB,
177 /*
178 * Op: Sets LLCC Bus instantaneous bandwidth
179 * Arg: uint32_t - CRTC ID
180 * uint32_t - llcc_ib
181 */
182 CRTC_SET_LLCC_IB,
183 /*
184 * Op: Sets DRAM bus average bandwidth
185 * Arg: uint32_t - CRTC ID
186 * uint32_t - dram_ab
187 */
188 CRTC_SET_DRAM_AB,
189 /*
190 * Op: Sets DRAM bus instantaneous bandwidth
191 * Arg: uint32_t - CRTC ID
192 * uint32_t - dram_ib
193 */
194 CRTC_SET_DRAM_IB,
195 /*
196 * Op: Sets rotator clock for inline rotation
197 * Arg: uint32_t - CRTC ID
198 * uint32_t - rot_clk
199 */
200 CRTC_SET_ROT_CLK, /*
Saurabh Shah66c941b2016-07-06 17:34:05 -0700201 * Op: Returns release fence for this frame. Should be called after Commit() on
202 * DRMAtomicReqInterface.
203 * Arg: uint32_t - CRTC ID
204 * int * - Pointer to an integer that will hold the returned fence
205 */
206 CRTC_GET_RELEASE_FENCE,
207 /*
Ping Li281f48d2017-01-16 12:45:40 -0800208 * Op: Sets PP feature
209 * Arg: uint32_t - CRTC ID
210 * DRMPPFeatureInfo * - PP feature data pointer
211 */
212 CRTC_SET_POST_PROC,
213 /*
Saurabh Shahe9f55d72017-03-03 15:14:13 -0800214 * Op: Sets CRTC ROIs.
215 * Arg: uint32_t - CRTC ID
216 * uint32_t - number of ROIs
217 * DRMRect * - Array of CRTC ROIs
218 */
219 CRTC_SET_ROI,
220 /*
Saurabh Shah66c941b2016-07-06 17:34:05 -0700221 * Op: Returns retire fence for this commit. Should be called after Commit() on
222 * DRMAtomicReqInterface.
223 * Arg: uint32_t - Connector ID
224 * int * - Pointer to an integer that will hold the returned fence
225 */
226 CONNECTOR_GET_RETIRE_FENCE,
227 /*
228 * Op: Sets writeback connector destination rect
229 * Arg: uint32_t - Connector ID
230 * DRMRect - Dst Rectangle
231 */
232 CONNECTOR_SET_OUTPUT_RECT,
233 /*
234 * Op: Sets frame buffer ID for writeback connector.
235 * Arg: uint32_t - Connector ID
236 * uint32_t - Framebuffer ID
237 */
238 CONNECTOR_SET_OUTPUT_FB_ID,
Sushil Chauhan3396e202017-04-14 18:34:22 -0700239 /*
240 * Op: Sets power mode for connector.
241 * Arg: uint32_t - Connector ID
242 * uint32_t - Power Mode
243 */
244 CONNECTOR_SET_POWER_MODE,
Saurabh Shahe9f55d72017-03-03 15:14:13 -0800245 /*
246 * Op: Sets panel ROIs.
247 * Arg: uint32_t - Connector ID
248 * uint32_t - number of ROIs
249 * DRMRect * - Array of Connector ROIs
250 */
251 CONNECTOR_SET_ROI,
Saurabh Shah66c941b2016-07-06 17:34:05 -0700252};
253
Saurabh Shahf9266ee2017-04-19 15:25:46 -0700254enum struct DRMRotation {
255 FLIP_H = 0x1,
256 FLIP_V = 0x2,
Prabhanjan Kandula5bc7f8b2017-05-23 12:24:57 -0700257 ROT_180 = FLIP_H | FLIP_V,
Saurabh Shahf9266ee2017-04-19 15:25:46 -0700258 ROT_90 = 0x4,
259};
260
Sushil Chauhan3396e202017-04-14 18:34:22 -0700261enum struct DRMPowerMode {
262 ON,
263 DOZE,
264 DOZE_SUSPEND,
265 OFF,
266};
267
Saurabh Shah66c941b2016-07-06 17:34:05 -0700268enum struct DRMBlendType {
269 UNDEFINED = 0,
270 OPAQUE = 1,
271 PREMULTIPLIED = 2,
272 COVERAGE = 3,
273};
274
Prabhanjan Kandula585aa652017-01-26 18:39:11 -0800275enum struct DRMSrcConfig {
276 DEINTERLACE = 0,
277};
278
Saurabh Shah66c941b2016-07-06 17:34:05 -0700279/* Display type to identify a suitable connector */
280enum struct DRMDisplayType {
281 PERIPHERAL,
282 TV,
283 VIRTUAL,
284};
285
286struct DRMRect {
287 uint32_t left; // Left-most pixel coordinate.
288 uint32_t top; // Top-most pixel coordinate.
289 uint32_t right; // Right-most pixel coordinate.
290 uint32_t bottom; // Bottom-most pixel coordinate.
291};
292
293//------------------------------------------------------------------------
294// DRM Info Query Types
295//------------------------------------------------------------------------
296
297enum struct QSEEDVersion {
298 V1,
299 V2,
300 V3,
301};
302
Prabhanjan Kandulae6dfab92017-03-14 11:02:49 -0700303enum struct SmartDMARevision {
304 V1,
305 V2,
306};
307
Saurabh Shah66c941b2016-07-06 17:34:05 -0700308/* Per CRTC Resource Info*/
309struct DRMCrtcInfo {
310 bool has_src_split;
311 uint32_t max_blend_stages;
312 QSEEDVersion qseed_version;
Prabhanjan Kandulae6dfab92017-03-14 11:02:49 -0700313 SmartDMARevision smart_dma_rev;
Ramkumar Radhakrishnan9ed1fd82017-03-09 18:46:41 -0800314 float ib_fudge_factor;
315 float clk_fudge_factor;
316 uint32_t dest_scale_prefill_lines;
317 uint32_t undersized_prefill_lines;
318 uint32_t macrotile_prefill_lines;
319 uint32_t nv12_prefill_lines;
320 uint32_t linear_prefill_lines;
321 uint32_t downscale_prefill_lines;
322 uint32_t extra_prefill_lines;
323 uint32_t amortized_threshold;
324 uint64_t max_bandwidth_low;
325 uint64_t max_bandwidth_high;
326 uint32_t max_sde_clk;
327 CompRatioMap comp_ratio_rt_map;
328 CompRatioMap comp_ratio_nrt_map;
Saurabh Shah66c941b2016-07-06 17:34:05 -0700329};
330
331enum struct DRMPlaneType {
332 // Has CSC and scaling capability
333 VIG = 0,
334 // Has scaling capability but no CSC
335 RGB,
336 // No scaling support
337 DMA,
338 // Supports a small dimension and doesn't use a CRTC stage
339 CURSOR,
340 MAX,
341};
342
343struct DRMPlaneTypeInfo {
Prabhanjan Kandulae6dfab92017-03-14 11:02:49 -0700344 DRMPlaneType type;
345 uint32_t master_plane_id;
Saurabh Shah66c941b2016-07-06 17:34:05 -0700346 // FourCC format enum and modifier
347 std::vector<std::pair<uint32_t, uint64_t>> formats_supported;
348 uint32_t max_linewidth;
349 uint32_t max_upscale;
350 uint32_t max_downscale;
351 uint32_t max_horizontal_deci;
352 uint32_t max_vertical_deci;
Ramkumar Radhakrishnan9ed1fd82017-03-09 18:46:41 -0800353 uint64_t max_pipe_bandwidth;
Rohit Kulkarni8622e362017-01-30 18:14:10 -0800354 uint32_t cache_size; // cache size in bytes for inline rotation support.
Saurabh Shah66c941b2016-07-06 17:34:05 -0700355};
356
Prabhanjan Kandulae6dfab92017-03-14 11:02:49 -0700357// All DRM Planes as map<Plane_id , plane_type_info> listed from highest to lowest priority
358typedef std::vector<std::pair<uint32_t, DRMPlaneTypeInfo>> DRMPlanesInfo;
Saurabh Shah66c941b2016-07-06 17:34:05 -0700359
360enum struct DRMTopology {
Rohit Kulkarni2faa91c2017-06-05 15:43:48 -0700361 UNKNOWN, // To be compat with driver defs in sde_rm.h
Saurabh Shah66c941b2016-07-06 17:34:05 -0700362 SINGLE_LM,
Rohit Kulkarni2faa91c2017-06-05 15:43:48 -0700363 SINGLE_LM_DSC,
Saurabh Shah66c941b2016-07-06 17:34:05 -0700364 DUAL_LM,
Rohit Kulkarni2faa91c2017-06-05 15:43:48 -0700365 DUAL_LM_DSC,
Saurabh Shah66c941b2016-07-06 17:34:05 -0700366 DUAL_LM_MERGE,
Rohit Kulkarni2faa91c2017-06-05 15:43:48 -0700367 DUAL_LM_MERGE_DSC,
368 DUAL_LM_DSCMERGE,
369 PPSPLIT,
Saurabh Shah66c941b2016-07-06 17:34:05 -0700370};
371
372enum struct DRMPanelMode {
373 VIDEO,
374 COMMAND,
375};
376
377/* Per Connector Info*/
378struct DRMConnectorInfo {
379 uint32_t mmWidth;
380 uint32_t mmHeight;
381 uint32_t type;
382 uint32_t num_modes;
383 drmModeModeInfo *modes;
384 DRMTopology topology;
385 std::string panel_name;
386 DRMPanelMode panel_mode;
387 bool is_primary;
388 // Valid only if DRMPanelMode is VIDEO
389 bool dynamic_fps;
390 // FourCC format enum and modifier
391 std::vector<std::pair<uint32_t, uint64_t>> formats_supported;
392 // Valid only if type is DRM_MODE_CONNECTOR_VIRTUAL
393 uint32_t max_linewidth;
Saurabh Shahe9f55d72017-03-03 15:14:13 -0800394 // Valid only if mode is command
395 int num_roi;
396 int xstart;
397 int ystart;
398 int walign;
399 int halign;
400 int wmin;
401 int hmin;
402 bool roi_merge;
Prabhanjan Kandula5bc7f8b2017-05-23 12:24:57 -0700403 DRMRotation panel_orientation;
Sushil Chauhan80e58432017-07-06 11:39:17 -0700404 drm_panel_hdr_properties panel_hdr_prop;
Saurabh Shah66c941b2016-07-06 17:34:05 -0700405};
406
407/* Identifier token for a display */
408struct DRMDisplayToken {
409 uint32_t conn_id;
410 uint32_t crtc_id;
411};
412
Ping Li281f48d2017-01-16 12:45:40 -0800413enum DRMPPFeatureID {
414 kFeaturePcc,
415 kFeatureIgc,
416 kFeaturePgc,
417 kFeatureMixerGc,
418 kFeaturePaV2,
419 kFeatureDither,
420 kFeatureGamut,
421 kFeaturePADither,
422 kPPFeaturesMax,
423};
424
425enum DRMPPPropType {
426 kPropEnum,
427 kPropRange,
428 kPropBlob,
429 kPropTypeMax,
430};
431
432struct DRMPPFeatureInfo {
433 DRMPPFeatureID id;
434 DRMPPPropType type;
435 uint32_t version;
436 uint32_t payload_size;
437 void *payload;
438};
439
Saurabh Shah0ffee302016-11-22 10:42:11 -0800440struct DRMScalerLUTInfo {
441 uint32_t dir_lut_size = 0;
442 uint32_t cir_lut_size = 0;
443 uint32_t sep_lut_size = 0;
444 uint64_t dir_lut = 0;
445 uint64_t cir_lut = 0;
446 uint64_t sep_lut = 0;
447};
448
Saurabh Shah66c941b2016-07-06 17:34:05 -0700449/* DRM Atomic Request Property Set.
450 *
451 * Helper class to create and populate atomic properties of DRM components
452 * when rendered in DRM atomic mode */
453class DRMAtomicReqInterface {
454 public:
455 virtual ~DRMAtomicReqInterface() {}
456 /* Perform request operation.
457 *
458 * [input]: opcode: operation code from DRMOps list.
459 * var_arg: arguments for DRMOps's can differ in number and
460 * data type. Refer above DRMOps to details.
461 * [return]: Error code if the API fails, 0 on success.
462 */
463 virtual int Perform(DRMOps opcode, ...) = 0;
464
465 /*
466 * Commit the params set via Perform(). Also resets the properties after commit. Needs to be
467 * called every frame.
468 * [input]: synchronous: Determines if the call should block until a h/w flip
469 * [return]: Error code if the API fails, 0 on success.
470 */
471 virtual int Commit(bool synchronous) = 0;
472 /*
473 * Validate the params set via Perform().
474 * [return]: Error code if the API fails, 0 on success.
475 */
476 virtual int Validate() = 0;
477};
478
479class DRMManagerInterface;
480
481/* Populates a singleton instance of DRMManager */
482typedef int (*GetDRMManager)(int fd, DRMManagerInterface **intf);
483
484/* Destroy DRMManager instance */
Saurabh Shahab7807c2017-02-08 15:41:08 -0800485typedef int (*DestroyDRMManager)();
Saurabh Shah66c941b2016-07-06 17:34:05 -0700486
487/*
488 * DRM Manager Interface - Any class which plans to implement helper function for vendor
489 * specific DRM driver implementation must implement the below interface routines to work
490 * with SDM.
491 */
492
493class DRMManagerInterface {
494 public:
495 virtual ~DRMManagerInterface() {}
496
497 /*
498 * Since SDM completely manages the planes. GetPlanesInfo will provide all
499 * the plane information.
500 * [output]: DRMPlanesInfo: Resource Info for planes.
501 */
502 virtual void GetPlanesInfo(DRMPlanesInfo *info) = 0;
503
504 /*
505 * Will provide all the information of a selected crtc.
506 * [input]: Use crtc id 0 to obtain system wide info
507 * [output]: DRMCrtcInfo: Resource Info for the given CRTC id.
508 */
509 virtual void GetCrtcInfo(uint32_t crtc_id, DRMCrtcInfo *info) = 0;
510
511 /*
512 * Will provide all the information of a selected connector.
513 * [output]: DRMConnectorInfo: Resource Info for the given connector id
514 */
515 virtual void GetConnectorInfo(uint32_t conn_id, DRMConnectorInfo *info) = 0;
516
517 /*
Ping Li281f48d2017-01-16 12:45:40 -0800518 * Will query post propcessing feature info of a CRTC.
519 * [output]: DRMPPFeatureInfo: CRTC post processing feature info
520 */
Ramkumar Radhakrishnan9ed1fd82017-03-09 18:46:41 -0800521 virtual void GetCrtcPPInfo(uint32_t crtc_id, DRMPPFeatureInfo &info) = 0;
Ping Li281f48d2017-01-16 12:45:40 -0800522 /*
Saurabh Shah66c941b2016-07-06 17:34:05 -0700523 * Register a logical display to receive a token.
524 * Each display pipeline in DRM is identified by its CRTC and Connector(s).
525 * On display connect(bootup or hotplug), clients should invoke this interface to
526 * establish the pipeline for the display and should get a DisplayToken
527 * populated with crtc and connnector(s) id's. Here onwards, Client should
528 * use this token to represent the display for any Perform operations if
529 * needed.
530 *
531 * [input]: disp_type - Peripheral / TV / Virtual
532 * [output]: DRMDisplayToken - CRTC and Connector id's for the display
533 * [return]: 0 on success, a negative error value otherwise
534 */
535 virtual int RegisterDisplay(DRMDisplayType disp_type, DRMDisplayToken *tok) = 0;
536
537 /* Client should invoke this interface on display disconnect.
538 * [input]: DRMDisplayToken - identifier for the display.
539 */
540 virtual void UnregisterDisplay(const DRMDisplayToken &token) = 0;
541
542 /*
543 * Creates and returns an instance of DRMAtomicReqInterface corresponding to a display token
544 * returned as part of RegisterDisplay API. Needs to be called per display.
545 * [input]: DRMDisplayToken that identifies a display pipeline
546 * [output]: Pointer to an instance of DRMAtomicReqInterface.
547 * [return]: Error code if the API fails, 0 on success.
548 */
549 virtual int CreateAtomicReq(const DRMDisplayToken &token, DRMAtomicReqInterface **intf) = 0;
550
551 /*
552 * Destroys the instance of DRMAtomicReqInterface
553 * [input]: Pointer to a DRMAtomicReqInterface
554 * [return]: Error code if the API fails, 0 on success.
555 */
556 virtual int DestroyAtomicReq(DRMAtomicReqInterface *intf) = 0;
Saurabh Shah0ffee302016-11-22 10:42:11 -0800557 /*
558 * Sets the global scaler LUT
559 * [input]: LUT Info
560 * [return]: Error code if the API fails, 0 on success.
561 */
562 virtual int SetScalerLUT(const DRMScalerLUTInfo &lut_info) = 0;
Saurabh Shah66c941b2016-07-06 17:34:05 -0700563};
Saurabh Shah0ffee302016-11-22 10:42:11 -0800564
Saurabh Shah66c941b2016-07-06 17:34:05 -0700565} // namespace sde_drm
566#endif // __DRM_INTERFACE_H__