RenderScript on LLVM笔记

向Android Studio中导入项目后,运行时出现Cause: llvm-rs-cc is missing错误 向Android Studio中导入项目后,在编译Gradle的时候,出现了Cause: llvm-rs-cc is missing错误,网上对此没找到合理的解决方案,我就只好自己钻研了。于是我拿我新建的Android项目和我外部导入的项目来对比gradle文件,果然,我真是个小幸运,居然一击就中,吼吼吼好开森 一、打开导入的项目根目录下中的build.gradle文件: 内容如下所示: // T... 阅读详情

Android 为何引入 Render Script:

   3D 可移植  ( 直接用 opengl 也可以移植呀?)

   性能

   易用性 ( 让 opengl 难入门的人,用 Render Script ?)

Render Script 使用类似 C99 语法  + 一些扩展

目前使用 Render Script的  APP ( BOOKS, YouTube 等) 

Render Script 包含的构件

llvm-rs-cc: 

   1) 把 RS 编译为  bitcode 

   2) 同时生成 调用 RS的 Java Layer  层代码


========= 背景知识 =========

对于一个 helloworld 程序

#include <stdio.h>

int main() {
  printf("hello world\n");
  return 0;
}


可以用 Clang 直接编译,并运行

% clang hello.c -o hello

也可以生成  bitcode

% clang -O3 -emit-llvm hello.c -c -o hello.bc
而后用 lli 来解析运行

% lli hello.bc
可以用bitcode反编译为 llvm 的中间汇编代码

% llvm-dis < hello.bc | less

可以把 bitcode 用 llc 编译为 native的汇编

% llc hello.bc -o hello.s
再用 gcc 编译为 可执行文件

% gcc hello.s -o hello.native 
==================

这里针对的是 C语言,而 RS 是一种类C语言,它通过改写 Clang扩展其语法


libbcc

   libcc  llvm-rs-cc 的生成的全部代码都再次使用 JIT生成 machine code (CPU/GPU/DSP) 

   RS编译得到的 bc 通过 libcc 生成 machine code

   而调用 RC 的 Java代码也通过 Dalvik的 JIT生成 Native code



libRS ( runtime support)

    1) 在 Dalvik Layer  管理  Script

     2)  加入支持库 math funcs


总结:

   Render Script 提供了一种 3D语言,并且编译平台无关中间代码,节约了APP Launch的时间

   Render Script 有学习的代价,但学会应该比用 opengl简单

   Render Script 可能还不够成熟

   单就GPU, 直接使用 opengl ( 包括 Shader Language) 应该还是足够快的

   Opengl 比较复杂,最好使用已经包装 opengl的引擎


参考:

http://llvm.org/docs/GettingStarted.html

https://events.linuxfoundation.org/slides/2011/lfcs/lfcs2011_llvm_liao.pdf

http://llvm.org/docs/BitCodeFormat.html

Clang:LLVM 的 C 语言家族前端 Clang:LLVM 的 C 语言家族前端 Clang 项目为LLVM 项目的 C 语言家族(C、C++、Objective C/C++、OpenCL、CUDA 和 RenderScript)中,提供了语言前端和工具基础结构。提供了 GCC 兼容的编译器驱动程序 ( clang ) 和 MSVC 兼容的编译器驱动程序 ( clang-cl.exe )。可以立即获取并构建源代码。 特点和目标 该项目的一些目标包括: 最终用户特点: • 快速编译和低内存使用 • 表情诊断(示例) • GCC兼容性 实用程序和应 阅读详情

相关推荐

RetDec是基于LLVM的可重定位机器代码反编译器。-C/C++开发

RetDec RetDec是基于LLVM的可重定位机器代码反编译器。 反编译器不限于任何特定的目标体系结构,操作系统或可执行文件格式:支持的文件格式:ELF,PE,Mac RetDec RetDec是基于LLVM的可重定位的机器代码反编译器。 反编译器不限于任何特定的目标体系结构,操作系统或可执行文件格式:支持的文件格式:ELF,PE,Mach-O,COFF,AR(存档),Intel HEX和原始机器代码支持的体系结构:32-位:Intel x86,ARM,MIPS,PIC32和PowerPC 64位:x86-64,ARM64(AArch64)功能:对可执行文件进行静态分析,并提供详细信息。 编译器和打包程序检测。 加载

llvm编译器实战教程第二版_LLVM编译技术及.pdf

LLVM编译技术及.pdfLLVM编译技术及其ARM生态系统简介Jiangning LiuPrinciple Software EngineerARM11Agenda LLVM编译器技术的模块和架构 Clang/LLVM与GCC编译器比较 与LLVM有关的ARM生态系统 Q&A22LLVM 简介 Building block of compiler technology / ...

weixin_35742845的博客 5575

LLVM指南(LLVM Cookbook)-2015年英文原版,0积分

LLVM指南(LLVM Cookbook)-2015年英文原版,0积分—— 学习编译器的书籍。

解决 Android Studio报 llvm-rs-cc is missing 错误的 另一种解决方案

解决 Android Studio报 llvm-rs-cc is missing 错误的 另一种解决方案 长话短说: 我下载了 sdk tools的windows版的zip包(因为当前系统是Windows),然后把包根目录下的所有*.exe和 所有*.dll文件拷贝到我的 sdk tools 目录里后 重启Android Studio 后解决了 这样做的原因: 这是我第一次遇到报llvm-rs-c...

nrxsh 2183

LLVM cookbook

LLVM Cookbook pdf

LLVM Cookbook

LLVM

android renderscript

API Level 17上运行renderscript  hellocumpter,出现ScriptC_mono未定义类。 主要原因是: mono.rs 需要借助llvm-rs-cc.exe来自动生成ScriptC_mono.java(位于gen目录下)文件,但是在导入工程的时候,mono.rs找不到llvm-rs-cc.exe文件,所以没有办法生成ScriptC_mono.java。

fr_han的专栏 2711

编译器安全加固:控制流完整性在LLVM中的C语言实现.pdf

文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 C 语言,作为编程界的常青树,凭借高效性能与底层操控能力,成为系统软件、嵌入式开发的核心语言。其简洁语法与强大扩展性,不仅是程序员入门的不二之选,更为操作系统、游戏引擎等奠定技术基石,历经数十年依然在计算机技术领域占据不可撼动的地位。

Android RenderScript 学习笔记

RenderScript是Android平台的一种类C脚本语言,Google虽然一直在之前的各个Android版本内置的动态墙纸中使用该技术实现3D图形特效,但一直未将其集成在公开发布的SDK中。至Android3.0版本开始,SDK中已将RenderScript技术集成了进来,开发者可在Eclipse下开发基于RenderScript的3D应用,并在Android3.0版本以上的平板电脑中运行。

droidpioneer的IT专栏 1万+

从零构建Fortran编译器:LLVM前端开发全解析.pdf

文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Fortran,作为历史最悠久的高级编程语言,凭借卓越的数值计算能力与高性能并行处理特性,持续统治科学计算、工程模拟、气象预测等领域。其专为数学表达式设计的语法与不断演进的标准(Fortran 2023),让科学家与工程师能高效处理复杂算法,从量子物理研究到超级计算机应用,Fortran 始终是计算科学的基石语言。

C语言编译器开发入门:LLVM前端实现与自定义语法扩展.pdf

文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 C 语言,作为编程界的常青树,凭借高效性能与底层操控能力,成为系统软件、嵌入式开发的核心语言。其简洁语法与强大扩展性,不仅是程序员入门的不二之选,更为操作系统、游戏引擎等奠定技术基石,历经数十年依然在计算机技术领域占据不可撼动的地位。

llvm 初探

gcc/g++ 如此成熟,本来以为可能下个20年我们还是用它,但最近看 llvm 似乎大有取代gcc 和 g++ 的架势 1)Apple 编程已经把 llvm 提供developer 使用  2)  开源 3D 架构,Mesa3D 可以使用 llvm 引擎 (当没有 GPU时, Mesa 解释 glsl并执行,速度慢,如果使用 LLVM JIT, 速度大大提升)  3)某些云平台,引

span76的专栏 1821

QTableView实现表格加载百万条数据

本文介绍用QTableView实现加载100万条数据显示到表格。 1.创建工程 用Qt Creator创建Qt Widgets Application项目,基类选择QWidget,创建好了,如图: 2.添加QTableView控件 在widget.ui中添加QTableView控件,和QPushButton,采用栅格布局,如图: 3.添加函数 头文件 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Wid

丁爸的博客 8269

android renderscript 初探

对RenderScript起了兴趣,因为对这块知识没有涉猎,在网上找了些资料,自己跟着写了个demo,供大家学习,网上已经有的资料我就不再重复粘贴,我会给出链接。 什么是RenderScript 网上有对Android官网上的关于RenderScript的介绍: 这里有一篇已经翻译好的文章:Android RenderScript入门 Android官网关于RenderScript的介绍Ren

dengfuma的专栏 1407

FastAPI + React:现代 Web 前后端分离开发的全栈实践指南

• 部署:CI/CD 双流水线,前端 push → GitHub Actions → Cloudflare Pages;• 后端:分层结构 routers → services → repositories → models,单测覆盖率 90 %。• 接口缓存:Redis + FastAPI Depends 实现接口级缓存,读 QPS 提升至 5 k。• 前端:BFF 由 React Query 代理,统一缓存、重试、分页。GET /items/{id} 详情。,前端同学无需等 Mock 即可联调。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1490

GlobalPlatform Technology Secure Channel Protocol ‘03‘ 标准 - 安全通道协议简介

按照GlobalPlatform Technology Secure Channel Protocol '03' (SCP03)标准,描述了如何利用S-MAC,S-RMAC,S-ENC进行安全通信的过程。

mmmx777的专栏 6091

RenderScript

9.1 Overview 概览 9.2 Hellow World 9.3 Hellow Rendering 9.4 Adding Variables to Script 脚本中添加变量 9.5 HelloCompute 9.6 Native RenderScript APIs 9.7 RenderScript vs. NDK...

weixin_34146410的博客 270

Sipeed麦克风阵列板练习

麦克风阵列板 Maix Dock Sipeed

sunshinebigbig的博客 3831

如何写RenderScript应用

简介 RenderScript本质是封装了Native OpenGL2.0接口,使界面渲染不需要通过Android虚拟机,从而达到近似Native OpenGL的渲染效率。除此之外,RenderScript名为“Script”,是一种脚本语言。这表明了它比Native OpenGL拥有更好的可移植性,能在不同处理器和GPU上运行。为了做到这一点,其实是有一个叫做Low LevelVirtual

weixin_39421817的博客 638

如何手动打包Linux(麒麟系统)的Qt程序

Qt在windows上有自带的windeployqt来帮助打包程序,但是对于linux系统来说Qt并没有自带对应的打包程序。尽管存在开源的linuxdeployqt打包程序,但是在使用的过程中会出现很多问题,对于arm架构的系统来说需要编译并修改源码等等。确定你程序所需要的插件,然后将你使用的Qt版本对应的插件复制到plugins里边。你可以根据各个库后面的路径来找到对应的库,并将它们全部复制到之前创建的lib目录下。复制你的可执行程序到bin目录下(将 your_executable。

qq_45903233的博客 3604

STM32 FDCAN热插拔恢复机制与自动重发功能优化

本文深入分析了STM32 FDCAN在热插拔场景下触发bus-off状态导致通讯中断的根本原因,指出自动重发功能是问题关键。通过禁用自动重发、配置硬件自动恢复机制及优化总线参数,实现了FDCAN热插拔后的100%稳定恢复,为工业应用提供了可靠的CAN总线解决方案。

ice55的博客 685

初窥图像处理利器RenderScript

1.RenderScript 简介 RenderScript是Android平台的一种类C的高性能编程语言,用于3D渲染和处理密集型计算。一直以来Android在绘图性能的表现一直差强人意,引入NDK之后才有所改善,而在Honeycomb中发布了RenderScript这一杀手锏,大大的增加了Android本地语言的执行能力和计算能力。 1.1移植性 虽然RenderS

ZHOUYONGXYZ的专栏 3494

Mask2Former实战:用SwinTransformer+Deformable Attention搞定图像分割三大任务

本文实战解析了Mask2Former模型如何统一解决语义、实例和全景分割三大任务。通过集成Swin Transformer骨干网络与创新的Deformable Attention及Masked Attention机制,详细介绍了模型构建、训练策略及在COCO数据集上的性能表现,为开发者提供了高效的图像分割解决方案。

tech5的博客 245
上一篇: llvm 初探
下一篇: Object C 自动引用计数ARC 学习笔记
span76
博客等级 码龄18年 117粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值