[cairo-commit] papers/opengl_freenix04 opengl_freenix04.tex, 1.50, 1.51

Peter Nilsson commit at pdx.freedesktop.org
Fri Apr 23 08:16:57 PDT 2004


Committed by: peter

Update of /cvs/cairo/papers/opengl_freenix04
In directory pdx:/tmp/cvs-serv29951

Modified Files:
	opengl_freenix04.tex 
Log Message:
Final touch


Index: opengl_freenix04.tex
===================================================================
RCS file: /cvs/cairo/papers/opengl_freenix04/opengl_freenix04.tex,v
retrieving revision 1.50
retrieving revision 1.51
diff -C2 -d -r1.50 -r1.51
*** a/opengl_freenix04.tex	8 Apr 2004 15:35:05 -0000	1.50
--- b/opengl_freenix04.tex	23 Apr 2004 15:16:49 -0000	1.51
***************
*** 8,12 ****
  \usepackage{amsmath}
  
! \def\libname{glitz}
  \def\Libname{Glitz}
  \def\libnamespace{glitz}
--- 8,12 ----
  \usepackage{amsmath}
  
! \def\libname{Glitz}
  \def\Libname{Glitz}
  \def\libnamespace{glitz}
***************
*** 58,70 ****
    \section{Introduction}
  
!   There is an obvious trend visible in the appearance of modern window systems
    and 2D graphics in general these days. 
    They all become more and more loaded with graphical features and visual 
    effects for each available product generation. 
    
!   Unfortunately, these features demand a lot of computation time from the CPU.
!   In the past this has meant a slowdown throughout the entire system as
!   well as a significant limitation in the kind of visual effects that could be 
!   used. 
  
    In the field of 3D graphics, similar problems have been solved by
--- 58,70 ----
    \section{Introduction}
  
!   There is a trend visible in the appearance of modern window systems
    and 2D graphics in general these days. 
    They all become more and more loaded with graphical features and visual 
    effects for each available product generation. 
    
!   Unfortunately, these features means heavy computations that takes a lot 
!   of time when carried out by the general CPU. In the past this has meant a 
!   slowdown throughout the entire system as well as a significant limitation 
!   in the kind of visual effects that could be used. 
  
    In the field of 3D graphics, similar problems have been solved by
***************
*** 84,92 ****
  
    This paper presents \libname, an open source implementation of a 2D graphics 
!   library that uses OpenGL~\cite{gl:1.2.1} to realize a hardware
    accelerated high performance rendering environment.
  
    Furthermore, these ideas have been applied to the X Window System 
!   (X)~\cite{x}, to see if they could improve hardware acceleration of
    graphical applications and thereby making way for more advanced graphics. 
  
--- 84,92 ----
  
    This paper presents \libname, an open source implementation of a 2D graphics 
!   library that uses OpenGL\cite{gl:1.2.1} to realize a hardware
    accelerated high performance rendering environment.
  
    Furthermore, these ideas have been applied to the X Window System 
!   (X)\cite{x}, to see if they could improve hardware acceleration of
    graphical applications and thereby making way for more advanced graphics. 
  
***************
*** 104,108 ****
  
    One major improvement was made with the introduction of the X Render
!   Extension (Render)~\cite{render:2000}. Render has widely been accepted 
    as the new rendering model for X. It brought the desired graphics 
    operations to the applications and thereby filled in the gaps of the 
--- 104,108 ----
  
    One major improvement was made with the introduction of the X Render
!   Extension (Render)\cite{render:2000}. Render has widely been accepted 
    as the new rendering model for X. It brought the desired graphics 
    operations to the applications and thereby filled in the gaps of the 
***************
*** 111,116 ****
    polygon rendering, text rendering and image transformations. The core 
    of Render is its image compositing model, which borrows fundamental notions
!   from the Plan 9 window system~\cite{pike:draw}. Render provides a unified
!   rendering operation, which supports the Porter-Duff~\cite{porterduff:1984}
    style compositing operators. All pixel manipulations are carried out 
    through this operation. This provides for a simple and consistent model
--- 111,116 ----
    polygon rendering, text rendering and image transformations. The core 
    of Render is its image compositing model, which borrows fundamental notions
!   from the Plan 9 window system\cite{pike:draw}. Render provides a unified
!   rendering operation, which supports the Porter-Duff\cite{porterduff:1984}
    style compositing operators. All pixel manipulations are carried out 
    through this operation. This provides for a simple and consistent model
***************
*** 120,124 ****
    server-side. Graphics operations that are performed on server-side
    can be accelerated by graphics hardware. XFree86's\cite{xfree86} Render
!   implementation uses XFree86 Acceleration Architecture (XAA)~\cite{xaa} to
    achieve hardware accelerated rendering. XAA breaks down complex Render
    operations into simpler ones and accelerates them if support is provided
--- 120,124 ----
    server-side. Graphics operations that are performed on server-side
    can be accelerated by graphics hardware. XFree86's\cite{xfree86} Render
!   implementation uses XFree86 Acceleration Architecture (XAA)\cite{xaa} to
    achieve hardware accelerated rendering. XAA breaks down complex Render
    operations into simpler ones and accelerates them if support is provided
***************
*** 151,157 ****
    operations, not always suitable for direct use by application developers.  
    A higher level graphics API is needed on top of the Render model to make 
!   it useful for this purpose. The cairo (formerly known as Xr~\cite{xr}) 
!   library is a modern, open source, cross-platform 2D graphics API designed
!   for multiple output devices. With its PDF~\cite{pdf14}-like 2D graphics API,
    it provides an attractive and powerful vector based drawing environment. 
    Cairo uses a backend system to realize its multiple output formats. 
--- 151,157 ----
    operations, not always suitable for direct use by application developers.  
    A higher level graphics API is needed on top of the Render model to make 
!   it useful for this purpose. The cairo library (formerly known as Xr\cite{xr}) 
!   is a modern, open source, cross-platform 2D graphics API designed
!   for multiple output devices. With its PDF\cite{pdf14}-like 2D graphics API,
    it provides an attractive and powerful vector based drawing environment. 
    Cairo uses a backend system to realize its multiple output formats. 
***************
*** 178,184 ****
      \end{centering}
    \end{figure}
!   
!   OpenGL is the obvious way to accelerate graphics output, in 2D as well as 
!   3D. Most people think of OpenGL as a 3D graphics API, which is 
    understandable because it was used primarily for 3D applications like
    visualizations and games in the past. However, it is just as well suited for
--- 178,184 ----
      \end{centering}
    \end{figure}
!  
!   OpenGL can be used to accelerate 2D graphics output, just as with 3D.
!   Most people think of OpenGL as a 3D graphics API, which is 
    understandable because it was used primarily for 3D applications like
    visualizations and games in the past. However, it is just as well suited for
***************
*** 236,241 ****
    graphics engines that can perform hardware accelerated rendering in a
    similar manner to the model discussed here. The one, that has probably
!   attracted most attention is Apple's Quartz Extreme~\cite{quartzextreme}
!   compositing engine used in Mac OS X~\cite{macosx}. The user interface in
    Mac OS X is loaded with advanced graphics effects of the nature discussed
    in this paper. They all seem to run smoothly without bringing too much
--- 236,241 ----
    graphics engines that can perform hardware accelerated rendering in a
    similar manner to the model discussed here. The one, that has probably
!   attracted most attention is Apple's Quartz Extreme\cite{quartzextreme}
!   compositing engine used in Mac OS X\cite{macosx}. The user interface in
    Mac OS X is loaded with advanced graphics effects of the nature discussed
    in this paper. They all seem to run smoothly without bringing too much
***************
*** 243,252 ****
    
    Microsoft is also developing something similar in their 
!   Avalon~\cite{avalon} graphics engine. It will be a fundamental part for
    hardware accelerated 2D graphics in the next windows version, currently
!   being developed under the name Windows Longhorn~\cite{longhorn}.
  
    \Libname{} is not the first Open Source graphics library that 
!   has been layered on top of OpenGL. An example, Evas~\cite{evas}; 
    a hardware accelerated canvas API, which is part of the Enlightenment
    Foundation Libraries. \Libname{} is unique compared to these libraries
--- 243,252 ----
    
    Microsoft is also developing something similar in their 
!   Avalon\cite{avalon} graphics engine. It will be a fundamental part for
    hardware accelerated 2D graphics in the next windows version, currently
!   being developed under the name Windows Longhorn\cite{longhorn}.
  
    \Libname{} is not the first Open Source graphics library that 
!   has been layered on top of OpenGL. An example, Evas\cite{evas}; 
    a hardware accelerated canvas API, which is part of the Enlightenment
    Foundation Libraries. \Libname{} is unique compared to these libraries
***************
*** 282,290 ****
      for the core of the library to be compiled for multiple backends.
  
!     As of now \libname{} has two backends, for GLX~\cite{glx} and
!     AGL~\cite{agl}. GLX is the OpenGL layer used on Unix~\cite{unix:1977} like
      systems to provide a glue layer between OpenGL and X. AGL is an OpenGL
!     layer available in Mac OS. Backends for other OpenGL layers will be 
!     added later on.
  
      \subsection{Rendering Model}
--- 282,290 ----
      for the core of the library to be compiled for multiple backends.
  
!     As of now \libname{} has two backends, for GLX\cite{glx} and
!     AGL\cite{agl}. GLX is the OpenGL layer used on Unix\cite{unix:1977} like
      systems to provide a glue layer between OpenGL and X. AGL is an OpenGL
!     layer available in Mac OS. Backends for other OpenGL layers can be added 
!     in the future.
  
      \subsection{Rendering Model}
***************
*** 314,318 ****
      Off-screen drawing is an essential part of an immediate mode 2D graphics
      API. Support for off-screen drawing in OpenGL has been around
!     for a long time on IRIX~\cite{irix} systems and other workstations, but
      it is not until recently that it has become a standard feature on the
      regular home desktop computer.
--- 314,318 ----
      Off-screen drawing is an essential part of an immediate mode 2D graphics
      API. Support for off-screen drawing in OpenGL has been around
!     for a long time on IRIX\cite{irix} systems and other workstations, but
      it is not until recently that it has become a standard feature on the
      regular home desktop computer.
***************
*** 581,585 ****
  
      Built in text handling is planned for future versions of the library and
!     tests have proven that this will increase glyph rendering speed to
      around 200000 glyphs per second.
  
--- 581,585 ----
  
      Built in text handling is planned for future versions of the library and
!     tests have indicated that this should increase glyph rendering speed to
      around 200000 glyphs per second.
  
***************
*** 664,721 ****
      of performance.
  
!     \subsubsection{Useful Convolution Kernels}
! 
!     Table~\ref{table:conv} presents three useful convolution kernels and
!     figure ~\ref{fig:conv_original} and ~\ref{fig:conv_gaussian} show the
!     results of filtering an image using a Gaussian convolution kernel.
! 
!     \begin{table}[htbp]
!       \begin{tabular}{l l}
!         Gaussian Blur Filter: &        
!         \begin{math}
!           \begin{bmatrix}
!             0& 1& 0\\
!             1& 4& 1\\
!             0& 1& 0
!           \end{bmatrix}
!         \end{math}
!         \\\vspace{5pt} & \vspace{5pt}\\
!         High Pass (HP) Filter: &
!         \begin{math}
!           \begin{bmatrix}
!             0& -1& 0\\
!             -1& 5& -1\\
!             0& -1& 0
!           \end{bmatrix}
!         \end{math}
!         \\\vspace{5pt} & \vspace{5pt}\\
!         Emboss Filter: &
!         \begin{math}
!           \begin{bmatrix}
!             1& 0& 0\\
!             0& 0& 0\\
!             0& 0& -1
!           \end{bmatrix}
!         \end{math}
!       \end{tabular}
!       \caption{\small\itshape Useful convolution kernels}
!       \label{table:conv}
!     \end{table}
  
      \begin{figure}[h!tbp]
        \begin{centering}
          \epsfig{file=conv-original.eps}
!         \small\itshape
!         \caption{\small\itshape Original image}
!         \label{fig:conv_original}
!       \end{centering}
!     \end{figure}
! 
!     \begin{figure}[h!tbp]
!       \begin{centering}
          \epsfig{file=conv-gaussian.eps}
!         \small\itshape
!         \caption{\small\itshape Image after Gaussian convolution filtering}
!         \label{fig:conv_gaussian}
        \end{centering}
      \end{figure}
--- 664,690 ----
      of performance.
  
!     This is an example of a convolution kernel representing a 
!     gaussian blur filter. 
!     
!     \vspace{10pt}
!     \begin{math}
!       \begin{bmatrix}
!         0& 1& 0\\
!         1& 4& 1\\
!         0& 1& 0
!       \end{bmatrix}
!     \end{math}
!     \vspace{10pt}
  
+     Figure~\ref{gauss} shows an image before and after applying a gaussian
+     filter using the convolution kernel above.
+ 	   
      \begin{figure}[h!tbp]
        \begin{centering}
          \epsfig{file=conv-original.eps}
! 	\\~\\
          \epsfig{file=conv-gaussian.eps}
!         \caption{\small\itshape An image before and after applying a Gaussian convolution filter}
!         \label{gauss}
        \end{centering}
      \end{figure}
***************
*** 729,734 ****
      In addition to the 2D drawing functions, \libname{} also
      provides a set of functions that make it possible to use
!     \libname{} as a cross-platform OpenGL layer. The following three 
!     functions allow the application to use ordinary OpenGL calls
      to draw on any \libname{} surface.
  
--- 698,706 ----
      In addition to the 2D drawing functions, \libname{} also
      provides a set of functions that make it possible to use
!     \libname{} as a cross-platform OpenGL layer. 
!     
!     \newpage
!     
!     The following three functions allow the application to use ordinary OpenGL calls
      to draw on any \libname{} surface.
  
***************
*** 893,897 ****
    This section presents results from a benchmark utility named rendermark.
    Rendermark compares the rendering performance of \libname{}, Xrender and
!   Imlib2~\cite{imlib2} by doing a set of basic operations a repeated number
    of times. Comparison with Imlib2 is interesting as it is promoted as
    the fastest image compositing, rendering and manipulation library for X.
--- 865,869 ----
    This section presents results from a benchmark utility named rendermark.
    Rendermark compares the rendering performance of \libname{}, Xrender and
!   Imlib2\cite{imlib2} by doing a set of basic operations a repeated number
    of times. Comparison with Imlib2 is interesting as it is promoted as
    the fastest image compositing, rendering and manipulation library for X.
***************
*** 1058,1062 ****
    \subsubsection{Hardware Accelerated Xrender}
  
!   Nvidias's~\cite{nvidia} binary XFree86 drivers contains an experimental
    feature that allows the driver to hardware accelerate the Render extension
    on XFree86's X server. Some Render operations are known to perform
--- 1030,1034 ----
    \subsubsection{Hardware Accelerated Xrender}
  
!   Nvidias's\cite{nvidia} binary XFree86 drivers contains an experimental
    feature that allows the driver to hardware accelerate the Render extension
    on XFree86's X server. Some Render operations are known to perform





More information about the cairo-commit mailing list