diff options
author | Alex Sakhartchouk <alexst@google.com> | 2011-09-23 17:05:04 -0700 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2011-10-15 09:33:05 -0700 |
commit | 7e6aac1533cea87739a6a672be6f87c635e84756 (patch) | |
tree | aa3926cefed6f936b86d78210632d70e8faac634 /libs/rs | |
parent | 708fd1a5f90483153a0ec43c8f5588141acaba0e (diff) | |
download | frameworks_base-7e6aac1533cea87739a6a672be6f87c635e84756.zip frameworks_base-7e6aac1533cea87739a6a672be6f87c635e84756.tar.gz frameworks_base-7e6aac1533cea87739a6a672be6f87c635e84756.tar.bz2 |
Adding getter functions for script side RS objects.
Multiproject change involving on device linker
Change-Id: I321e8caa6ca23b3fe2c96c78cdcfc15e51f88823
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/rsProgramRaster.h | 25 | ||||
-rw-r--r-- | libs/rs/rsProgramStore.h | 35 | ||||
-rw-r--r-- | libs/rs/rsSampler.h | 37 | ||||
-rw-r--r-- | libs/rs/scriptc/rs_graphics.rsh | 194 |
4 files changed, 252 insertions, 39 deletions
diff --git a/libs/rs/rsProgramRaster.h b/libs/rs/rsProgramRaster.h index 20af30a..c552ea3 100644 --- a/libs/rs/rsProgramRaster.h +++ b/libs/rs/rsProgramRaster.h @@ -24,17 +24,16 @@ namespace android { namespace renderscript { class ProgramRasterState; - +/***************************************************************************** + * CAUTION + * + * Any layout changes for this class may require a corresponding change to be + * made to frameworks/compile/libbcc/lib/ScriptCRT/rs_core.c, which contains + * a partial copy of the information below. + * + *****************************************************************************/ class ProgramRaster : public ProgramBase { public: - virtual void setup(const Context *, ProgramRasterState *); - virtual void serialize(OStream *stream) const; - virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_RASTER; } - static ProgramRaster *createFromStream(Context *rsc, IStream *stream); - - static ObjectBaseRef<ProgramRaster> getProgramRaster(Context *rsc, - bool pointSprite, - RsCullMode cull); struct Hal { mutable void *drv; @@ -46,6 +45,14 @@ public: }; Hal mHal; + virtual void setup(const Context *, ProgramRasterState *); + virtual void serialize(OStream *stream) const; + virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_RASTER; } + static ProgramRaster *createFromStream(Context *rsc, IStream *stream); + + static ObjectBaseRef<ProgramRaster> getProgramRaster(Context *rsc, + bool pointSprite, + RsCullMode cull); protected: virtual void preDestroy() const; virtual ~ProgramRaster(); diff --git a/libs/rs/rsProgramStore.h b/libs/rs/rsProgramStore.h index e21f039..9bb2795 100644 --- a/libs/rs/rsProgramStore.h +++ b/libs/rs/rsProgramStore.h @@ -25,23 +25,16 @@ namespace android { namespace renderscript { class ProgramStoreState; - +/***************************************************************************** + * CAUTION + * + * Any layout changes for this class may require a corresponding change to be + * made to frameworks/compile/libbcc/lib/ScriptCRT/rs_core.c, which contains + * a partial copy of the information below. + * + *****************************************************************************/ class ProgramStore : public ProgramBase { public: - virtual void setup(const Context *, ProgramStoreState *); - - virtual void serialize(OStream *stream) const; - virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_STORE; } - static ProgramStore *createFromStream(Context *rsc, IStream *stream); - static ObjectBaseRef<ProgramStore> getProgramStore(Context *, - bool colorMaskR, bool colorMaskG, - bool colorMaskB, bool colorMaskA, - bool depthMask, bool ditherEnable, - RsBlendSrcFunc srcFunc, RsBlendDstFunc destFunc, - RsDepthFunc depthFunc); - - void init(); - struct Hal { mutable void *drv; @@ -64,6 +57,18 @@ public: }; Hal mHal; + virtual void setup(const Context *, ProgramStoreState *); + + virtual void serialize(OStream *stream) const; + virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_STORE; } + static ProgramStore *createFromStream(Context *rsc, IStream *stream); + static ObjectBaseRef<ProgramStore> getProgramStore(Context *, + bool colorMaskR, bool colorMaskG, + bool colorMaskB, bool colorMaskA, + bool depthMask, bool ditherEnable, + RsBlendSrcFunc srcFunc, RsBlendDstFunc destFunc, + RsDepthFunc depthFunc); + void init(); protected: virtual void preDestroy() const; virtual ~ProgramStore(); diff --git a/libs/rs/rsSampler.h b/libs/rs/rsSampler.h index e698132..654cd9c 100644 --- a/libs/rs/rsSampler.h +++ b/libs/rs/rsSampler.h @@ -27,23 +27,16 @@ namespace renderscript { const static uint32_t RS_MAX_SAMPLER_SLOT = 16; class SamplerState; - +/***************************************************************************** + * CAUTION + * + * Any layout changes for this class may require a corresponding change to be + * made to frameworks/compile/libbcc/lib/ScriptCRT/rs_core.c, which contains + * a partial copy of the information below. + * + *****************************************************************************/ class Sampler : public ObjectBase { public: - static ObjectBaseRef<Sampler> getSampler(Context *, - RsSamplerValue magFilter, - RsSamplerValue minFilter, - RsSamplerValue wrapS, - RsSamplerValue wrapT, - RsSamplerValue wrapR, - float aniso = 1.0f); - void bindToContext(SamplerState *, uint32_t slot); - void unbindFromContext(SamplerState *); - - virtual void serialize(OStream *stream) const; - virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_SAMPLER; } - static Sampler *createFromStream(Context *rsc, IStream *stream); - struct Hal { mutable void *drv; @@ -59,6 +52,20 @@ public: }; Hal mHal; + static ObjectBaseRef<Sampler> getSampler(Context *, + RsSamplerValue magFilter, + RsSamplerValue minFilter, + RsSamplerValue wrapS, + RsSamplerValue wrapT, + RsSamplerValue wrapR, + float aniso = 1.0f); + void bindToContext(SamplerState *, uint32_t slot); + void unbindFromContext(SamplerState *); + + virtual void serialize(OStream *stream) const; + virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_SAMPLER; } + static Sampler *createFromStream(Context *rsc, IStream *stream); + protected: int32_t mBoundSlot; diff --git a/libs/rs/scriptc/rs_graphics.rsh b/libs/rs/scriptc/rs_graphics.rsh index 3e9339e..80267c7 100644 --- a/libs/rs/scriptc/rs_graphics.rsh +++ b/libs/rs/scriptc/rs_graphics.rsh @@ -23,6 +23,55 @@ #ifndef __RS_GRAPHICS_RSH__ #define __RS_GRAPHICS_RSH__ +// These are API 15 once it get official +typedef enum { + RS_DEPTH_FUNC_ALWAYS, + RS_DEPTH_FUNC_LESS, + RS_DEPTH_FUNC_LEQUAL, + RS_DEPTH_FUNC_GREATER, + RS_DEPTH_FUNC_GEQUAL, + RS_DEPTH_FUNC_EQUAL, + RS_DEPTH_FUNC_NOTEQUAL +} rs_depth_func; + +typedef enum { + RS_BLEND_SRC_ZERO, // 0 + RS_BLEND_SRC_ONE, // 1 + RS_BLEND_SRC_DST_COLOR, // 2 + RS_BLEND_SRC_ONE_MINUS_DST_COLOR, // 3 + RS_BLEND_SRC_SRC_ALPHA, // 4 + RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA, // 5 + RS_BLEND_SRC_DST_ALPHA, // 6 + RS_BLEND_SRC_ONE_MINUS_DST_ALPHA, // 7 + RS_BLEND_SRC_SRC_ALPHA_SATURATE // 8 +} rs_blend_src_func; + +typedef enum { + RS_BLEND_DST_ZERO, // 0 + RS_BLEND_DST_ONE, // 1 + RS_BLEND_DST_SRC_COLOR, // 2 + RS_BLEND_DST_ONE_MINUS_SRC_COLOR, // 3 + RS_BLEND_DST_SRC_ALPHA, // 4 + RS_BLEND_DST_ONE_MINUS_SRC_ALPHA, // 5 + RS_BLEND_DST_DST_ALPHA, // 6 + RS_BLEND_DST_ONE_MINUS_DST_ALPHA // 7 +} rs_blend_dst_func; + +typedef enum { + RS_CULL_BACK, + RS_CULL_FRONT, + RS_CULL_NONE +} rs_cull_mode; + +typedef enum { + RS_SAMPLER_NEAREST, + RS_SAMPLER_LINEAR, + RS_SAMPLER_LINEAR_MIP_LINEAR, + RS_SAMPLER_WRAP, + RS_SAMPLER_CLAMP, + RS_SAMPLER_LINEAR_MIP_NEAREST, +} rs_sampler_value; + #if (defined(RS_VERSION) && (RS_VERSION >= 14)) /** * Set the color target used for all subsequent rendering calls @@ -83,6 +132,88 @@ extern void __attribute__((overloadable)) extern void __attribute__((overloadable)) rsgBindProgramStore(rs_program_store ps); + +/** + * @hide + * Get program store depth function + * + * @param ps + */ +extern rs_depth_func __attribute__((overloadable)) + rsgProgramStoreGetDepthFunc(rs_program_store ps); + +/** + * @hide + * Get program store depth mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetDepthMask(rs_program_store ps); +/** + * @hide + * Get program store red component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskR(rs_program_store ps); + +/** + * @hide + * Get program store green component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskG(rs_program_store ps); + +/** + * @hide + * Get program store blur component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskB(rs_program_store ps); + +/** + * @hide + * Get program store alpha component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskA(rs_program_store ps); + +/** + * @hide + * Get program store blend source function + * + * @param ps + */ +extern rs_blend_src_func __attribute__((overloadable)) + rsgProgramStoreGetBlendSrcFunc(rs_program_store ps); + +/** + * @hide + * Get program store blend destination function + * + * @param ps + */ +extern rs_blend_dst_func __attribute__((overloadable)) + rsgProgramStoreGetBlendDstFunc(rs_program_store ps); + +/** + * @hide + * Get program store dither state + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetDitherEnabled(rs_program_store ps); + + /** * Bind a new ProgramVertex to the rendering context. * @@ -100,6 +231,24 @@ extern void __attribute__((overloadable)) rsgBindProgramRaster(rs_program_raster pr); /** + * @hide + * Get program raster point sprite state + * + * @param pr + */ +extern bool __attribute__((overloadable)) + rsgProgramRasterGetPointSpriteEnabled(rs_program_raster pr); + +/** + * @hide + * Get program raster cull mode + * + * @param pr + */ +extern rs_cull_mode __attribute__((overloadable)) + rsgProgramRasterGetCullMode(rs_program_raster pr); + +/** * Bind a new Sampler object to a ProgramFragment. The sampler will * operate on the texture bound at the matching slot. * @@ -109,6 +258,51 @@ extern void __attribute__((overloadable)) rsgBindSampler(rs_program_fragment, uint slot, rs_sampler); /** + * @hide + * Get sampler minification value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetMinification(rs_sampler s); + +/** + * @hide + * Get sampler magnification value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetMagnification(rs_sampler s); + +/** + * @hide + * Get sampler wrap S value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetWrapS(rs_sampler s); + +/** + * @hide + * Get sampler wrap T value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetWrapT(rs_sampler s); + +/** + * @hide + * Get sampler anisotropy + * + * @param pr + */ +extern float __attribute__((overloadable)) + rsgSamplerGetAnisotropy(rs_sampler s); + +/** * Bind a new Allocation object to a ProgramFragment. The * Allocation must be a valid texture for the Program. The sampling * of the texture will be controled by the Sampler bound at the |