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