\hypertarget{group__Ecore__Drm2__Fb__Group}{}\section{Drm framebuffer functions}
\label{group__Ecore__Drm2__Fb__Group}\index{Drm framebuffer functions@{Drm framebuffer functions}}


Functions that deal with setup of framebuffers.  


\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$ \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gaf4c02838eaa0be91acf9449fca4afdc0}{ecore\+\_\+drm2\+\_\+fb\+\_\+create}} (int fd, int width, int height, int depth, int bpp, unsigned int format)
\begin{DoxyCompactList}\small\item\em Create a new framebuffer object. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void $\ast$ \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga9ec0bb02d50b32384ea77043af874705}{ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Get a framebuffer\textquotesingle{}s mmap\textquotesingle{}d data. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} unsigned int \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga299c59febe9acdfcfd71f64e06f435f4}{ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Get a framebuffer\textquotesingle{}s size. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} unsigned int \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gab118797821bc554154c8a141769889f7}{ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Get a framebuffer\textquotesingle{}s stride. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gafabe8f7edef512bffbd4f821ab18eda6}{ecore\+\_\+drm2\+\_\+fb\+\_\+dirty}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb, \mbox{\hyperlink{group__Eina__Rectangle__Group_gad1f49db9be2cd747f458ebf4718b6228}{Eina\+\_\+\+Rectangle}} $\ast$rects, unsigned int count)
\begin{DoxyCompactList}\small\item\em Mark regions of a framebuffer as dirty. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga627dd307d8a2da67b1863a8f854785da}{ecore\+\_\+drm2\+\_\+fb\+\_\+flip}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb, Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$output)
\begin{DoxyCompactList}\small\item\em Schedule a pageflip to the given Ecore\+\_\+\+Drm2\+\_\+\+Fb. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete}} (Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$output)
\begin{DoxyCompactList}\small\item\em Must be called by a page flip handler when the flip completes. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga50d08fd820118c75e1afba2a8ae0b4d3}{ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Return the Ecore\+\_\+\+Drm2\+\_\+\+Fb\textquotesingle{}s busy status. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gaae8f9d17c0db16fd00f238f9414b4c3a}{ecore\+\_\+drm2\+\_\+fb\+\_\+release}} (Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$o, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} panic)
\begin{DoxyCompactList}\small\item\em Try to force a framebuffer release for an output. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$ \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gabd3135720319a2154a1ce632fcee7f2f}{ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import}} (int fd, int width, int height, int depth, int bpp, unsigned int format, unsigned int strides\mbox{[}4\mbox{]}, int dmabuf\+\_\+fd\mbox{[}4\mbox{]}, int dmabuf\+\_\+fd\+\_\+count)
\begin{DoxyCompactList}\small\item\em Import a dmabuf object as a Framebuffer. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga12994af9ef3b3647da4538f3bd634698}{ecore\+\_\+drm2\+\_\+fb\+\_\+discard}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Discard a framebuffer object. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Functions that deal with setup of framebuffers. 



\subsection{Function Documentation}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gaf4c02838eaa0be91acf9449fca4afdc0}\label{group__Ecore__Drm2__Fb__Group_gaf4c02838eaa0be91acf9449fca4afdc0}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+create@{ecore\+\_\+drm2\+\_\+fb\+\_\+create}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+create@{ecore\+\_\+drm2\+\_\+fb\+\_\+create}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+create()}{ecore\_drm2\_fb\_create()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} Ecore\+\_\+\+Drm2\+\_\+\+Fb$\ast$ ecore\+\_\+drm2\+\_\+fb\+\_\+create (\begin{DoxyParamCaption}\item[{int}]{fd,  }\item[{int}]{width,  }\item[{int}]{height,  }\item[{int}]{depth,  }\item[{int}]{bpp,  }\item[{unsigned int}]{format }\end{DoxyParamCaption})}



Create a new framebuffer object. 


\begin{DoxyParams}{Parameters}
{\em fd} & \\
\hline
{\em width} & \\
\hline
{\em height} & \\
\hline
{\em depth} & \\
\hline
{\em bpp} & \\
\hline
{\em format} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A newly create framebuffer object, or N\+U\+LL on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga9ec0bb02d50b32384ea77043af874705}\label{group__Ecore__Drm2__Fb__Group_ga9ec0bb02d50b32384ea77043af874705}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get()}{ecore\_drm2\_fb\_data\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void$\ast$ ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Get a framebuffer\textquotesingle{}s mmap\textquotesingle{}d data. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The mmap\textquotesingle{}d area of the framebuffer or N\+U\+LL on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga299c59febe9acdfcfd71f64e06f435f4}\label{group__Ecore__Drm2__Fb__Group_ga299c59febe9acdfcfd71f64e06f435f4}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get()}{ecore\_drm2\_fb\_size\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} unsigned int ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Get a framebuffer\textquotesingle{}s size. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
size of the framebuffers\textquotesingle{} mmap\textquotesingle{}d data or 0 on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gab118797821bc554154c8a141769889f7}\label{group__Ecore__Drm2__Fb__Group_gab118797821bc554154c8a141769889f7}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get()}{ecore\_drm2\_fb\_stride\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} unsigned int ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Get a framebuffer\textquotesingle{}s stride. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
stride of the framebuffer or 0 on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gafabe8f7edef512bffbd4f821ab18eda6}\label{group__Ecore__Drm2__Fb__Group_gafabe8f7edef512bffbd4f821ab18eda6}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+dirty@{ecore\+\_\+drm2\+\_\+fb\+\_\+dirty}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+dirty@{ecore\+\_\+drm2\+\_\+fb\+\_\+dirty}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+dirty()}{ecore\_drm2\_fb\_dirty()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void ecore\+\_\+drm2\+\_\+fb\+\_\+dirty (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb,  }\item[{\mbox{\hyperlink{group__Eina__Rectangle__Group_gad1f49db9be2cd747f458ebf4718b6228}{Eina\+\_\+\+Rectangle}} $\ast$}]{rects,  }\item[{unsigned int}]{count }\end{DoxyParamCaption})}



Mark regions of a framebuffer as dirty. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
{\em rects} & \\
\hline
{\em count} & \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga627dd307d8a2da67b1863a8f854785da}\label{group__Ecore__Drm2__Fb__Group_ga627dd307d8a2da67b1863a8f854785da}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+flip@{ecore\+\_\+drm2\+\_\+fb\+\_\+flip}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+flip@{ecore\+\_\+drm2\+\_\+fb\+\_\+flip}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+flip()}{ecore\_drm2\_fb\_flip()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int ecore\+\_\+drm2\+\_\+fb\+\_\+flip (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb,  }\item[{Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$}]{output }\end{DoxyParamCaption})}



Schedule a pageflip to the given Ecore\+\_\+\+Drm2\+\_\+\+Fb. 

The caller is responsible for running a page flip handler and calling \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete()}} when it completes.


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
{\em output} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The result of drm\+Mode\+Page\+Flip function call
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}\label{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete@{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete@{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete()}{ecore\_drm2\_fb\_flip\_complete()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$}]{output }\end{DoxyParamCaption})}



Must be called by a page flip handler when the flip completes. 


\begin{DoxyParams}{Parameters}
{\em output} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Whether there\textquotesingle{}s an undisplayed buffer still in the queue.
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga50d08fd820118c75e1afba2a8ae0b4d3}\label{group__Ecore__Drm2__Fb__Group_ga50d08fd820118c75e1afba2a8ae0b4d3}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get@{ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get()}{ecore\_drm2\_fb\_busy\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Return the Ecore\+\_\+\+Drm2\+\_\+\+Fb\textquotesingle{}s busy status. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The busy status
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gaae8f9d17c0db16fd00f238f9414b4c3a}\label{group__Ecore__Drm2__Fb__Group_gaae8f9d17c0db16fd00f238f9414b4c3a}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+release@{ecore\+\_\+drm2\+\_\+fb\+\_\+release}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+release@{ecore\+\_\+drm2\+\_\+fb\+\_\+release}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+release()}{ecore\_drm2\_fb\_release()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+drm2\+\_\+fb\+\_\+release (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$}]{o,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{panic }\end{DoxyParamCaption})}



Try to force a framebuffer release for an output. 

This tries to release the next or optionally pending, or current buffer from the output. If successful there will be a release callback to the registered handler, and the fb will no longer be flagged busy.

Releasing buffers committed to scanout will potentially cause flicker, so this is only done when the panic flag is set.


\begin{DoxyParams}{Parameters}
{\em output} & The output to force release \\
\hline
{\em panic} & Try to release even buffers committed to scanout\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+UE if a buffer was released
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gabd3135720319a2154a1ce632fcee7f2f}\label{group__Ecore__Drm2__Fb__Group_gabd3135720319a2154a1ce632fcee7f2f}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import@{ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import@{ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import()}{ecore\_drm2\_fb\_dmabuf\_import()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} Ecore\+\_\+\+Drm2\+\_\+\+Fb$\ast$ ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import (\begin{DoxyParamCaption}\item[{int}]{fd,  }\item[{int}]{width,  }\item[{int}]{height,  }\item[{int}]{depth,  }\item[{int}]{bpp,  }\item[{unsigned int}]{format,  }\item[{unsigned int}]{strides\mbox{[}4\mbox{]},  }\item[{int}]{dmabuf\+\_\+fd\mbox{[}4\mbox{]},  }\item[{int}]{dmabuf\+\_\+fd\+\_\+count }\end{DoxyParamCaption})}



Import a dmabuf object as a Framebuffer. 


\begin{DoxyParams}{Parameters}
{\em fd} & \\
\hline
{\em width} & \\
\hline
{\em height} & \\
\hline
{\em depth} & \\
\hline
{\em bpp} & \\
\hline
{\em format} & \\
\hline
{\em stride} & \\
\hline
{\em dmabuf\+\_\+fd} & \\
\hline
{\em dmabuf\+\_\+fd\+\_\+count} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A newly created framebuffer object, or N\+U\+LL on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga12994af9ef3b3647da4538f3bd634698}\label{group__Ecore__Drm2__Fb__Group_ga12994af9ef3b3647da4538f3bd634698}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\+\_\+drm2\+\_\+fb\+\_\+discard@{ecore\+\_\+drm2\+\_\+fb\+\_\+discard}}
\index{ecore\+\_\+drm2\+\_\+fb\+\_\+discard@{ecore\+\_\+drm2\+\_\+fb\+\_\+discard}!Drm framebuffer functions@{Drm framebuffer functions}}
\subsubsection{\texorpdfstring{ecore\+\_\+drm2\+\_\+fb\+\_\+discard()}{ecore\_drm2\_fb\_discard()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void ecore\+\_\+drm2\+\_\+fb\+\_\+discard (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Discard a framebuffer object. 

Decreases the refcount on a fb object. It will be destroyed when it\textquotesingle{}s no longer attached to scanout or otherwise in use.


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}
