1773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi#include "rs_core.rsh"
2773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi#include "rs_graphics.rsh"
3773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi#include "rs_structs.h"
4773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi
5773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi/**
6773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi* Program Store
7773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi*/
8773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Triviextern rs_depth_func __attribute__((overloadable))
9773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi        rsgProgramStoreGetDepthFunc(rs_program_store ps) {
10773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
11773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi    if (prog == NULL) {
12773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi        return RS_DEPTH_FUNC_INVALID;
13773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi    }
14773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi    return prog->mHal.state.depthFunc;
15773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi}
16773e0429cbb9e85b4f1c6eb5a095ccd7b57f5ba4Jean-Michel Trivi
17a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kastenextern bool __attribute__((overloadable))
18a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten        rsgProgramStoreIsDepthMaskEnabled(rs_program_store ps) {
19a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
2063c002ab68761be0eace98f28320d8eb2f3f7695Jean-Michel Trivi    if (prog == NULL) {
21ea429ee1007c36ade812199ad365c0e659e8053fEric Laurent        return false;
2263c002ab68761be0eace98f28320d8eb2f3f7695Jean-Michel Trivi    }
23a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten    return prog->mHal.state.depthWriteEnable;
243a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten}
253a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten
26faf90312d2156acbf27c62e114fd180708aa7654Glenn Kastenextern bool __attribute__((overloadable))
273a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten        rsgProgramStoreIsColorMaskRedEnabled(rs_program_store ps) {
280b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
290b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    if (prog == NULL) {
300b167267bda99b68346045ccab14e810121d5de4Glenn Kasten        return false;
310b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    }
320b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    return prog->mHal.state.colorRWriteEnable;
330b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
343a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten
353a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kastenextern bool __attribute__((overloadable))
363a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten        rsgProgramStoreIsColorMaskGreenEnabled(rs_program_store ps) {
373a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
383a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten    if (prog == NULL) {
393a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten        return false;
403a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten    }
410b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    return prog->mHal.state.colorGWriteEnable;
424be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi}
430b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
44ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kastenextern bool __attribute__((overloadable))
45faf90312d2156acbf27c62e114fd180708aa7654Glenn Kasten        rsgProgramStoreIsColorMaskBlueEnabled(rs_program_store ps) {
46cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
47cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi    if (prog == NULL) {
48cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi        return false;
49cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi    }
50cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi    return prog->mHal.state.colorBWriteEnable;
51cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi}
52768edbc2a8e7f197548cf1141689dd237d19c455Glenn Kasten
53cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Triviextern bool __attribute__((overloadable))
54cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi        rsgProgramStoreIsColorMaskAlphaEnabled(rs_program_store ps) {
55a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
56a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten    if (prog == NULL) {
57ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        return false;
58ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
59bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    return prog->mHal.state.colorAWriteEnable;
60bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten}
61bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten
62faf90312d2156acbf27c62e114fd180708aa7654Glenn Kastenextern rs_blend_src_func __attribute__((overloadable))
63ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        rsgProgramStoreGetBlendSrcFunc(rs_program_store ps) {
644be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
65bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    if (prog == NULL) {
66cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi        return RS_BLEND_SRC_INVALID;
674be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi    }
68cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi    return prog->mHal.state.blendSrc;
69bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten}
70cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi
714be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Triviextern rs_blend_dst_func __attribute__((overloadable))
724be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi        rsgProgramStoreGetBlendDstFunc(rs_program_store ps) {
73bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
74ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (prog == NULL) {
75ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        return RS_BLEND_DST_INVALID;
76a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten    }
77a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten    return prog->mHal.state.blendDst;
78ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten}
79a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten
80a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kastenextern bool __attribute__((overloadable))
81ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        rsgProgramStoreIsDitherEnabled(rs_program_store ps) {
82ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    ProgramStore_t *prog = (ProgramStore_t *)ps.p;
8322ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten    if (prog == NULL) {
84ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        return false;
85ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
86bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    return prog->mHal.state.ditherEnable;
8722ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten}
8822ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten
89faf90312d2156acbf27c62e114fd180708aa7654Glenn Kasten/**
9022ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten* Program Raster
9122ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten*/
92a3080daa505f91df51a808c85ddb37c48745bf7cGlenn Kastenextern bool __attribute__((overloadable))
93bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        rsgProgramRasterIsPointSpriteEnabled(rs_program_raster pr) {
947e01bc6208fb5b4a2a0019d67bf74373f8ee9428Jean-Michel Trivi    ProgramRaster_t *prog = (ProgramRaster_t *)pr.p;
957e01bc6208fb5b4a2a0019d67bf74373f8ee9428Jean-Michel Trivi    if (prog == NULL) {
9622ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten        return false;
9722ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten    }
9822ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten    return prog->mHal.state.pointSprite;
99a3080daa505f91df51a808c85ddb37c48745bf7cGlenn Kasten}
10022ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kasten
10122ced1dc023dc000118e3a26517b14e9babd7c5aGlenn Kastenextern rs_cull_mode __attribute__((overloadable))
102cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi        rsgProgramRasterGetCullMode(rs_program_raster pr) {
103cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi    ProgramRaster_t *prog = (ProgramRaster_t *)pr.p;
104a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten    if (prog == NULL) {
105a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten        return RS_CULL_INVALID;
106ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
1073a413f1863daa026ed2b9fc9eac01e1341116cdbGlenn Kasten    return prog->mHal.state.cull;
108a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten}
109ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten