rsProgramRaster.h revision 7f126c78a107257090c6675ea40ffac41516a9dc
15fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams/* 27f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchouk * Copyright (C) 2009-2011 The Android Open Source Project 35fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * 45fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 55fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * you may not use this file except in compliance with the License. 65fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * You may obtain a copy of the License at 75fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * 85fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * http://www.apache.org/licenses/LICENSE-2.0 95fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * 105fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * Unless required by applicable law or agreed to in writing, software 115fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 125fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * See the License for the specific language governing permissions and 145fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams * limitations under the License. 155fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams */ 165fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 175fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams#ifndef ANDROID_RS_PROGRAM_RASTER_H 185fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams#define ANDROID_RS_PROGRAM_RASTER_H 195fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 207f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchouk#include "rsProgramBase.h" 215fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 225fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams// --------------------------------------------------------------------------- 235fd09d847586f9680b4f495413b6ca5fbb69af6eJason Samsnamespace android { 245fd09d847586f9680b4f495413b6ca5fbb69af6eJason Samsnamespace renderscript { 255fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 265fd09d847586f9680b4f495413b6ca5fbb69af6eJason Samsclass ProgramRasterState; 275fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 287f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchoukclass ProgramRaster : public ProgramBase { 295fd09d847586f9680b4f495413b6ca5fbb69af6eJason Samspublic: 30e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams ProgramRaster(Context *rsc, 315fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams bool pointSmooth, 325fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams bool lineSmooth, 33721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool pointSprite, 34721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams float lineWidth, 35721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams RsCullMode cull); 365fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams virtual ~ProgramRaster(); 375fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 38721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams virtual void setup(const Context *, ProgramRasterState *); 39fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk virtual void serialize(OStream *stream) const; 40b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_RASTER; } 41fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk static ProgramRaster *createFromStream(Context *rsc, IStream *stream); 425fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 43721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams struct Hal { 44721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams mutable void *drv; 45721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams 46721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams struct State { 47721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool pointSmooth; 48721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool lineSmooth; 49721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool pointSprite; 50721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams float lineWidth; 51721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams RsCullMode cull; 52721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams }; 53721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams State state; 54721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams }; 55721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams Hal mHal; 565fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 575fd09d847586f9680b4f495413b6ca5fbb69af6eJason Samsprotected: 585fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams}; 595fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 60afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass ProgramRasterState { 615fd09d847586f9680b4f495413b6ca5fbb69af6eJason Samspublic: 625fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams ProgramRasterState(); 635fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams ~ProgramRasterState(); 64771565f47fc44608444c00aa8fa3bda769ceaeceJason Sams void init(Context *rsc); 65f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams void deinit(Context *rsc); 665fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 675fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams ObjectBaseRef<ProgramRaster> mDefault; 685fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams ObjectBaseRef<ProgramRaster> mLast; 695fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams}; 705fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 715fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 725fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams} 735fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams} 745fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams#endif 755fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 765fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 775fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 785fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 79