Implementation of OpenVG on Embedded Systems

임베디드 시스템을 위한 OpenVG 구현

  • 이환용 ((주)휴원, 경북대학교 전자전기컴퓨터학부) ;
  • 백낙훈 (경북대학교 전자전기컴퓨터학부)
  • Published : 2009.03.30

Abstract

Embedded systems and web browsers have started to provide two-dimensional vector graphics features, to finally support scalability of graphics outputs, while traditional graphics systems have focused on the raster and bitmap operations. Nowadays, SVG and Flash are actively used while OpenVG from Khronos group plays the role of a de facto low-level API standard to support them. In this paper, we represent the design and implementation process and the final results of an OpenVG implementation, AlexVG. From its design stage, our implementation aims at the cooperation with SVG-Tiny, another de facto standard for embedded systems. Currently, our overall system provides not only the OpenVG core features but also variety of OpenVG application programs and SVG-Tiny media file playing capabilities. For the conformance with the standard specifications, our system completely passed the whole OpenVG conformance test suites and the graphics output portions of the SVG-Tiny conformance test suites. From the performance point of view, we focused on the efficiency and effectiveness especially on the mobile phones and embedded devices with limited resources. As the result, it showed impressive benchmarks on the small-scale CPU's such as ARM's, even without neither any other libraries nor acceleration hardware.

기존의 2차원 그래픽스 환경에서는 비트맵이나 래스터 위주의 연산들이 주가 되었지만, 최근에는 범위성(範圍性, scalability)을 지원하기 위해서, 임베디드 시스템과 웹 브라우저를 중심으로 2차원 스케일러블 벡터 그래픽스 기능(scalable vector graphics feature)을 제공하고 있다. 현재는 Flash, SVG 등이 활발히 사용되고 있으며, 이를 지원하기 위한 하위 라이브러리 표준으로는 크로노스 그룹(Khronos Group)의 OpenVG가 실질적 API 표준(de facto API standard)의 역할을 담당하고 있다. 이 논문에서는 OpenVG 표준의 구현 결과인 AlexVG의 설계 및 구현 과정, 최종 결과를 제시한다. AlexVG의 구현은 설계 당시부터 또다른 실질적 표준인 SVG-Tiny와의 연계를 염두에 두었고, 현재 OpenVG의 응용 프로그램들은 물론이고, SVG-Tiny 표준에 따른 미디어 파일들을 재생할 수 있는 능력을 제공한다. 제공하는 기능 면에서 본다면, AlexVG는 OpenVG 적합성 검사(conformance test)를 100% 통과하였으며, SVG-Tiny 적합성 검사의 그래픽스 관련 부분도 100% 통과하였다. 성능 면에서는 자원의 제한이 심한 휴대용 기기들과 임베디드 기기들에서의 효율성에 초점을 맞추었다. 그 결과로, 기존의 참조 구현(reference implementation)에 비하여 획기적인 속도 향상을 가져 왔으며, 특히 ARM 등의 저성능 CPU에서도 다른 라이브러리나 하드웨어 지원 없이 우수한 실행 속도를 보이고 있다.

Keywords

References

  1. W3C, Scalable Vector Graphics(SVG) Tiny 1.2 Specification, W3C Recommendation, 2006.
  2. T. Evans, Introducing Macromedia Flash Lite 1.1, Macromedia Developer Center, 2004.
  3. Macromedia Inc., Macromedia flash developer center, http://www.adobe.com/devnet/flash.
  4. W3C, Scalable vector graphics, http://www.w3.org/Graphics/SVG/.
  5. W3C, Extensible Markup Language, http://www.w3.org/XML/.
  6. Mozilla Developer Center, SVG in FireFox, http://developer.mozilla.org/en/docs/SVG_in_Firefox.
  7. Opera Software, SVG in Opera, http://www.opera.com/products/desktop/svg/.
  8. Adove Systems Inc., SVG zone, http://www.adobe.com/svg/.
  9. Khronos Group, Khronos group home page, http://www.khronos.org/.
  10. Khronos Group, OpenVG home page, http://www.khronos.org/openvg/.
  11. Daniel Rice, Open VG Specification, version 1.0.1, Khronos Group, 2005.
  12. Huone Inc., Huone home page, http://www.hu1.com/.
  13. Hybrid Graphics Ltd., OpenVG reference implementation, httpt//www.hybrid.fi/main/extra/openvg_ri.php.
  14. Mazatech, AmanithVG home page, http://www.amanithvg.com/.
  15. Pixel Infinity, ShivaVG: open-source ANSI C OpenVG, http://ivanleben.blogspot.com/2007/07/shivavg-open-source-ansi-c-openvg.html.
  16. Z. Rusin, QtOpenVG, http://zrusin.blogspot.com/2007/01/openvg_116899762231694078.html.
  17. M. Segal and K. Akeley, The OpenGL Graphics System: A Specification, version 2.1, Silicon Graphics, 2006.
  18. D. Blythe, A Munshi, and J. Leech, OpenGL ES Common/Common-Lite Profile Specification, version 1.1, Khronos Group, 2007.
  19. Trolltech, Qt cross-platform application framework, http://trolltech.com/products/qt/.
  20. Khronos Group, OpenVG Conformance Test Process, OpenVG Workgroup, 2005.
  21. S.-Y. Lee, S. Kim, J. Chung, and B.-U. Choi, "Salable vector graphics (openVG) for creating animation image in embedded systems," Knowledge-Based Intelligent Inform. and Eng. Sys., 11th Int'l Conf.(KES 2007), 2007.
  22. D. Kim, K. Cha, and S. Chae, "A high-performance OpenVG accelerator with dual-scanline filling rendering", IEEE Trans. on Consumer Electronics, Vol.54, No.3, pp. 1301-1311, 2008.
  23. W3C, Scalable Vector Graphics(SVG) Full 1.2 Specification, W3C Recommendation, 2006.
  24. The 3rd Generation Partnership Project, 3GPP home page, http://www.3gpp.org/.
  25. Java Community Process, JSR226: Scaleable 2D Vector Graphics API for J2ME, Java Community Process, 2005.
  26. Java Community Process, JSR271: Mobile Information Device Profile 3, Java Community Process, 2006.
  27. Sun Microsystems Inc., Mobile information device profile(MIDP), http://java.sun.com/products/midp/.
  28. Java Community Process, JSR287: Scaleable 2D Vector Graphics API 2.0 for Java ME, Java Community Process, 2006.
  29. N. Baek and S. R. Maeng, "A unified reference model for CGM/CGI and its implementation," Computer Standards & Interfaces, Vol.18, No.5, pp. 451-467, 1997. https://doi.org/10.1016/S0920-5489(97)00002-0
  30. Khronos Group, Native Platform Graphics Interface 1.2, Khronos Group, 2005.
  31. ARM, Fixed Point Arithmetic on the ARM, Application Note 33, ARM, 1996.
  32. D. Hough, "Applications of the proposed IEEE-754 standard for floating point arithmetic," IEEE Computer, Vol.14, No.3, pp. 70-74, 1981.