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