{"id":912,"date":"2012-08-11T14:20:42","date_gmt":"2012-08-11T21:20:42","guid":{"rendered":"http:\/\/www.graphics-muse.org\/wp\/?p=912"},"modified":"2012-08-11T14:20:45","modified_gmt":"2012-08-11T21:20:45","slug":"beaglebox-sgx-opengl-support-requires-softfp-if-you-build-your-own-toolchain","status":"publish","type":"post","link":"https:\/\/www.graphics-muse.org\/wp\/?p=912","title":{"rendered":"BeagleBox: SGX (openGL support) requires softfp if you build your own toolchain."},"content":{"rendered":"<p>I&#8217;ve got <a href=\"https:\/\/gitorious.org\/beaglebox\">BeagleBox<\/a> booting just fine now and have been hacking my way through <a href=\"http:\/\/software-dl.ti.com\/dsps\/dsps_public_sw\/sdo_sb\/targetcontent\/gfxsdk\/\">various releases of the SGX package<\/a> in order to get OpenGL support for the board.&nbsp; The latest release, 4_06_00_03, makes it possible to build the required kernel drivers and demo applications fairly easily.&nbsp; But there are caveats.<\/p>\n<p>First, the SGX package has binary libraries that are built using <a href=\"http:\/\/wiki.debian.org\/ArmHardFloatPort\/#Background_information\">softfp<\/a>.&nbsp; This means the library will be a little slower than libraries built with <a href=\"http:\/\/wiki.debian.org\/ArmHardFloatPort\/#Background_information\">hardfp<\/a> support.&nbsp; However, to get hardfp support you have to use specially built SGX libraries available from Robert Nelson via his <a href=\"http:\/\/elinux.org\/BeagleBoardUbuntu#SGX_Video_Acceleration\">Ubuntu builds for BeagleBoard<\/a>.&nbsp; Unfortunately, to use these you pretty much need to use the CodeSourcery toolchain (see the README.txt in Robert&#8217;s <a href=\"http:\/\/rcn-ee.net\/sgx\/armhf\/sgx-hardfp.tar.gz\">sgx_hardfp.tar.gz<\/a> package that is downloaded via his sgx_build_modules.sh script that used to be part of his <a href=\"https:\/\/github.com\/RobertCNelson\/stable-kernel\">stable-kernel tree<\/a>, though it doesn&#8217;t appear to be there now).&nbsp; That would defeat the purpose of BeagleBox, which is a DIY project.&nbsp; So I&#8217;ll have to rebuild my toolchain to use softfp instead and deal with slower performance until the SGX package is updated to support both softfp and hardfp.<\/p>\n<p>The other problem is the way the kernel modules build is performed by the SGX package.&nbsp; It grabs all other kernel modules to generate a rootfs structure that is complete for modules but incomplete in most other ways.&nbsp; To use this under Buildroot I&#8217;ll have to <\/p>\n<ul>\n<li>Build the kernel and modules via BeagleBox&#8217;s build system<\/li>\n<li>Build SGX<\/li>\n<li>Update the Buildroot build to pull not just the kernel modules and firmware into a buildrot custom package but also the SGX tree.<\/li>\n<\/ul>\n<p>This shouldn&#8217;t be that hard, but its disappointing that I can&#8217;t use hardfp because of closed source PVR libraries in the SGX package.&nbsp; The good news is that if you follow the link in the README.txt to the <a href=\"http:\/\/processors.wiki.ti.com\/index.php\/Graphics_SDK_Quick_installation_and_user_guide\">Graphics SDK User Guide<\/a> you can find a link to requesting the ARM Flash10 binary.&nbsp; That binary can use the OpenGL support for hardware acceleration.&nbsp; So that would be pretty cool, even if I can&#8217;t include it in the build for BeagleBox (users will have to request it manually).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve got BeagleBox booting just fine now and have been hacking my way through various releases of the SGX package in order to get OpenGL support for the board.&nbsp; The latest release, 4_06_00_03, makes it possible to build the required kernel drivers and demo applications fairly easily.&nbsp; But there are caveats. First, the SGX package [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":{"0":"post-912","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-general","7":"czr-hentry"},"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pe9t8-eI","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=912"}],"version-history":[{"count":1,"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/912\/revisions"}],"predecessor-version":[{"id":913,"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/912\/revisions\/913"}],"wp:attachment":[{"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.graphics-muse.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}